class library: SynthDef - lazy implementation of removeUGen
[supercollider.git] / HelpSource / Classes / Pbinop.schelp
blob78aaa08dcbc3f85d6e75ffb4df587f9ad248f360
1 class:: Pbinop
2 summary:: binary operator pattern
3 related:: Classes/Pnaryop, Classes/Punop, Classes/BinaryOpFunction
4 categories:: Streams-Patterns-Events>Patterns>Math
6 description::
8 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.
10 Examples of binary operators are: +, -, /, *, min, max, hypot ...
12 ClassMethods::
14 method::new
16 argument::operator
17 operator to be applied
19 argument::a
20 a pattern (or compatible pattern input)
22 argument::b
23 a pattern (or compatible pattern input)
25 Examples::
27 code::
29 var a;
30 a = Pbinop(\hypot, Pseries(0, 1, 12), Pseries(3, -1, 12));
31 a.asStream.all;
34 // this is the same as:
36 var a;
37 a = Pseries(0, 1, 12).hypot(Pseries(3, -1, 12));
38 a.asStream.all;
41 // also written as:
43 var a;
44 a = Pseries(0, 1, 12) hypot: Pseries(3, -1, 12);
45 a.asStream.all;
48 // some common cases:
49 Pseq([1, 2, 3]) + 2;
50 Pseq([1, 2, 3]) / Pseq([3, 4, 5, 6]);
51 max(Pwhite(-10, 10, inf), Pseq([0, 2, 3, 4]));
54 code::
55 // sound example
57 SynthDef(\help_sinegrain,
58         { arg out=0, freq=440, sustain=0.05, amp=0.1;
59                 var env;
60                 env = EnvGen.kr(Env.perc(0.01, sustain, 0.2, amp), doneAction:2);
61                 Out.ar(out, SinOsc.ar(freq, 0, env))
62         }).add;
66 var a;
67 a = Pn(Pbinop(\hypot, Pseries(0, 1, 34), Pseries(3, -1, 34)), inf).asStream;
69         a.do { |val|
70                 Synth(\help_sinegrain, [\freq, a * 200 + 300].postln);
71                 0.05.wait;
72         }
73 }.fork;
77 Pbind(
78         \dur, 0.01,
79         \instrument, \help_sinegrain,
80         \note, Pn(Pbinop(\hypot, Pwhite(0, 12, 13), Pseries(3, -1, 12)))
81 ).play;
86 // these are the same as:
89 var a;
90 a = Pn(Pseries(0, 1, 34) hypot: Pseries(3, -1, 34), inf).asStream;
92         a.do { |val|
93                 Synth(\help_sinegrain, [\freq, a * 200 + 300].postln);
94                 0.05.wait;
95         }
96 }.fork;
101 Pbind(
102         \dur, 0.01,
103         \instrument, \help_sinegrain,
104         \note, Pn(Pwhite(0, 12, 13) hypot: Pseries(3, -1, 12))
105 ).play;