Applying a variable notch filter to an audio signal
4 views (last 30 days)
Show older comments
Hello,
I have a signal, divided to frames, and for each frame I wish to apply a different notch filter. each notch filter is of multiple frequencies. My goal is to remove positive feedback frequencies, so the output signal should sound almost the same.
I've tried two methods for filtering so far. One is to create a single-frequency notch filter using Matlab's iirnotch for each frequency (every frame), and convolve the numerators and denominators to obtain the complete notch filter for the frame. The other is to filter the frame repeatedly, each time with a different notch filter, according to the frequencies to be removed. at that point, the output signal did sound better, the notch filters did their job, but the filtered regions presented a rattle noise.
I've tried to solve this problem by using filtic. It only caused worse beeping sounds in the filtered regions of the signal. In an attempt to avoid using filtic, I've tried using the DSP system toolbox and the method described here: http://www.mathworks.com/help/toolbox/dsp/ref/dsp.digitalfilterclass.html. It caused the same violent beeps.
How can I get the signal to be filtered smoothly? I've been trying to get this to work properly for quite some time now, and would appreciate your help.
Answers (1)
Karthik
on 20 Jun 2012
I don't have a solution to your problem but I've been using iir peak filters on my data as well. I have about 10 peak filters per frame of data and I use filtfilt to apply each filter to a given frame and add the data back. I learned 2 things which I hope might help you solve your problem.
1. Combining all the filters into a single filter didn't really work. I had to apply individual filters since there is a large group delay with each filter which varies for each filter. Hence the need for filtfilt
2. If you are adding data back together after filtering, then remember to use a high suppression for your loss since depending on how many filter you have, you may recover a large amount of it from other filters that don't suppress the frequencies of interest.
3. There is a finite rise time for each filter where the signal "ripples". I was able to get around this problem by saving filter state between consecutive frames.
Hope that helps.
Karthik
See Also
Categories
Find more on Audio Processing Algorithm Design in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!