uhm... actually, *not* using the hanning window, makes the processed sound suck even more. so what's the best solution?
there is a better window function? perhaps the gaussian function? isn't the window function also related on how much samples overlap between a block and the next one? shouldn't fft~ be aware of this?
Why you want to apply a window function, and the pros & cons of each window is well described in this document introduced in one of the previous posts on this list. http://www.dspguide.com/
By multiplying each block with a window function, you are applying sort of an amplitude modulation which causes audible rumbles.
The easiest way to avoid this that I know of is to "clone" your entire FFT routine (call them 'original' and 'clone' for now), apply a delay before the original signal and the same delay time after iFFT on cloned signal. The delay time should be half the size of the window size (=block size). What you are doing here is preparing an identical signal to compensate for the gaps of amplitude caused by applying a window function to the original signal.
This will introduce a slightly longer delay in the overall sound, but I found its quality acceptable for certain applications.
I've attached a modified version of your original post.
There may be better ways of looking at all this which I am up to learning as well.
-- David Shimamoto