rsc3/doc-schelp/HelpSource/Classes/Pfset.schelp

63 lines
1.6 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class:: Pfset
summary:: Insert an environment into the event prototype before evaluating the supplied pattern
related:: Classes/Pset
categories:: Streams-Patterns-Events>Patterns>Data Sharing
description::
Good for setting default values or loading server objects.
classmethods::
method:: new
argument:: func
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.
argument:: pattern
An event pattern (such as link::Classes/Pbind::).
argument:: cleanupFunc
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::.
examples::
code::
(
var a, b;
a = Pfset({
~legato = 0.3;
~detune = rrand(0, 30);
}, Pbind(\dur, 0.5));
x = a.asStream;
9.do({ x.next(Event.new).postln; });
)
::
Pfset does not override values placed into the event by the inner pattern:
code::
(
var a, b;
a = Pfset({
~dur = 0.3;
}, Pbind(\dur, 0.5));
x = a.asStream;
9.do({ x.next(Event.new).postln; });
)
::
Sound example
code::
(
SynthDef(\sinegrain,
{ arg out = 0, freq = 440, sustain = 0.02;
var env;
env = EnvGen.kr(Env.perc(0.001, sustain), 1, doneAction: Done.freeSelf);
Out.ar(out, SinOsc.ar(freq, 0, env * 0.1))
}).add;
)
(
a = Pbind(\dur, 0.5, \instrument, \sinegrain, \x, Pfunc { rrand(500, 600) });
a = Pfset({ ~freq = { ~x.postln * 2 }; ~legato = 3; }, a);
a.play;
)
::