Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / Punop.schelp
blob418725703d2d0b8a12684b6698b77b03ed4dc78c
1 class:: Punop
2 summary:: unary operator pattern
3 related:: Classes/Pbinop, Classes/Pnaryop, Classes/UnaryOpFunction
4 categories:: Streams-Patterns-Events>Patterns>Math
6 description::
8 Returns a stream that applies the unary operator to the stream values of the receiver. Usually, this is the result of applying a unary operator (i.e. a method with one argument) to a pattern.
10 Examples of unary operators are: squared, sqrt, sin, tan ...
12 ClassMethods::
14 method::new
16 argument::operator
17 operator to be applied
19 argument::a
20 a pattern (or compatible pattern input)
22 Examples::
24 code::
26 var a;
27 a = Punop(\sqrt, Pseries(0, 1, 12));
28 a.asStream.all;
31 // this is the same as:
33 var a;
34 a = Pseries(0, 1, 12).sqrt;
35 a.asStream.all;
38 // some common cases:
39 Pseq([1, 2, 3]).squared;
40 Pseq([0.2, 0.5, 0.8]).coin;
41 Pwhite(-100, 100, inf).abs;
45 // sound example
47 SynthDef(\help_sinegrain,
48         { arg out=0, freq=440, sustain=0.05, amp=0.1;
49                 var env;
50                 env = EnvGen.kr(Env.perc(0.01, sustain, 0.2, amp), doneAction:2);
51                 Out.ar(out, SinOsc.ar(freq, 0, env))
52         }).add;
56 var a;
57 a = Pn(Punop(\sqrt, Pseries(0, 1, 12))).asStream;
59         a.do { |val|
60                 Synth(\help_sinegrain, [\freq, a * 200 + 300].postln);
61                 0.5.wait;
62         }
63 }.fork;
67 Pbind(
68         \dur, 0.01,
69         \instrument, \help_sinegrain,
70         \note, Pn(Punop(\sqrt, Pseries(0, 1, 12)))
71 ).play;
75 // these are the same as:
78 var a;
79 a = Pn(Pseries(0, 1, 12).sqrt).asStream;
81         a.do { |val|
82                 Synth(\help_sinegrain, [\freq, a * 200 + 300].postln);
83                 0.05.wait;
84         }
85 }.fork;
89 Pbind(
90         \dur, 0.1,
91         \instrument, \help_sinegrain,
92         \note, Pn(Pseries(0, 1, 12).sqrt)
93 ).play;