class library: SynthDef - lazy implementation of removeUGen
[supercollider.git] / HelpSource / Classes / SOS.schelp
blob2fb4db816c232215cc764075ac31df62a5e4ce02
1 class:: SOS
2 summary:: Second order filter section (biquad).
3 related:: Classes/FOS
4 categories::  UGens>Filters>Linear
7 Description::
9 A standard second order filter section. Filter coefficients are given
10 directly rather than calculated for you. Formula is equivalent to:
12 formula::
14 out(i) = (a0 * in(i)) + (a1 * in(i-1)) + (a2 * in(i-2)) + (b1 * out(i-1)) + (b2 * out(i-2))
19 classmethods::
21 method::ar, kr
23 argument::in
25 signal input
28 Examples::
30 code::
32 // example: same as TwoPole
35         var rho, theta, b1, b2;
36         theta = MouseX.kr(0.2pi, pi);
37         rho = MouseY.kr(0.6, 0.99);
38         b1 = 2.0 * rho * cos(theta);
39         b2 = rho.squared.neg;
40         SOS.ar(LFSaw.ar(200, 0, 0.1), 1.0, 0.0, 0.0, b1, b2)
41 }.play
47         var rho, theta, b1, b2;
48         theta = MouseX.kr(0.2pi, pi);
49         rho = MouseY.kr(0.6, 0.99);
50         b1 = 2.0 * rho * cos(theta);
51         b2 = rho.squared.neg;
52         SOS.ar(WhiteNoise.ar(0.1 ! 2), 1.0, 0.0, 0.0, b1, b2)
53 }.play
56 // example with SOS.kr kr as modulator
59         var rho, theta, b1, b2, vib;
60         theta = MouseX.kr(0.2pi, pi);
61         rho = MouseY.kr(0.6, 0.99);
62         b1 = 2.0 * rho * cos(theta);
63         b2 = rho.squared.neg;
65         vib = SOS.kr(LFSaw.kr(3.16), 1.0, 0.0, 0.0, b1, b2);
66         SinOsc.ar( vib * 200 + 600) * 0.2
67 }.play