Forgive me if I’m missing the point or if this comment is silly or unproductive…
I know there was some mention at some point about Biquad filters, but I’m not finding that in the linked thread, so I don’t really know what else was said or by who about it, but
Whyquad? (sorry, not sorry )
- Stability/Quantization Error Accumulation: Higher-order filters are generally more complex, involving more coefficients in a more complicated structure. This complexity can lead to potential stability issues, especially in higher frequencies or when the filter specifications are stringent. Biquads are simpler and inherently more stable when designed correctly, plus the poles and zeros of each section are decoupled. Higher order filters continually accumulate quantization error in coefficient calculation over a long feedback path.
- Computational Efficiency: Implementing a single higher-order filter I believe is more computationally intensive due to the larger number of heavy operations required per sample, whereas cascading biquad filters divides the overall task into smaller, more manageable chunks. Again, I’m not certain about this, but I would be inclined to think that this could be handled rather elegantly with SIMD.
- Frequency Response: My experience has been that it’s more difficult to get the intended frequency response from a higher order filter without oscillation/overshoot/instability/noise.
- Phase Response: Higher-order filters can introduce significant phase distortion. Biquad cascades also introducing phase shifts, but can be configured (e.g., using Linkwitz-Riley) to maintain a more coherent phase response across the cascade.
- Modularity/Flexibility: You can add/remove stages in a biquad cascade, but you have to redesign a higher order filter to achieve the same result.
I also can’t help thinking that this is exactly what FOS and SOS are for…
Why not make a pseudo ugen wrapper for these? Or better still, why not instantiate them as individual synths? That’s what the biquad filter suite does (the B prefix ugens). I think you could actually still just make this an SC wrapper that manages an arbitrary number of FOS/SOS Synths.