Pnaryop n-ary operator pattern


superclass: Pattern


Pnaryop(operator, a, arglist)


Returns a stream that applies the n-ary operator to the stream values of the receiver, taking n-1 streams as arguments. Usually, this is the result of applying an n-ary operator (i.e. a method with more than one argument) to a pattern.


operator - operator to be applied

a - a pattern (or compatible pattern input)

arglist - a list of patterns (or compatible pattern inputs)


examples of n-ary operators are: blend, linlin, linexp, explin, expexp, clip, fold, wrap.


See also: Pbinop, Punop, NAryOpFunction



// example


(

var a;

a = Pnaryop(\wrap, Pseries(0, 1, 12), [3, 7]);

a.asStream.all;

)


// this is the same as:

(

var a;

a = Pseries(0, 1, 12).wrap(3, 7);

a.asStream.all;

)


// the scale argument can also be a pattern:


(

var a;

a = Pnaryop(\wrap, Pseries(0, 1, 12), [Pseq([3, 4, 5], inf), Pseq([9, 7], inf)]);

a.asStream.all;

)



// common cases:

Pwhite(0, 1, inf).linexp(0, 1, 200, 1000);

Pwhite(0, 1, inf).degreeToKey([0, 1, 3, 5, 7, 9, 11], 10);

blend(Pseq([1, 2, 3], inf), Pseq([3, 2, 1, 0], inf), Pseries(0, 0.01, inf)); 



// sound example

(

SynthDef(\help_sinegrain, 

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

var env;

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

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

}).add;

)



(

var a;

a = Pnaryop(\wrap, Pseries(0, 1, 12), [3, 7]).asStream;

{

a.do { |val|

Synth(\help_sinegrain, [\freq, (val + 72) .midicps.postln]);

0.5.wait;

}

}.fork;

)


(

Pbind(

\dur, 0.1,

\instrument, \help_sinegrain,

\note, Pnaryop(\wrap, Pseries(0, 1, 12), [3, 7]);


).play;

)




// these are the same as:


(

var a;

a = Pseries(0, 1, 12).wrap(3, 7).asStream;

{

a.do { |val|

Synth(\help_sinegrain, [\freq, (val + 72) .midicps.postln]);

0.5.wait;

}

}.fork;

)


(

Pbind(

\dur, 0.1,

\instrument, \help_sinegrain,

\note, Pwhite(0, 12, inf).wrap(3, 7);

).play;

)