I'm doing an multichannel audio equalizer system on a chip, which is parametric EQ, usually implemented in cascaded biquad IIR filters.
My problem is that I use a lot of IIR filters due to multiple frequency bands (such as 10 bands), and I'm wondering if I should truncate the impulse response of IIR filters as an FIR and use FFT-based fast convolution for speed.
Let's say if I need $L$ bands equalizer. So EQ filters are $2L$-th order IIR filters for each channel. We know that an IIR filter of order $K$ roughly requires $2K+1$ multiply-accumulate (or MAC) instructions per sample. So I totally need $4L+1$ MACs per sample and specifically $41$ MACs per sample for 10 bands.
Now if I use the truncated IIR of each channel as an FIR filter of a length $N$, and let the signal frame length equal to $N$. By Applying the overlap-save method to calculate the linear convolution, we take an FFT of length $B=2N$, do complex multiplications for $N+1$ FFT bins, and then take an IFFT of length $B$. Assume that a $B$-point FFT has a complexity of $\frac{1}{2}B\log_2B$, the total complexity of each channel is around $$ \frac{1}{N}\left[\frac{1}{2}B\log_2B + 4(N+1) + \frac{1}{2}B\log_2B\right] = 2\log_22N + 4 + \frac{4}{N} $$ for most popular frame size it is smaller than $41$, indicating that FFT-based FIR filtering is more efficient if the order of IIR filter is higher than a specific threshold.
I understand there is a precondition that the FIR should have a similar frequency response as the IIR. Low frequency usually needs a longer FIR, but in my case there is an active crossover network so I will decimate the low frequency channel and equalize it at a lower sample rate. For the other channels above 300 Hz, I think 1024 or 512 tap is enough to approximate an IIR filter.
I think that testing on the target chip is the ultimate way to check which one is faster, but I still want to verify it theoretically. I'm not sure if I'm on the correct way. Any suggestions will be welcome.