[music-dsp] FFT Convolution, Clicks and Pops
Aristotel Digenis
digenis at digenis.ws
Sat Aug 14 21:09:40 EDT 2004
Greetings!
I have just joined the mailing list. I have spent ages trying to figure
the following problem. I wish I had found this mailing list sooner. I am
trying to do FFT Convolution, however I am getting very frequent clicks
and pops which result to a buzzing. I am implementing an overlap-add so
I cannot see why it does it. I thought that perhaps it is a result of
the signals ending at the end of the frame block at a non-zero crossing
or one that does not join well with the signal of the next frame block.
I tried Hann windowing each frame block before the FFT, and the clicks
do not occur then. So it would appear the edges of frame blocks do not
join well after convolution. However, the resulting signal "wobbles" as
the amplitude is rapidly changing between frame blocks. I am aware that
this testing did not include windowing for windowed material. It seems
very complicated to implement that, and would like to avoid it if I can.
The question is, for what I am doing, do I need to use Windowing? It
apparently is not needed according to some of the mails in the archive
and other sources(such as chapter 18 of The Scientist and Engineer's
Guide to Digital Signal Processing).
I should mention that there are absolutely not artifacts for the whole
process when the spectrum of the signal and the impulse response are not
multiplied.
What could be causing the artifacts at the end of each convolved frame
block?
Bellow is pseudo code of what I am trying to do.
-I have an impulse response of 512 samples which I zero-pad to 1024.
-FFT the impulse response.
-Zero pad an array of 511 spaces. This will later be used to store the
overlap.
During the processing loop.
-Read 512 samples of audio.
-Zero pad the array to 1024.
-FFT the audio signal.
-Multiply the spectrum of the audio signal with that of the impulse
response.
-Inverse FFT of the result.
-Add the overlap to the result.
-Update the overlap.
-Output the audio.
Repeat loop.
Thank you in advance!
Aristotel
More information about the music-dsp
mailing list