PLslide dynamic scope Pslide variant
Part of: miSCellaneous
Inherits from: PL_ListPattern
Takes Symbol args for later reference by the Streams, which will read from variables in the Environments of their instantiation. See PLx suite.
See also: Pslide, Event patterns and Functions, VarGui, VarGui shortcut builds
Creation / Class Methods
*new (list, repeats, len, step, start, wrapAtEnd, envir)
Creates a new PLslide object.
list - Symbol or Pslide list arg.
If a Symbol is passed, list can be assigned to an envir variable later on.
This lists's elements can be dynamically replaced by Patterns or Streams.
repeats - Symbol or Pslide repeats arg. Defaults to inf.
If a Symbol is passed, repeats can be assigned to an envir variable later on.
len - Symbol or Pslide len arg. Defaults to 3.
If a Symbol is passed, len can be assigned to an envir variable later on.
Can be dynamically replaced by Patterns or Streams.
step - Symbol or Pslide step arg. Defaults to 1.
If a Symbol is passed, step can be assigned to an envir variable later on.
Can be dynamically replaced by Patterns or Streams.
start - Symbol or Pslide start arg. Defaults to 0.
If a Symbol is passed, start can be assigned to an envir variable later on.
wrapAtEnd - Symbol or Pslide wrapAtEnd arg. Defaults to true.
If a Symbol is passed, wrapAtEnd can be assigned to an envir variable later on.
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 = PLslide(\a, inf, \len, \step, \start);
// prepare current Environment
(
~len = 3;
~step = 1;
~start = 0;
~a = [60, 61, 62, 70, 71, 72, 80, 81, 82];
)
// run
(
x = Pbind(
\midinote, p,
\dur, 0.2
).play;
)
// replace list elements
~a[0] = 60.5;
~a[8] = Pseq([92, 80.5], 1);
// len and step can be replaced by Patterns
// PLseq defaults to repeats = inf
~len = Pstutter(5, PLseq([1,2,3]));
(
~len = 1;
~step = Pstutter(2, PLseq([0,4]));
)
x.stop;
//////////////////////
// placeholder may also get lists of event patterns
(
p = PLslide(\a, inf, \len, \step, \start);
~len = 3;
~step = 1;
~start = 0;
~add = 0;
~a = (60, 62..70).collect { |x|
Pbind(
\midinote, x + Pseq((0, 0.2..0.8)) + PL(\add),
\dur, 0.1
);
};
x = p.play;
)
// replace slide params an ~add
~add = [4,9];
~step = 2;
~len = 4;
~add = [4, 9, 13];
// replace array element
(
~a[0] = Pbind(
\midinote, 80 + Pseq((0.8, 0.6..0)) + PL(\add),
\dur, 0.05
);
)
x.stop;