Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / FBSineC.schelp
blob2b8704f97c28d2964eee6f310f8f4c167ab64dc3
1 class:: FBSineC
2 summary:: Feedback sine with chaotic phase indexing
3 categories:: UGens>Generators>Chaotic
4 related:: Classes/FBSineN, Classes/FBSineL
6 description::
7 A cubic-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:: revise 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
34 examples::
35 code::
36 // default initial params
37 { FBSineC.ar(SampleRate.ir/4) * 0.2 }.play(s);
40 code::
41 // increase feedback
42 { FBSineC.ar(SampleRate.ir, 1, Line.kr(0.01, 4, 10), 1, 0.1) * 0.2 }.play(s);
45 code::
46 // increase phase multiplier
47 { FBSineC.ar(SampleRate.ir, 1, 0, XLine.kr(1, 2, 10), 0.1) * 0.2 }.play(s);
50 code::
51 // modulate frequency and index multiplier
52 { FBSineC.ar(LFNoise2.kr(1, 1e4, 1e4), LFNoise2.kr(1,16,17), 1, 1.005, 0.7) * 0.2 }.play(s);
55 code::
56 // randomly modulate params
58 { FBSineC.ar(
59         LFNoise2.kr(1, 1e4, 1e4),
60         LFNoise2.kr(1, 32, 33),
61         LFNoise2.kr(1, 0.5),
62         LFNoise2.kr(1, 0.05, 1.05),
63         LFNoise2.kr(1, 0.3, 0.3)
64 ) * 0.2 }.play(s);