RT Timestretching clip

can you tell me more about the roadmap “Allow Dynamic Time-stretched Playback” topic ?

Did you start to work on it ?

I am asking because I am working with realtime timestreatching and Tracktion.

My application uses time streatch to plays audio clips and I am facing some issues when changing BPM ( time to stretch audio ) .

I don’t know if it is related to the soundtouch library ( maybe I need a better library?).


Not yet but I have a few ideas of how to achieve it. It really depends on how “dynamic” we need this to be. What’s your use case? And what do you mean by “facing some issues when changing BPM”?

SoundTouch certainly won’t have the same quality as a library like Elastique but it sounds like you’re referring to something other than quality?

I am using clips to be played in loop as a live jam.

So basically I start a number of clips ( that should be stretched when user wants to
change bpm) and others are started/stopped by some user events.

I saw that TimeStreatch doesn’t use realtime mode for the AudioBase class and it has ElastiqueProperty options, should I modify these classes ?

Unless you’re using the Elastique library, changing the ElastiqueProOptions won’t have any effect.
What do you mean by “realtime mode for the AudioBase class”? I’m not sure what “realtime mode” is in reference to?

You should be able to do what you want but obviously the proxy file will need to be re-generated when you change the pitch or tempo. That’s just how it works at the moment. This is best demonstrated in the PitchAndTimeDemo.
Is that the problem or was there something else?

I was refering to

void TimeStretcher::initialise (double sourceSampleRate, int samplesPerBlock,
int numChannels, Mode mode, ElastiqueProOptions options, bool realtime)

because it seems unused ( always false).

Maybe it is simpler for me to divide the problem, I am restarted from clips.

At the moment I am trying to loop a clip with an infinite number of times,
could you help me please ?


It is used by the ElastiqueStretcher, I think it puts a limit on the stretch ratio which in turn limits the amount of latency it introduces.

It sounds like you’re trying to do a live style clip-launcher with a clip that just loops and adjusts to the BPM. This is on the roadmap but we don’t have the resources to dig in to it at the moment I’m afraid (still finishing up the new engine).

The way I’ve done this in the past is to create a clips and ensure an instance is added in the correct place on the timeline so it “appears” to always be playing. Imagine a user dragging a single loop of a clip along a timeline so it’s always under the playhead.

At the moment that won’t work if you change the tempo though as it will need to recalculate the proxy file being played back. So I don’t think there’s an easy way to do what you’re asking for at the moment I’m afraid. It’s just not a feature we have.