My inquiry isn’t directly about JUCE but about dsp in general. In my experience programming with filters, getting narrow passbands requires an adequately large sample size. If you only process 32 samples, for instance, it’s mathematically impossible to get an extremely narrow passband even if the filter coefficients are set up for that.

I did a little experimenting with FabFilter Pro-Q on zero latency mode comparing a sharp Q factor and a wide Q factor. Even with realtime audio coming from a microphone, the latency for both Q factors is the same. The outgoing signal is delayed by the buffer size, in my case, 32 samples. Since I tested this in realtime, FabFilter clearly couldn’t pull any shenanigans with offsetting the signal to compensate for a larger delay. So clearly the plugin is perfectly capable of processing extremely narrow passbands on tiny sample sizes.

So my current understanding of filters must be wrong. Apparently it is not mathematically impossible to achieve this. I’ve spent a lot of time familiarizing myself with the math underlying filters and I really have no clue how this is done. I’ve always thought the increase in sample size was unavoidable. Would somebody be able to enlighten me as to where my understanding is off?

Thanks!