Quality of timestretch

Don’t know what technique rubberband uses , but I assume it’s some kind of fft , it’s normal that transients will get less pronounced when reconstructing the signal ( spectral bins )


it indeed sounds like FFt

Could you please tell me the Rubberband parameters the “Percussion” and “Texture” modes use exactly? I am trying to recreate the exact same output with other Rubberband implementations to see if there are also such extreme phase issues (cause I have not heard those before anywhere else).

And why not just implement the whole set of parameters?

I’ve no idea, you’d have to ask Taktik.

@taktik: Could you help out?


  • WindowShort
  • DetectorCompound
  • PhaseIndependent
  • TransientsCrisp


  • WindowShort
  • DetectorSoft
  • PhaseIndependent
  • TransientsSmooth

You won’t be able to get exactly the same results with the same options in the command line tool, as the stretcher instanced in Renoise run in realtime mode. The command line tool can preanalyze the whole sample file first to do a lookup, which the real-time mode can’t.

This is caused by the “TransientsSmooth” setting.

This is exactly what makes it sound nice when used on, well, texture alike sounds: Sounds without lots of hard transients like percussion.


@taktik Well, you gave us a beautiful tool, I’ll tell 'ya that! Already we’re wanting full control, that’s how good it is! If we can have the ability to on/off AND change length/timing from the pattern sequencer and have control over more of the settings with some sliders on something… Wowee, man!!! It really is that damn good! You opened the floodgate :smiley:


crackles over here too, and it also uses a lot of CPU on extreme stretching settings. (50% on a old i7 stretching a 5sec sample) when doubling LPB cpu explodes. i like the phasey/akaizer character for creative stuff tho :smile:

I see. Thanks for the detailed response. Appreciate it!

Regarding the “quality”:

Of course zplane’s or iZotope’s stretching can sound better, but their license models and CPU usage overhead are not acceptable for us.

Also remember that we’re using the stretcher in a sampler, and not for “simple” audio clip based playback as for example in Live. In a sampler every voice needs to be stretched separately and in realtime, with possibly changing pitch and tempo, so the audio signal never can be looked up. In audio clip playback, the entire sample can be preanalyzed first, which makes stretching a lot easier.

So in our realtime scenario, Rubberband IMHO really does an excellent job. But if that works for you, is something that only you can decide of course. And it’s an “option” only after all. You don’t need to use it. There always is the option to offline stretch a sample with other tools if all you want is resampling some loop to some other tempo.


I believe zplane also have a realtime algorithm. At least that is what I think is used in other samplers (e.g. the one in Beatmaker3). But yeah, their licensing is obviously something else… :slight_smile:

i like that its not a complex pro ultra zplane whatever algorithm, but i clearly get pops/clicks in the beginning of some samples (that are clearly not stretching artifacts). and it eats cpu :o

Yes, that’s hard to avoid. When you are raising the pitch or speeding up the tempo, you are feeding the stretcher more and more samples that it needs to crunch on. It needs to process a lot of input for a relatively small amount of output.

This could only be optimized by ignoring/skipping parts of the inputs, but this is tricky to realize - cause you then somehow need to decide what to ignore and what not to retain the original character of the sound.

That said, this also is a bit out of my control. We are only using the library. The author and thus the only one who could change or improve that is Chris from breakfastquay

I could collect issues and wishes though and send them over in a compact and moderated form.

1 Like

thats fair taktik, thanks for your reply. maybe a low quality cpu setting in the future could be nice because now its almost unusable in a session with medium taxed cpu from other stuff

I agree , rubberband does a fantastic job , and don’t forget we have the realtim effects commands to mangle it even further .

Ye rubberband is not perfect, but it does ok I think. Simple material is just fine…complex material like whole mixes or stuff with reverb will degrade.

Why no formants preserve option? Rubberband can do this?

Also I get tiny clicks…for example orchestral hit sample with tail…is very tempting to use the pitchshifter to preserve a single length along the keyboard…sample itself is clean…then when reducing length with timestretch and playing on the keyboard, I get little clicks between the notes, also when rendering offline or realtime. Like the pitchshifter would need some extra samples to run on when cutting out sound, and a fadeout/smoothing somewhere…

I mean it is clicks that keep me from using it in this usecase, I would not want them in my music!

Best if we could have length/timing in pattern command or have automation on them. This would make some kind of granular synthesys with not so much effort i guess .

Assign lfo , envelopes and the result will be fantastic


Have you played with adjusting the Line setting? Before activating the pitch shift, check the beat length in the waveform editor and multiply the total beat length by your LPB setting and use that as the line setting for the beat-sync pitch shift. I tried this with several Orch Hits I have and only got clicks and stuff at low settings for the beat-sync. Once I det it based on the original sample beat length, the clicks disappear. Though, you might have to revisit this if you change your Tempo and/or LPB settings later on.

1 Like

Actually you could precalc the stretched samples so that they wouldn’t need to stretched in realtime. This could be done in advance by pre-analyzing pattern data or storing stretched sample to memory when played for first time.

This would reduce CPU usage a lot with expense of RAM usage. RAM is cheap.

1 Like

In theory yes, but in practice this gets super complicated thanks to Renoise’s ability to manipulate sample playback in so many ways (via pattern effects, modulation, macros and so on).

1 Like