PL dynamic scope placeholder pattern
Part of: miSCellaneous
Inherits from: PL_Pattern
Takes Symbol args for later reference by the Streams, which will read from variables in the Environments of their instantiation. See PLx suite.
NOTE: PL follows a paradigm of immediate replacement. There are cases though where you might prefer to finish streams or substreams before replacement, especially when syncing comes into play, for these options consider PLn and the cutItems arg of PLx list patterns.
See also: PLn, Event patterns and Functions, VarGui, VarGui shortcut builds
Creation / Class Methods
*new (item, repeats, type, envir)
Creates a new PL object.
item - Symbol or other Object.
If a Symbol is passed, item can be assigned to an envir variable later on.
Can be dynamically replaced by Patterns or Streams.
repeats - Symbol or repeats arg. Defaults to inf.
If a Symbol is passed, repeats can be assigned to an envir variable later on.
type - Expects 1 or inf.
Defines how items other than Patterns or Streams should be embedded.
Defaults to 1. Rather to be used by other PLx Patterns than by the user.
envir - Dictionary or one of the Symbols
\top, \t (topEnvironment), \current, \c (currentEnvironment).
Dictionary to be taken for variable reference. Defaults to \current.
Examples
(
s = Server.local;
Server.default = s;
s.boot;
)
// definition for future reference in arbitrary Environments
p = Pbind(\midinote, PL(\a), \dur, 0.2);
// prepare current Environment
(
~a = 60;
x = p.play;
)
// replace with items or patterns
~a = 58;
// PL had repeats = inf, so Pseq is embedded endlessly
~a = Pseq([60, 60, 58, 60, 53, 54.5, 56, 58]);
x.stop;
//////////////////////
// placeholder may also get event patterns
(
p = PL(\a, 1);
~a = Pbind(
\midinote, Pwhite(80, 85),
\dur, 0.2
);
x = p.play;
)
// replace, PL had repeats = 1, so ...
(
~a = Pbind(
\midinote, Pseq((70..65)),
\dur, 0.05
);
)
//////////////////////
// PL may be used in cases where there is no PLx implementation
// Pseg used for pitch curve, linear interpolation
(
p = Pbind(
\midinote, Pseg(PL(\p), PL(\d), \lin, inf),
\dur, 0.1
);
~p = Pshuf((50..75));
~d = 0.2;
x = p.play;
)
// play with segment length
~d = 0.4;
~d = 1;
// can also be replaced by pattern
~d = Pseq([0.2, 0.4, 1]);
// only two points left for interpolation
// there may be repetitions
~p = Pshufn([50, 100]).trace;
x.stop;