1
$\begingroup$

I would like to ask how to deal with audio DSP. Is FFT good at all to deal with audio? I am working on an app, that generates a single impulse, rout it to an EQ plugin, and the output of the plugin is run through the FFT to see what exact changes were made by the plugin. And I have found some issue with FFT, that I'm not sure how to solve: FFT gives you the same resolution for the whole frequency range. If I have a sampling rate of 48 kHz, and a buffer (and DTFT) size of 1024 samples, then the resolution is 48000/1024 = 46.875 Hz. And the same resolution is for lower, medium and highest freq, in one word for the whole range. But in audio, we often work on logarithmic scales. So we need better resolution on low freq, than high freq. How do you deal with that?

Of course I can store data from buffer size until I have 48000 samples, and then run it through the FFT, then I would have resolution 1 Hz. Great, but at first: then I can refresh at least only one time per second, at second: I still think I don't need such a high resolution for high frequencies, and at third it didn't solve my problem if we have other sample rate like 44100 which is not 2^L.

So, is FFT not a good choice for that purpose, please tell me in which situations it is good to use radix-2 FFT in audio industry? As I know for filtering there are also better choices like FIR filters. So what is about all that FFT? :)

$\endgroup$
  • 1
    $\begingroup$ some plugins will change the sound in such a way that you cannot tell "what exact changes are made by [the] plugin". the FFT and frequency-domain analysis are no panacea. $\endgroup$ – robert bristow-johnson Mar 26 '18 at 5:21
0
$\begingroup$

If you overlap, you can refresh an N long FFT every sample, or every M samples, no need to wait an entire 1 second, or for N samples.

No need to find a sample rate that is 2^n, as most modern FFT libraries support any reasonable product of several small primes.

For analysis, no need to use the same size FFT for both low and high frequencies (or mid, or upper mid, or an entire octave, etc.)

Why FFT? O(NLogN) provided a speedup that in ancient pre-history allowed DFTs to be run on chips with far far less than a few million transistors, and today still allows real-time performance on power sources that fit in a watch or hearing aid or implant. Could even allow some Fourier analysis of data when computers were women who used paper and pencil. The square matrix derivation of a DFT requires less chalk on the classroom chalkboard (today: less iPad scrolling) than more modern audio tricks.

But if you have a larger power source with modern hardware/chips/iPhones, you can use piles of wavelets, large filter banks, psycho-acoustic models, Goertzels, and several other algorithms that are far less efficient than an O(NLogN) sped-up DFT, but together can still easily run faster that real-time requires.

$\endgroup$

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.