Pbinop binary operator pattern


superclass: Pattern


Pbinop(operator, a, b)


Returns a stream that applies the binary operator to the stream values of the receiver

Usually, this is the result of applying a binary operator (i.e. a method with one argument) to a pattern.


operator - operator to be applied

a - a pattern (or compatible pattern input)

b -  a pattern (or compatible pattern input)


examples of binary operators are: +, -, /, *, min, max, hypot ...


See also: Pnaryop, Punop, BinaryOpFunction



// example


(

var a;

a = Pbinop(\hypot, Pseries(0, 1, 12), Pseries(3, -1, 12));

a.asStream.all;

)


// this is the same as:

(

var a;

a = Pseries(0, 1, 12).hypot(Pseries(3, -1, 12));

a.asStream.all;

)


// also written as:

(

var a;

a = Pseries(0, 1, 12) hypot: Pseries(3, -1, 12);

a.asStream.all;

)


// some common cases:

Pseq([1, 2, 3]) + 2;

Pseq([1, 2, 3]) / Pseq([3, 4, 5, 6]);

max(Pwhite(-10, 10, inf), Pseq([0, 2, 3, 4]));


// 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 = Pn(Pbinop(\hypot, Pseries(0, 1, 34), Pseries(3, -1, 34)), inf).asStream;

{

a.do { |val|

Synth(\help_sinegrain, [\freq, a * 200 + 300].postln);

0.05.wait;

}

}.fork;

)


(

Pbind(

\dur, 0.01,

\instrument, \help_sinegrain,

\note, Pn(Pbinop(\hypot, Pwhite(0, 12, 13), Pseries(3, -1, 12)))

).play;

)




// these are the same as:


(

var a;

a = Pn(Pseries(0, 1, 34) hypot: Pseries(3, -1, 34), inf).asStream;

{

a.do { |val|

Synth(\help_sinegrain, [\freq, a * 200 + 300].postln);

0.05.wait;

}

}.fork;

)



(

Pbind(

\dur, 0.01,

\instrument, \help_sinegrain,

\note, Pn(Pwhite(0, 12, 13) hypot: Pseries(3, -1, 12))

).play;

)