2
$\begingroup$

I've read that modifying the bin values in the frequency domain after a FFT poses problems that lead to glitches when one takes the signal back to time domain using iFFT. This is caused iirc because the modified data does not align "continuously" anymore to the bins (and discontinuities $\implies$ artefacts). Because of this it's e.g. not recommended to perform ("ideal filter") equalisation in the frequency domain.

But since there are e.g. interpolation methods,

Are there ways for doing processing such as shuffling or removing bins in the frequency domain such that one can retain sound quality? E.g. by "synthesising" new data using interpolation methods.


In the context of audio something seems to be feasible, since there exists plug-ins such as this that seem to do filtering in the frequency domain:

enter image description here

$\endgroup$
1
  • $\begingroup$ Could it be possible that these plug-ins may not actually modify the FFT representation per se, but may use "windowing technique for FIR filter design", which designs a FIR filter by taking the inverse FFT of the "desired" frequency response, which is what the user has inputted. Then this FIR is applied to the input to get the filtering effect. $\endgroup$
    – mavavilj
    Jun 29, 2016 at 14:18

3 Answers 3

1
$\begingroup$

The way you do it is you use a window that tapers to 0 at the ends, both before and after the FFT (analysis and re-synthesis windows), along with 50% overlap (needs to be a COLA window), to fade out the glitches and keep the signal continuous.

enter image description here

$\endgroup$
2
  • $\begingroup$ I've heard of windowing. Does applying it have to be modified somehow from the typical pipeline (where one doesn't modify the bins)? Since I've seen claims about glitches being created, if one modifies the bins, even if there was windowing. $\endgroup$
    – mavavilj
    Dec 24, 2015 at 15:55
  • $\begingroup$ Yes, that's why you window after modifying the bins, too. Use the square root of the window that you ultimately want $\endgroup$
    – endolith
    Dec 24, 2015 at 16:07
1
$\begingroup$

If the bin modifications to the FFT representation can be approximated closely enough for your purposes by the transform of a finite length impulse response, then modification of a series of zero padded FFTs in conjunction with overlap add or overlap save processing can be done without glitches. The zero-padding plus overlap is to prevent circular convolution artifacts in bin modifications from causing discontinuities. Making the impulse response of your modification short enough to do this will also help smooth out ripples in your modification's frequency response between FFT bins; and these ripples can be another cause of nasty artifacts.

For bin "shuffling" that falls under the category of analysis/resynthesis music processing, phase vocoder methods in conjunction with cross-fading sufficiently overlapped IFFT result frames is another possibility for glitchless modification.

$\endgroup$
-1
$\begingroup$

I think as long as bin modifications represent a continuum in time you'll be OK. In other words, bin modifications (scale, offset, etc.) should be close to that of the same bin for the previous window.

$\endgroup$
2
  • $\begingroup$ Welcome to DSP.SE! Can you expand a bit on what you mean? What do you mean by "close" in "close to that of the same bin"? $\endgroup$
    – Peter K.
    Dec 22, 2015 at 21:40
  • $\begingroup$ By "continuum" and "close" I mean there are no abrupt changes in the way you modify a given frequency bin from one window to the next. For example, if for one window you multiply bin#39 by (2.0 - 3.0i), the bin#39 multiplier for the next window might be safely changed to (2.1 - 2.94i). But changing it to (19 - 0i) in the very next window is bad. It depends on your acceptable glitch level. An abrupt change from one bin to the next is OK, like bin#39 is multiplied by (2.1 - 2.94i) and bin #40 is multiplied by (-18 + 0.2i). Doing that is just a frequency filter. $\endgroup$
    – Digiproc
    Dec 22, 2015 at 22:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.