Forgot a help fix: Drag a dock's title bar, not divider, to reposition
[supercollider.git] / HelpSource / Classes / Pfset.schelp
blobe08d31129ba941a8229adeedcb007cac29e38896
1 class:: Pfset
2 summary:: Insert an environment into the event prototype before evaluating the supplied pattern
3 related:: Classes/Pset
4 categories:: Streams-Patterns-Events>Patterns>Data Sharing
6 description::
7 Good for setting default values or loading server objects.
10 classmethods::
12 method:: new
14 argument:: func
15 Use environment variable syntax (e.g., code:: ~x = 0 ::) to store values in the internal environment. These values are copied into the event prototype before running the supplied pattern.

16 argument:: pattern
17 An event pattern (such as link::Classes/Pbind::).

18 argument:: cleanupFunc
19 Optional. A function to evaluate when the pattern is stopped, or when the supplied pattern runs out of values. For example, if you loaded a link::Classes/Buffer:: in the initializer function, you could free it in the code::cleanupFunc::.
22 examples::
23 code::
25 var a, b;
26 a = Pfset({
27         ~legato = 0.3;
28         ~detune = rrand(0, 30);
29 }, Pbind(\dur, 0.5));
30 x = a.asStream;
31 9.do({ x.next(Event.new).postln; });
35 Pfset does not override values placed into the event by the inner pattern:
36 code::
38 var a, b;
39 a = Pfset({
40         ~dur = 0.3;
41 }, Pbind(\dur, 0.5));
42 x = a.asStream;
43 9.do({ x.next(Event.new).postln; });
47 Sound example
48 code::
50 SynthDef(\sinegrain,
51         { arg out = 0, freq = 440, sustain = 0.02;
52                 var env;
53                 env = EnvGen.kr(Env.perc(0.001, sustain), 1, doneAction:2);
54                 Out.ar(out, SinOsc.ar(freq, 0, env * 0.1))
55         }).add;
59 a = Pbind(\dur, 0.5, \instrument, \sinegrain, \x, Pfunc { rrand(500, 600) });
60 a = Pfset({ ~freq = { ~x.postln * 2 }; ~legato = 3; },  a);
61 a.play;