Pconst: table of contents

Pconst : FilterPattern : Pattern : AbstractFunction : Object

constrain the sum of a value pattern


Similar to Pfindur, but works with the value directly.

NOTE: 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.

Class Methods

Pconst.new(sum, pattern, tolerance: 0.001)

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.

Inherited class methods

Instance Methods

Inherited instance methods

Undocumented instance methods



.sum = value


.tolerance = value


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

    { arg out=0, freq=440, sustain=0.05;
        var env;
        env = EnvGen.kr(Env.perc(0.01, sustain, 0.2), doneAction: Done.freeSelf);
        Out.ar(out, SinOsc.ar(freq, 0, env))

        \dur, Pconst(1, Prand([1, 0.02, 0.2], inf)),
        \instrument, \help_sinegrain,
        \degree, Pseries(0, 1, inf),
        \octave, 6