Forgot a help fix: Drag a dock's title bar, not divider, to reposition
[supercollider.git] / HelpSource / Classes / FBSineN.schelp
blobee020770d54deb16a9642ab281aaba5aa1a012ed
1 class:: FBSineN
2 summary:: Feedback sine with chaotic phase indexing
3 categories:: UGens>Generators>Chaotic
4 related:: Classes/FBSineL, Classes/FBSineC
6 description::
7 A non-interpolating sound generator based on the difference equations:
9 code::
10         x[n+1] = sin(im * y[n] + fb * x[n])
11         y[n+1] = (a * y[n] + c) % 2pi
13 warning:: reviser formulae conversion to c like code. ::
15 This uses a linear congruential function to drive the phase indexing of a sine wave. For code:: im = 1 ::, code:: fb = 0 ::, and code:: a = 1 :: a normal sinewave results.
17 classmethods::
18 method:: ar
19 argument:: freq
20 Iteration frequency in Hertz
21 argument:: im
22 Index multiplier amount
23 argument:: fb
24 Feedback amount
25 argument:: a
26 Phase multiplier amount
27 argument:: c
28 Phase increment amount
29 argument:: xi
30 Initial value of x
31 argument:: yi
32 Initial value of y
33 argument:: mul
34 argument:: add
36 examples::
37 code::
38 // default initial params
39 { FBSineN.ar(SampleRate.ir/4) * 0.2 }.play(s);
42 code::
43 // increase feedback
44 { FBSineN.ar(SampleRate.ir, 1, Line.kr(0.01, 4, 10), 1, 0.1) * 0.2 }.play(s);
47 code::
48 // increase phase multiplier
49 { FBSineN.ar(SampleRate.ir, 1, 0, XLine.kr(1, 2, 10), 0.1) * 0.2 }.play(s);
52 code::
53 // modulate frequency and index multiplier
54 { FBSineN.ar(LFNoise2.kr(1, 1e4, 1e4), LFNoise2.kr(1,16,17), 1, 1.005, 0.7) * 0.2 }.play(s);
57 code::
58 // randomly modulate params
60 { FBSineN.ar(
61         LFNoise2.kr(1, 1e4, 1e4),
62         LFNoise2.kr(1, 32, 33),
63         LFNoise2.kr(1, 0.5),
64         LFNoise2.kr(1, 0.05, 1.05),
65         LFNoise2.kr(1, 0.3, 0.3)
66 ) * 0.2 }.play(s);