I am deriving the temporal envelope of a signal (in a particular frequency band) by summing some FFT bin powers and taking the average, I do the FFT frame by frame, windowing and some overlap.

Please help me understand the following: when the envelope of the signal changes slowly (say 5 Hz), I can track the envelope fine. However when the envelope is modulated at a higher frequency, say at 100 Hz, the dynamic range and amplitude of the detected envelope are very reduced.

So the Modulation Transfer Function (MTF) of this method has a low-pass look.

I am trying to understand the reasons for this low-pass roll-off effect and the maths behind it. I see what's happening but I can't clearly conceptualise the underlying cause . It should also be possible to come up with a number regarding the slope of the MTF.

Thanks in advance!


Edit 1 : Thanks for your answer. I can't post images cause I'm a new user apparently.. so here is a link: Link . you see on the left the input signal is 4 kHz modulated by 5 Hz and I take some fft bin powers to track the 5 Hz envelope and it works fine. But at 75 Hz modulation (right), the amplitude and dynamic range of the envelope are reduced, and it gets worse as you increase the modulation freq (low pass effect). This is what I am trying to get my head around: where is this effect coming from ? Is it because I destroy phase information when I take the power of the bins ? I apply a hann window on the time domain input frames, before computing the FFT.

  • 1
    $\begingroup$ Can you provide some pictures? When are you performing the windowing? The window is typically a low-pass filter. $\endgroup$ Oct 30, 2012 at 5:03
  • 1
    $\begingroup$ What are you actually doing? Post some code and a minimal example. (i.e. code that synthesizes a signal, and then the code that processes it). $\endgroup$ Oct 30, 2012 at 11:24

1 Answer 1


Any set of FFT framings of the data is a form of averaging filter or FIR filter, and thus will have a low-pass filtering effect over some envelope frequency range. You can understand this effect by treating the FFT window as a FIR filter kernel and calculating its frequency response.

If the width of your FFT window is somewhere near the period of 5 Hz, then you will be in an area of filter roll-off. You could try a shorter window, compensate for the window roll-off, perhaps using a "flat-top" window if your frequency of interest is well within the window's passband, or use another form of enveloper follower which does not have an intrinsic roll-off in the area of interest.

  • $\begingroup$ thank you. I can't see a FIR kernel here though as you need at least some history (e.g one previous sample) to make a low-pass filter. Here it looks to me like a memory-less system as the time frames are independent . $\endgroup$
    – G Porters
    Oct 31, 2012 at 3:50
  • $\begingroup$ If you have more than 1 sample in a window, you have history for a FIR kernel the length of that FFT window. The filter kernel is all 1's for the default rectangular window. $\endgroup$
    – hotpaw2
    Oct 31, 2012 at 6:00
  • $\begingroup$ This is a poor way to think about it. A multiplicative window in the time domain does not in general act like a low-pass filter. There is nothing to suggest the OP is convolving the window in the time domain. Applying a multiplicative non-rectangular window is a perfectly sensible thing to do to alleviate edge effects. $\endgroup$ Oct 31, 2012 at 11:18
  • $\begingroup$ The OP is convolving his window against, not a single FFT frame, but a sequence of frames. The sequence will thus be filtered, even though invisible in any single frame. $\endgroup$
    – hotpaw2
    Oct 31, 2012 at 15:11
  • $\begingroup$ @hotpaw2 why do you think the OP is convolving anything? It would be a distinctly strange thing to do in this situation, and isn't apparent from the question (except for the implicit frequency domain convolution from a TD window, which isn't going to be anything like a low pass filter). $\endgroup$ Oct 31, 2012 at 21:03

Your Answer

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

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