A student of mine came across this seemingly counterintuitive situation which I have not encountered before.
In the code below, we expected that the second evaluation of
Pbindef(\a, ...etc).play(~bpm) (last line) would play it using that custom TempoClock again, just as it did the first time
.play was used a few lines earlier. However, it seems the ~bpm is ignored and the last Pbindef plays using the default TempoClock at 60 BPM. This apparently happens because the Pbindef immediately prior to that was finite (i.e., it ended after 4 notes).
~bpm = TempoClock.new(150/60).permanent_(true); // start off with an inf pattern Pbindef(\a, \dur, 1, \degree, Pwhite(0, 10), \amp, 0.4); Pbindef(\a).play(~bpm); // a finite pattern now, it ends after 4 notes Pbindef(\a, \degree, Pwhite(0, 10, 4)); // now if I try something new, it ignores the ~bpm clock // I would expect it to play using ~bpm as before Pbindef(\a, \dur, 1, \degree, Pwhite(8, 13)).play(~bpm);
I found that if I run
Pbindef(\b).clock_(~bpm); before the last line, then it plays using the ~bpm TempoClock.
I would appreciate if anybody could help me understand what is happening in this example.