What filter is better to use for big PEQs?
Hi,
My question is similiar to: https://ez.analog.com/dsp/sigmadsp/f/q-a/64602/what-is-the-best-way-to-make-a-typical-10-band-eq
I have a lot of different blocks for 2 inputs + 8 outputs. And I want to make 10 PEQs respectively with 20+ filters => 200+ filters total. 1467 is controlled by STM.
So I tried:
Double Precision No Slew Parametric EQ
Single Precision No Slew General Eq with section grow
Lookup Single Precision ISF
First two were to heavy, so I tried ISF, because I thought that it is configured by index, but signal is processed by all filters. But in reality it turned out that it wasn't so... Maybe I was doing something wrong.
So my question is what filter would be the least heavy, so I can use a lot of it, or maybe there is an algorithm that optimizes filter processing.
If you need any clarification on the matter, please ask.
Audio Signal Processors
ISF
software
sigmaStudio 4.7
adau1467
PEQ
equalizer
SigmaDSP Audio Processors
parametric
iir
Show More
Hello Richardarmy,
All IIR filters will take the same instructions even if you are using it in single 10 band PEQ block or single general Eq block with 10 sections grown.
A few instructions count may differ between slew and non-slew filters, single and double precision filters.
Below is an example,
where I used a DP PEQ filter with 10 bands, I cascaded two filters, so it's 20 IIR filters and I used a DP general Eq filter with 10 filter section grown, I cascaded two of them, so 20 filters here too. Look at the compiler output window, both utilizes same resources.
Another example below, I replaced the DP general Eq section with single precision, you can now see the DP PEQ section uses a little more resource than the SP general Eq section.
So, growing filters make use of SIMD architecture and uses fewer instructions. This is how you can save MIPS.
All IIR filters in the library (PEQ, general filter, Mid Eq etc.) will take same instructions and memory for the same kind, i.e. if you are comparing single precision with single precision, double with double, slew with slew, non-slew with non-slew.
For ISF filters, if you are setting this block with 10 filters, it will utilize 10 filter's resource and only one filter will be applied to the input signal at a time, that's based on the index value you send to the control pin.
Richardmy said:
So I tried:
Double Precision No Slew Parametric EQ
Single Precision No Slew General Eq with section grow
Lookup Single Precision ISF
so, your first and second options will be the same (if it's same kind). However, the PEQ gives you more control in GUI where you can see and adjust all filters in one window (max 15 filters allowed per PEQ block).
Richardmy said:
So my question is what filter would be the least heavy,
So, basically no filter is least heavy unless you compare first order with higher order.
All 2nd order IIR filters are just the same if it's same kind. The difference in instruction counts between SP and DP, slew and non-slew can be seen in the output window.
Keep in mind that by growing the filters, you can take advantage of the SIMD architecture which will save resources.
To optimize and save resource, grow the filters and see the change in the compiler output window.
Please let me know if I misunderstood your question.
Regards,
Harish
Yes, that's what I needed. Thank you a lot for your detailed answer.
Please log in to reply.

