linux: shared memory interface - link with librt
[supercollider.git] / HelpSource / Classes / MulAdd.schelp
blob834e3584229b4eee68bb58477dcae25c2622405c
1 class:: MulAdd
2 categories:: UGens>Maths
3 summary:: Multiply and add to a signal
5 description::
6 Multiplies the signal by mul and adds add. This UGen is very efficient (it performs various optimisation checks, for example). It is used very heavily throughout SuperCollider to perform multiply and add operations on the server; in fact it is  what "really" performs the mul and add arguments found in many UGens.
8 See also the discussion of mul and add arguments in the link::Classes/UGen:: help file.
10 classmethods::
11 private:: new1
13 method:: new
14 argument:: in
15 input signal
16 argument:: mul
17 multiply with this value
18 argument:: add
19 add this value
21 discussion::
22 Same as:
23 code::
24 in.madd(mul, add)
27 instancemethods::
28 private:: init
30 Examples::
31 code::
32 s.boot;
34 // The mul and add arguments of SinOsc themselves use MulAdd!
35 // These two examples will create precisely the same synth graph:
36 x = { SinOsc.ar(440, 0, 0.1, 0.05) }.play(s);
37 x.trace; // You should see a "MulAdd" in the trace
38 x.free;
40 x = { MulAdd(SinOsc.ar(440, 0), 0.1, 0.05) }.play(s);
41 x.trace;
42 x.free;
44 // In fact this will produce the same graph too - the separate multiply and add are optimised into one MulAdd
45 x = { SinOsc.ar(440, 0) * 0.1 + 0.05 }.play(s);
46 x.trace;
47 x.free;
49 (Note: the "trace" message is described in the helpfile for link::Classes/Node::.)