A
A
acplx2015-01-08 11:17:04
C++ / C#
acplx, 2015-01-08 11:17:04

What band pass filter should I use?

Task: in "real time" (that is, with a minimum delay), select a given band from the audio signal (for example, from 5 kHz to 10 kHz) and suppress the signal outside this band. Since the task is real-time processing, I take the buffer as little as possible (128 samples at a clock frequency of 44.1 kHz) and for the same reason I cannot accumulate several buffers or make a large delay line.
I know that in an audio editor (Adobe Audition or similar) you can apply an FFT filter. It allows you to clearly highlight the desired band, with a flat frequency response in the passband, with the maximum steepness of the transition band and complete suppression in the suppression band, and, in addition, undistorted sound: a95bd897d72f41da8fec02cd756fb089.pngBut this is a recording conversion when you can take, say, 4096 points for FFT.
Now I use a FIR (FIR) filter of the order of 30-50, the frequency response in the passband is uneven, the transition bands are large: 73069c817b814b59b2bfa641c78d81e8.png
When you try to increase the steepness (order and delay line) of this FIR filter, the sound begins to be strongly distorted.
Which solution can be chosen for "cool" real-time filtering? Could an IIR filter be a better fit? If so, which one? Or choose a different impulse response for my filter?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
maaGames, 2015-01-08
@maaGames

Well, FFT and apply. First FFT, then inverse FFT only for frequencies of interest.
Intel MKL even has a Fourier Transform library optimized for Intel.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question