class library: SynthDef - lazy implementation of removeUGen
[supercollider.git] / HelpSource / Classes / DynKlang.schelp
blob43b3f5e0db81a0fdda599bc473bcf7bda4ed3e62
1 class:: DynKlang
2 categories:: UGens>Generators>Deterministic
3 summary:: Dynamic sine oscillator bank
4 related:: Classes/Klang, Classes/DynKlank, Classes/Klank
6 description::
7 DynKlang is a bank of sine oscillators. It is less efficient than Klang, as it is basically a wrapper around SinOsc UGens in order to provide a similar interface to link::Classes/Klang::.
9 Unlike Klang, parameters in code::specificationsArrayRef:: can be changed after it has been started.
11 classmethods::
12 private:: categories
14 method:: ar, kr
16 argument:: specificationsArrayRef
17 a Ref to an Array of three Arrays:
18 definitionlist::
19 ## frequencies || an Array of filter frequencies.
20 ## amplitudes || an Array of filter amplitudes, or nil. If nil, then amplitudes default to 1.0
21 ## phases || an Array of initial phases, or nil. If nil, then phases default to 0.0
23 argument:: freqscale
24 a scale factor multiplied by all frequencies at initialization time.
25 argument:: freqoffset
26 an offset added to all frequencies at initialization time.
28 examples::
29 code::
30 // frequency modulation
32 play {
33         DynKlang.ar(`[
34                 [800, 1000, 1200] + SinOsc.kr([2, 3, 4.2], 0, [13, 24, 12]),
35                 [0.3, 0.3, 0.3],
36                 [pi,pi,pi]
37         ]
38 ) * 0.1
43 // building new synths every 2 seconds
46 loop({
47         play({
48                 var mod = SinOsc.kr(Rand(0.1, 0.9), 0, Rand(5, 20));
49                 Pan2.ar(DynKlang.ar(`[ Array.rand(12, 200.0, 2000.0), 1, mod ]), 1.0.rand)
50                         * EnvGen.kr(Env.sine(4), 1, 0.02, doneAction: 2);
51         });
52         2.wait;
54 }.fork;
58 // resetting the frequencies and amplitudes after the synth has been created
60 SynthDef('help-dynKlang', {| freqs=#[220, 440, 880, 1760],
61         amps=#[0.35, 0.23, 0.12, 0.05],
62         phases=#[1, 1.5, 2, 2.5]|
64         Out.ar(0, DynKlang.ar(`[freqs, amps, phases]))
65 }).add
68 a = Synth('help-dynKlang');
70 a.setn(\freqs, Array.rand(4, 500, 2000));
71 a.setn(\amps, Array.rand(4, 0.01, 0.25));