Pconst constrain the sum of a value pattern

superclass: FilterPattern

Pconst(sum, pattern, tolerance)

similar to Pfindur, but works with the value directly.

embeds elements of the pattern into the stream until the sum comes close enough to sum. At that point, the difference between the specified sum and the actual running sum is embedded.

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 EnvGen for very short sustain times.

(

var a, x;

a = Pconst(5, Prand([1, 2, 0.5, 0.1], inf));

x = a.asStream;

9.do({ x.next(Event.default).postln; });

)

Pconst used as a sequence of pitches

(

SynthDef("help-sinegrain",

{ arg out=0, freq=440, sustain=0.05;

var env;

env = EnvGen.kr(Env.perc(0.01, sustain, 0.2), doneAction:2);

Out.ar(out, SinOsc.ar(freq, 0, env))

}).store;

)

(

Pn(

Pbind(

\dur, Pconst(1, Prand([1, 0.02, 0.2], inf)),

\instrument, \help_sinegrain,

\degree, Pseries(0, 1, inf),

\octave, 6

)

).play;

)