I'm trying to do some simple filtering for an audio signal using a window-sinc low pass filter. Supposing that my buffer has M values and the filter kernel size is N, after convolving these two arrays I would obtain an output of m+n-1 values. Which part should I take into consideration? I'm asking this because, if I read a M values array I should write a M values array. I have tried to take the first M or the last M values for output, but the result is not too good. I was wondering if I have to use a circular buffer in which I put every time M+N-1 values, but I read the first M values.
- Output the first M samples of your convolution result
- Keep the remaining samples and ADD those to the result next buffer
Google "overlap add" for more information. While overlap add is a frequency domain method, it explains the framing and buffer handling well.