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.
(
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 durations
(
SynthDef(\help_sinegrain,
{ 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))
}).add;
)
(
Pn(
Pbind(
\dur, Pconst(1, Prand([1, 0.02, 0.2], inf)),
\instrument, \help_sinegrain,
\degree, Pseries(0, 1, inf),
\octave, 6
)
).play;
)