Time compression/expansion modulation

Discussion about the DSP Dimension's articles, tutorials and code.

Moderator: neuronaut

Time compression/expansion modulation

Postby greekgoddj » 02.09.2009 14:39

Hello Stephan and others,

First of all I want to thank you for the great website, the information is very useful and very clear to understand. I remember first reading the tutorials in 2004, great stuff! I have recently returned to phase vocoders with the intention of time compression/expansion.

As the title of this thread suggests, I am having amplitude modulation issues though. Since the time domain signal is windowed both before the FFT and after the inverse FFT, a 4 time overlap is used. This works fine when the analysis and synthesis step sizes are the same, resulting in a constant output gain. However when the steps differ (in order to achieve the time compressions/expansion), the output results in amplitude modulation. The greater the difference between the step sizes, the more obvious this becomes. Surely there is a work around to this, or more likely I am doing something wrong. Do you have any suggestions?

Once again thanks a lot,

Aristotel 8)
greekgoddj
 
Posts: 3
Joined: 02.09.2009 14:06

Re: Time compression/expansion modulation

Postby neuronaut » 03.09.2009 13:40

Hi,

thank you, I'm glad you like it. I'm not familiar with your code so the best I can do is guess... My guess would be that this is due to transform frame undersampling:

The output stride must be such that the input and output windows of the sequence sum up to unity. If the stride of your input transform sequence critically samples the sequence (ie. if you use an overlap of 50%) you don't have any headroom to spread the transform frames further apart in your output sequence.

Or, more generally, if the combined input and output stride is larger than the stride required to make your windows sum up to unity you will get amplitude modulation. Typically this is less audible with smaller stretch ratios and happens only when you slow down the sequence. Does these description match your observation?

Now, you say you're using an overlap factor of 4. Depending on the window function that you're using (your message didn't say) this might require a higher overlap. Try an overlap of 8 to see if the problem goes away. You will have to increase this depending on your stretch factor anyway.

Another solution would be to keep the output stride constant and vary only the input stride depending on your stretch factor.

HTH
--smb
Free DSP tutorials by Stephan M. Bernsee at http://www.dspdimension.com
"There are 10 types of people in this world: those who understand binary, those who don't"
--Unknown
neuronaut
 
Posts: 1096
Joined: 17.11.2005 09:15
Location: Mainz, Germany

Re: Time compression/expansion modulation

Postby greekgoddj » 03.09.2009 17:38

Hello once again..

thanks for your reply. The window used is Hanning. Moving to an 8x overlap has made the problem go away, so your suggestion was spot on!

Thanks a lot! 8)
greekgoddj
 
Posts: 3
Joined: 02.09.2009 14:06

Re: Time compression/expansion modulation

Postby neuronaut » 03.09.2009 17:45

Great, I'm glad to hear it!

And please - it's called a "von Hann" (or just "Hann") window. "Hanning" is not a real name, the word "hanning" was used once as a verb to describe the process of applying a von Hann window. Unfortunately there were plenty of papers and books at that time who picked this up and so the term "Hanning" window has found its way into the literature. Julius Ferdinand von Hann was an Austrian meteorologist, there is no person named "Hanning". :-)

Best wishes
--smb
Free DSP tutorials by Stephan M. Bernsee at http://www.dspdimension.com
"There are 10 types of people in this world: those who understand binary, those who don't"
--Unknown
neuronaut
 
Posts: 1096
Joined: 17.11.2005 09:15
Location: Mainz, Germany


Return to The DSP Dimension

Who is online

Users browsing this forum: No registered users and 0 guests

cron