PatternConductor:
Filter:

PatternConductor : Object

Simple interactive control for playing patterns

Description

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

Inherited class methods

Undocumented class methods

PatternConductor.new(patterns, event, quant)

Instance Methods

.tempo

.tempo = temp

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)

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.

Inherited instance methods

Undocumented instance methods

.clock

.clock = value

.cmdPeriod

.defaultPauseTempo

.defaultPauseTempo = value

.defaultStopTempo

.defaultStopTempo = value

.event

.event = value

.eventStreamPlayers

.eventStreamPlayers = value

.patterns

.patterns = value

.quant

.quant = value

.resume

Examples

(
// 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);