I have a bit of a conundrum trying to implement a few sets of cascaded biquads. I have tried out the IIR accelerator, using 4 audio input channels and 8 output channels and chaining the lot, which worked well. I want to make my system configurable though, so that I can switch biquads in and out of channels and channels in and out of the chain.
I have not yet tried switching biquads in and out of a specific TCB on the fly, but I am thinking this can be done by updating the coefficients buffer and the coefficient buffer length register CC/CL.
The tricky part, as I see it, is switching TCBs in and out of a chain. I suppose it could be possible to come up with an algorithm to determine what the next TCB chain pointer is based on an arbitrary configuration and update the chain pointer register of a TCB, but maybe I am missing a simpler solution. I was thinking, maybe I could configure 12 TCBs without chaining and trigger a one-shot for each channel, or bypass the accelerator for that channel if the filtering is disabled. With this approach, I'm not sure how easy/difficult this would be in terms of triggering 12 separate shots of IIR accelerator (if that's even possible?).
One other question; the IIR accelerator supports up to 24 channels. My understanding of this is that you can have up to 24 TCBs. Is it possible to cascade TCBs so that you could apply more than one TCB to a specific channel? The objective would be to increase the number of biquads on a specific channel.