Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / Pconst.schelp
blobdeca09e275fbb377b95c570e6d20d2ef1b117ff2
1 class:: Pconst
2 summary:: constrain the sum of a value pattern
3 related:: Classes/Pfindur, Classes/Pfin, Classes/Pfinval
4 categories:: Streams-Patterns-Events>Patterns>Repetition
6 description::
8 Similar to link::Classes/Pfindur::, but works with the value directly.
10 note::
11 Be careful if this is used, directly or indirectly, for a note-length parameter! The difference may be very small and this could result in zombie nodes, due to a bug in link::Classes/EnvGen:: for very short sustain times.
14 ClassMethods::
16 method::new
17 Embeds elements of the strong::pattern:: into the stream until the sum comes close enough to strong::sum::. At that point, the difference between the specified sum and the actual running sum is embedded.
19 Examples::
21 code::
23 var a, x;
24 a = Pconst(5, Prand([1, 2, 0.5, 0.1], inf));
25 x = a.asStream;
26 9.do({ x.next(Event.default).postln; });
30 //Pconst used as a sequence of pitches
33 SynthDef(\help_sinegrain,
34         { arg out=0, freq=440, sustain=0.05;
35                 var env;
36                 env = EnvGen.kr(Env.perc(0.01, sustain, 0.2), doneAction:2);
37                 Out.ar(out, SinOsc.ar(freq, 0, env))
38         }).add;
42 Pn(
43         Pbind(
44                 \dur, Pconst(1, Prand([1, 0.02, 0.2], inf)),
45                 \instrument, \help_sinegrain,
46                 \degree, Pseries(0, 1, inf),
47                 \octave, 6
48         )
49 ).play;