PatternConductor


superclass: Object


PatternConductor provides a simple interactive control (supporting play, pause, resume, stop) 

for playing pattern, much like Pattern-play.  However, PatternConductor creates its own clock and

directly controls the release of sounding notes as well as their initiation by the pattern.


Class Methods


*new(pattern, event, quant)


Instance Methods


tempo_(tempo)

Sets the tempo of the PatternConductor

play 

Play the pattern.  A 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. 

pause(pauseTempo = 0.000001) 

Pause the pattern, sustaining notes indefinitely.  

a subsequent resume will return to the original tempo (so the notes will  end as scheduled).  

a subsequent play will cut-off any sounding notes and resume play at the original tempo.

stop(stopTempo)  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.

example:

(  

 // a pattern with long notes 

  p = Pbind(

  \freq, Pwhite(0,log(32)).exp.round(1) * 36.midicps, 

  \detune, Pfunc({ | ev | ev[\freq]  * rand(0.01) }), 

  \sustain, Pwhite(log(0.1), log(20)).exp,

  \dur, Prand([0.1,0.1,0.1,0.1,0.2,1,2],inf),

  \db, Pstep(Pseq([-20,-30,-25,-30], inf),0.2)

);



// unrelated cluster pattern running on TempoClock.default

Pbind(\dur,2, \midinote, Pseq([(48..60)],20), \db, -30).play;


// make a conductor

a = PatternConductor(p, quant: 2);

a.play;


)

(

// now try some interactive control options line by line:

a.quant = 0;

a.pause

a.resume

a.stop

a.play

a.pause

a.play

a.stop(1000)

)