I just studied an implementation (Matlab) of a windowed FFT and saw the following line of code:
w = sqrt(hann(fft_length, 'periodic'))
and later:
spectogram(:, column) = fft(ringbuffer.*w, fft_length) %why .*w ?
The ringbuffer obviously contains the current frame of the signal and the overlap so its's obvious to me that this needs to be multiplied with the Hanning Window but why is the square-root being taken first?