sclang: ServerShmInterface - try to avoid multiple destructor calls
[supercollider.git] / HelpSource / Classes / Psym.schelp
blob77ae43ac5f553e38f27be602459a98fd249d95de
1 class:: Psym
2 summary:: use a pattern of symbols to embed Pdefs
3 categories:: Libraries>JITLib>Patterns
4 related:: Classes/Pdef
6 description::
7 for non-event patterns see link::Classes/Pnsym::. Overview: link::Overviews/JITLib::.
9 ClassMethods::
11 method::new
13 argument::pattern
14 a pattern that returns symbols or characters. Arrays are converted to parallel patterns ( link::Classes/Ppar:: ).
16 argument::dict
17 the dictionary to be used for lookup. By default, this is code::Pdef.all::, so one can embed Pdefs by name.
19 InstanceMethods::
21 method::dict
22 set the dictionary to be used.
24 Examples::
26 code::
28 // load a synthdef
29 s.boot;
30 SynthDef(\gpdef,
31         { |out=0, freq=440, sustain=0.05, amp=0.1, pan|
32                 var env;
33                 env = EnvGen.kr(Env.perc(0.01, sustain), doneAction:2) * amp;
34                 Out.ar(out, Pan2.ar(SinOsc.ar(freq, 0, env), pan))
35         }).add;
38 Pdef(\x, Pbind(\dur, Pn(0.25, 3), \instrument, \gpdef));
39 Pdef(\y, Pchain(Pbind(\degree, Prand([5, 9, 0], inf), \legato, Pseq([0.3, 2.2], inf)), Pdef(\x)));
40 Pdef(\z, Pchain(Pbind(\degree, Pseq([0, 2, 5, 7, 8, 9], 1)), Pn(Pdef(\y))));
42 Pdef(\play, Psym(Pseq([\x, \x, Prand([\x, \y]), \z, \y], inf).trace)).play;
44 // change root pattern:
45 Pdef(\x, Pbind(\dur, Pn(0.125, 2), \instrument, \gpdef));
46 Pdef(\x, Pbind(\dur, Pn(0.125, 3), \instrument, \gpdef, \ctranspose, 2));
47 Pdef(\x, Pbind(\dur, Pn(0.125, 2), \instrument, \gpdef, \ctranspose, 0));
49 // change sequence:
50 Pdef(\play, Psym(Prand([Pseq([\x, \y], 5), Pseq([\z, \y], 5)], inf).trace)).play;
52 // use a sequence of characters:
53 Pdef(\play, Psym(Pseq("xxyxxzz", inf).trace)).play;
55 // play in parallel:
57 Pdef(\play, Psym(
58         Prand([
59                 Pseq([[\x, \y], \z], 5),
60                 Pseq([[\z, \y], \x, \x, \y])
61                 ]
62         , inf).trace)
63 ).play
66 Pdef(\z, Pchain(Pbind(\mtranspose, -5), Pdef(\y)));
67 Pdef(\y, Pchain(Pbind(\degree, Pseq([4, 3, 4, 2, 4, 1, 4, 0], 1)), Pdef(\x)));
70 Pdef(\play).stop; // stop it
71 Pdef.clear; // clear all