People tend to think of an FFT representation in terms of a graphic equalizer, where you can simply multiply each bin by its corresponding slider value, then simply inverse FFT the result and that's it:
- NaiveFFTFiltering.png (12.04 KiB) Viewed 34939 times
That might work if your filter curve is very moderate.
However, the correct way of doing it is based on linear convolution.:
- CorrectFFTFiltering.png (12.69 KiB) Viewed 34939 times
You first IFFT your filter curve to obtain an impulse response (IR). Theen you apply a circular shift so the bulk of the IR is at the center of your frame, and apply a window function to avaid border artifacts. Then you convolve your signal with the windowed IR.