0
$\begingroup$

Is there any way to synchronise phase of output of inverse DFT in each buffer?

When I send the output of inverse DFT to the speaker it sounds nasty.

Of course I know the „windowing functions” but it just gives me in/decreasing level on the begining and the end of buffer. It sounds better but with tremolo effect. I’ve also heard about overlaping windowing, I haven’t tried that but I am pretty sure it also won’t give me clean signal. Probably it will give me some phasing/chorusing effect that will appear periodically on each begining and end of buffer. So I wonder how to repair that?

$\endgroup$
  • $\begingroup$ Why do you think there is a phase offsrt issue in your problem? You should explain more what you are trying yo do and also provide a piece of code would help us help you $\endgroup$ – Pier-Yves Lessard May 7 '18 at 21:35
  • $\begingroup$ if you're doing a phase vocoder, then yes, one does need to do a phase adjustment of each identified frequency component in a frame (what you're calling a "buffer") to make it phase coherent with the previous frame. $\endgroup$ – robert bristow-johnson May 8 '18 at 1:11
0
$\begingroup$

If you were attempting to modify the contents of a DFT before the inverse DFT, say for filtering, then you need to do overlap-add or overlap-save fast convolution instead of just an Inverse DFT. You will also need to use a longer DFT and inverse DFT. If you can determine the length of the impulse response of your filter, then the length of the new DFT/IDFT needs to be extended and zero-padded by the length of that impulse response, so that the filter convolution is equivalent to linear, not circular.

If filtering, the noise you hear is likely the result of doing a circular convolution, instead of zero-padding and overlapping.

If, instead you are synthesizing audio, look up phase vocoder methods.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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