ΣSigmaStudio Ask AI Русский Log in

What filter is better to use for big PEQs?

SigmaDSP & SigmaStudio Richardmy May 29, 2025 00:00 2 replies Original on forum ↗
Subscribe
Richardmy Question
May 29, 2025 00:00

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

Harishgowtham Reply
May 29, 2025 00:00

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

pastedimage1748522127967v2.png
pastedimage1748522127967v2.png
pastedimage1748522221285v3.png
pastedimage1748522221285v3.png
Richardmy Reply
May 30, 2025 00:00

Yes, that's what I needed. Thank you a lot for your detailed answer.