implement the equivilent of an audio equalizer in DSP

I need to do some equalization of a signal ranging from 5kHz - 200kHz. I'd like to setup a dsp to sample the signal and run it through a filter that will attenuate and or amplify frequencies in a a particular band. 9 bands would be fine.

The only way I can currently think of doing seems a bit heavy handed by running the signal through 9 bandpass FIR filters each with with independant gain, then sum them all together.

What would be a better way of doing this?

Reply to
mook johnson
Loading thread data ...

For 200kHz of BW, you will probably need sample rate of 500kHz or higher. That should make for computing load at the order of 50..100 MIPS.

Design one IIR filter which does all processing at once. There is approximately a zillion of different methods for that depending how much of resources is available and how accurate the equalization should be.

Vladimir Vassilevsky DSP and Mixed Signal Design Consultant

formatting link

Reply to
Vladimir Vassilevsky

Do you have some pointers to infomration on how to do that with an IIR filter?

Reply to
mook johnson

There should be an appnote on TI web site on designing the audio equalizer to arbitrary frequency response by tweaking of IIR parametric EQ stages; I don't have URL at hand. Basically, they are trying to zero out maximum deviation of the response from the desired curve. The process converges pretty well just in one pass; you can add more passes for better accuracy if necessary.

VLV

Reply to
Vladimir Vassilevsky

You might have a look at Analog Devices SigmaStudio free software.

The software targets some of AD DSP only (of course)

formatting link

formatting link

Main AD Sigmastudio Page

formatting link

Joe

Reply to
Joe G (Home)

I don't know if summing works (at least you have to design all filters to be linear phase filters), but if it works, you can merge the 9 filters for higher calculation speed. Assuming you have 2 FIR filters, one with coefficients c1, c2 and c3 and one with d1, d2 and d3 and the samples are x1, x2 and x3:

c1*x1+c2*x2+c3*x3 + d1*x1+d2*x2+d3*x3

then you can simplify it:

(c1+d1)*x1 + (c2+d2)*x2 + (c3+d3)*x3

You can multiply it with different gains, too.

But maybe the IIR idea from Vladimir is better, if the IIR filter phase shift doesn't matter for your application, because for FIR filters you'll need more computing power and for 500 kHz sampling rate this can be expensive.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

=A0I'd

at

bands

ndant

r

tems.de

Your FIR scheme is pretty clever. You could probably crank out a bandpass for each band using the remez exchange algorithm. You would need coefficients for varying gain in each band, so the front end design work would be a bit time consuming though not particularly difficult.

FIR designs are more forgiving in terms of overflow issues, plus are immune to limit cycles.

Reply to
miso

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.