0
$\begingroup$

I'm trying to design a MATLAB audio player that includes something like a 31-band equalizer. Right now I have the filters working by using the FIR1() function to create an FIR bandpass filter at each frequency specified on the bands. This is great except that it's not exactly what I'm wanting to do. I want to either boost or cut the desired frequency, not isolate the frequency.

How would I go about using these FIR filters in parallel to boost or cut the signal instead of just isolating the signal?

$\endgroup$
2
$\begingroup$

I would suggest the peakingEQ biquad filter by Robert Bristow-Johnson, you can use it to increase or attenuate one frequency or band-frequency, this can be easy to implement in matlab, I used to test and compare some filters, and it seems to work very well to equalizer, you can choose one dB input to do the work !

$\endgroup$
0
$\begingroup$

Best choice for a graphical EQ are the aforementioned biquad filters in cascade NOT in parallel.

Parallel bandpass filter create lots of interference at the band edges and a very non uniform group delay even in the "flat" setting. There is no way to implement a flat transfer function with parallel band passes. The cascaded are perfectly flat in both amplitude and phase when the gain of every stage is 0 dB. It's also computationally a lot more efficient.

$\endgroup$
  • 1
    $\begingroup$ I will have to disagree. The parallel bandpass does not need to have interference (amplitude and phase) for the neutral setting. One of the parallel branches can be a gain. See the reference I mentioned here: dsp.stackexchange.com/questions/9341/… $\endgroup$ – niaren Dec 4 '13 at 22:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.