1 class:: PatternConductor
2 summary:: Simple interactive control for playing patterns
3 related:: Classes/Pattern
4 categories:: Streams-Patterns-Events>Patterns
8 PatternConductor provides a simple interactive control (supporting play, pause, resume, stop) for playing pattern, much like link::Classes/Pattern#-play::. However, PatternConductor creates its own clock and directly controls the release of sounding notes as well as their initiation by the pattern.
15 Sets the tempo of the PatternConductor
18 Play the pattern. A link::Classes/TempoClock:: is created, its tempo is set to the PatternConductor tempo, and the pattern is played using that clock. If quant is non-zero, this is synchronized with TempoClock.default at the specified quantization.
21 Pause the pattern, sustaining notes indefinitely. A subsequent link::#-resume:: will return to the original tempo (so the notes will end as scheduled). A subsequent link::#-play:: will cut-off any sounding notes and resume play at the original tempo.
24 can cut-off or shorten sounding notes, depending on the value of tempo. If stopTempo is nil, all notes are cut-off immediately. Otherwise, notes end at the specified tempo.
30 // a pattern with long notes
32 \freq, Pwhite(0,log(32)).exp.round(1) * 36.midicps,
33 \detune, Pfunc({ | ev | ev[\freq] * rand(0.01) }),
34 \sustain, Pwhite(log(0.1), log(20)).exp,
35 \dur, Prand([0.1,0.1,0.1,0.1,0.2,1,2],inf),
36 \db, Pstep(Pseq([-20,-30,-25,-30], inf),0.2)
39 // unrelated cluster pattern running on TempoClock.default
40 Pbind(\dur,2, \midinote, Pseq([(48..60)],20), \db, -30).play;
43 a = PatternConductor(p, quant: 2);
48 // now try some interactive control options line by line: