Accelerando/rallentando

Hi, I have a super basic question (newbie): is there any chance to perform on the fly rallentandi or accelerandi within a ProxySpace (i.e. to gradually transition from tempo to another one)? I’m running a few Pbinds and I want all to either go faster/slower simultaneously.
Thanks a lot
MHF

Hello and welcome to the forum!

Here’s one possible solution:

Ndef.clear;

// All proxies will follow this clock
p = Ndef(\t).proxyspace.makeTempoClock(60/60).quant_(1.0);

// Start a couple Pbinds inside Ndefs
Ndef(\a, Pbind(\degree, Pwhite(0, 10), \dur, 1)).play;
Ndef(\b, Pbind(\degree, Pseq([11, 12], inf), \dur, 1/2)).play;

// test change tempo 
p.clock.tempo = 40/60;

// automate tempo change
(
Pbindef(\tempoChange, 
	\type, \rest,
	\bpm, Pgeom(60, 1.2).min(180).trace, // accelerando
	\doIt, Pfunc({ |e| p.clock.tempo = e[\bpm]/60 }),
	\dur, 1
).play;
)

// now rallentando
Pbindef(\tempoChange, \bpm, Pgeom(180, 0.79).max(40).trace);

Pbindef(\tempoChange).stop;

There are many other ways you could automate the tempo change to your liking, using regular Pbinds, Tdefs, or a fork (Routine), etc. The Pbindef above is just one of the ways.

Hope this helps,

B

1 Like

Thank you so much, Bruno! Perfect - yes, it definitely helps.