Yet another fft question - a vocoder Lets assume a pipeline X:

            in_buffer1 * window -&gt; fft -&gt; car_to_pol -&gt; pol_to_car -&gt; ifft -&gt; out_buffer1
          /                                                                               \ 
in_signal                                                                                   out_buffer1 + out_buffer2  -&gt; out_signal
          \                                                                               /
            in_buffer2 * window -&gt; fft -&gt; car_to_pol -&gt; pol_to_car -&gt; ifft -&gt; out_buffer2 


where in_buffer1 and in_buffer2 overlap in time by exactly 50% and the window is i.e. a hamming window with an offset matching the buffer.

the out_signal should be just a reconstructed in_signal with a delay depending of the buffers lengths with no frequency leaks.

However lets then consider a following pipeline Y for a single buffer with two sifnal sources and one result

in_signalA(n) -&gt;  in_bufferA(n) * window -&gt; fftA(n) -&gt; car_to_polA(n)  -&gt;     imgA(n)     -&gt;   pol_to_car -&gt; ifft -&gt; out_buffer(n)
                                                                       \                   /
                                                                        realB(n) * realA(n)
                                                                       /
in_signalB(n) -&gt;  in_bufferB(n) * window -&gt; fftB(n) -&gt; car_to_polB(n) 


Then apply the same overlapping oerlapping as per the pipeline X where the n is the number of the pipeline, i.e. 0 - no offset, 1- 50% offset,
This should produce a 'vocoder' effect.

However I do get cracks on the output signals which suggest there is a frequency leak I'm not compensating for. Any idea what I'm missing here?
The solution turned to be the right number of overlapping input buffers.
To get the source into fft and then back we need to apply windowing on the sources to reduce frequency leaks. Reconstructing such signal without any modification works just fine. However as @applesoup poined out certain operations in the frequency domain introduce their own discontinuities at the edge of output buffers so the output buffers must be windowed as well before combining into the output signal which in turn introduces inconsistency to the amplitude of the signal as in effect we need to apply same window twice. The solution to this problem is to double the number of buffers and change the overlap to 25% (of looking from the other side, to 75%) so each sample is reconstructed from 4 windowed output buffers which compensates the double windowing of each individual buffer.