I've implemented a few FIR filters into a song equalizer, but there seems to be a crackling that I'm unsure how to fix. Heres a video for reference: https://www.youtube.com/watch?v=IlzWRYpv0rk. Noise starts at 10s into the video.

Here's the programs current flow:

Create filters -> Convert them to frequency domain;

Read .wav file -> Apply FFT -> Multiply each frequency bin by sum of filters output -> Apply IFFT -> Play. 

FFT has 1024 samples, Filter has 1024 samples.

Also, I'm unsure about when to implement overlap-add. Should it be on filter-data multiplication? In this case, should my filters should have a lower size? It seems like every video on youtube is lacking on where OA should be used. If you guys have good resources on that, I would greatly appreciate it.

Thanks for any help!

  • 3
    $\begingroup$ if you're gonna use the FFT to perform "fast convolution", you need to learn about overlap-add or overlap-save. you're likely having discontinuities between frames and also time aliasing due to the circular convolution that using the FFT causes. $\endgroup$ – robert bristow-johnson Dec 4 '18 at 23:05
  • 2
    $\begingroup$ try doing the FIR the old-fashioned time-domain method (without the use of the FFT). if you hear crackling with that, then you got other trouble. $\endgroup$ – robert bristow-johnson Dec 4 '18 at 23:06
  • $\begingroup$ Another way to quickly confirm what @robertbristow-johnson suggests would be to change your frame length. If you make it longer and the "crackling" becomes slower, then this is because of the phase discontinuities introduced by chopping the signal into frames. The idea there would be to save the "spilling" coefficients from the previous frame to take them into account during the filtering of the current frame... $\endgroup$ – A_A Dec 6 '18 at 14:04

Your Answer

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

Browse other questions tagged or ask your own question.