I am performing decorrelation of two channels of audio using all pass filtering. The two all pass filters for two channels are of very high order (>1000 but with not all coefficients non zero). I have to perform this filtering in frequency domain. I get input samples in 2048 frame size (48 K sampling) with 50 % overlap Hann windowed.
So to apply this filter (a small intermediate matlab snippet for one of the channels)
freq_resp_filter=freqz(filter_APF,4096,'whole'); fft_input_sig=fft(input_sig_frame,4096); filtered_sig_fft=freq_resp_filter.*fft_input_sig; filtered_sig_ifft=ifft(filtered_sig_fft); % done for testing only final_2048_samples=filtered_sig_ifft(1:2048); % throw away last 2048 samples to remove aliasing by fft convolution
and then i recombine this
final_2048_samples with previous frames with overlapping.
When I listen to the output audio, I hear intermittent noise with signal, the noise is absent when I apply the same filter in time domain.
my question is: 1. Is this implementation correct (I have to perform this in frequency domain! and I can not do overlap add/save as this block is a part of a system, and I have no control over frame size, so every operation, 2048 samples should be given as output for further processing. )