How to modify "tempo" without introducing an echo

I have been playing around with some code using the SoundTouch libraries that modify speed, tempo and pitch. When I modify tempo, I notice an echo when it is reduced to about 50%. I have noticed the same results using the tempo control within Audacity. How can you reduce tempo without producing the echo affect??

For percussive sounds it is difficult because SoundTouch uses synchronized overlap-add (SOLA) which is very susceptible to this problem, though the SoundTouch library offers a number of parameters for optimising the method according to the type of audio, which is not available in Audacity (

Other approaches perform better in this respect, such as Subband Sinusoidal Modeling Synthesis (SBSMS) which is used in the Audacity Sliding Time Scale / Pitch Shift effect, or phase vocoding.

The idea though is to alter the tempo changes during playback. I am playing with the tuning parameters right now for the Soundtouch engine, but am curious about the SBSMS library. When I try it out in audacity, I do notice that it is a bit slower, but would it too slow for live playback??


On my machine (a cheap 5 year old laptop), 10 seconds of audio takes about 3 seconds to process, so it should be able to keep up with “real time”, though I don’t know how much buffering would be required. How about the phase vocoder? I believe that is sometimes used for real time processing.

Are there any other samples that use SBSMS from a C# class, or perhaps a C# wrapper of sorts? I just want to find out whether or not something already exists which I can use for sending in samples for processing and retrieving them from the SBSMS library, much like the SoundTouch libraries, preferably in C#???