I'm facing a real case of DSP application. I have a basic knowledge of digital filtering and telecommunication issues.
The input of my "black-box" is a digital audio signal (say a common WAV file, stereo 44100 Hz, 16-bit). I need to develop a digital equalizer and create the output audio samples.
The computation has to be done in real-time, i.e. with a live-stream.
I'm aware that it means I have to define a buffer large enough to feed the filters.
The basic approach is to create several pass-band digital filters to change the gain of the frequencies in each band.
Because the requested bands are a lot (> 16) I'm going to work in the frequency-domain.
My thought:
- convert the signal in frequency-domain (DFT)
- define a shape of the desired response
- process the input samples with this shape
- revert back to time-domain to retrieve the actual audio samples
Questions:
- what is the technical name of this method?
- do you think this approach is better(*) than use a lot of steep pass-band filters?
(*) better here is not just an opinion: I'm talking about code complexity, latency and accuracy
Best Answer
Your question is better suited for the signal processing stack exchange, and this is perhaps the answer you are looking for. However, the basic issues are:
FFTs/DFTs are filters, however (1) their frequency response is not ideal as these overlap each other on the continuous domain, (2) are not spaced in a way that best matches our auditory response leading to wasteful processing, and (3) are circular convolutions which can lead to sample-to-sample discontinuities.
What you are looking for is an efficient orthogonal filter bank that is logarithmically spaced in the frequency domain. There exist several approaches to these.
An appropriate wavelet transform could be more efficient, as decimation is introduced on every step which bypasses the fixed bin resolution of FFTs.
In particular the Invertible Constant-Q Transform was designed with these problems in mind.
Although I am not very familiar with it, I can come-up with a methodology that might serve your purpose based on the wavelet approach.
Note that each lower-band takes twice the number of samples to process so this is an instance of variable-rate filtering characteristic of wavelet transforms. However, the total sampling rate remains constant due to the intervening sub-sampling.
There are some phase issues that would need to be addressed and would lead to practical limitations in the filters. Wikipedia goes at length on the Discrete Wavelet Transform.