Explicitly include a boost "windows" folder even on linux
[supercollider.git] / HelpSource / Classes / Harmonics.schelp
blob991b3af7684383bf6503e919709a932949126214
1 CLASS::Harmonics
2 summary:: Convenient factory for filling buffers with harmonics on the server
3 categories:: Collections, Server, UGens>Buffer
5 DESCRIPTION::
6 Harmonics objects are convenient factories for creating Arrays that are used to fill buffers using the b_gen sine fill commands on the server.
8 CLASSMETHODS::
10 method::new
11 Create a new Harmonics array of size. Nothing is filled in for you, until instance methods are applied.
12 code::
13 a = Harmonics.new(16);  // just returns an instance of Harmonics with size
16 INSTANCEMETHODS::
18 method::ramp
19 code::
20 a.ramp(1.0, 1.0);       // returns a harmonic series
22 b = Buffer.alloc(s, 512, 1);
23 // harmonic series for freqs, ramp down for amps
24 b.sine2(a.ramp(1.0, 1.0).postln, a.ramp(0.5, -0.025).postln, true, true, true);
26 z = SynthDef("help-Osc",{ arg out=0,bufnum=0;
27         Out.ar(out,
28                 Osc.ar(bufnum, 200, 0, 0.5)
29         )
30 });
32 y = z.play(s,[\out, 0, \bufnum, b]);
33 y.free;
36 method::decay
37 Implements the formula: 1 / ((i+1) ** k)
38 code::
39 a.decay(1.0);
41 b.sine2(a.ramp(1.0, 1.0).postln, a.decay(1.0).postln, true, true, true);
42 y = z.play(s,[\out, 0, \bufnum, b]);
43 y.free;
46 method::geom
47 Implements the formula: 1 / (i ** k)
48 code::
49 a.geom(1.2);
51 b.sine2(a.ramp(1.0, 1.0).postln, a.geom(1.2).postln, true, true, true);
52 y = z.play(s,[\out, 0, \bufnum, b]);
53 y.free;
56 method::formant
57 Create a formant like structure.
58 code::
59 a.formant(6, 3);
61 b.sine2(a.formant(12, 3).postln, a.geom(1.2), true, true, true);
62 y = z.play(s,[\out, 0, \bufnum, b]);
63 y.free;
66 method::teeth
67 code::
68 a.teeth(6, 3);
70 b.sine2(a.teeth(2, 3).postln, a.geom(1.2), true, true, true);
71 y = z.play(s,[\out, 0, \bufnum, b]);
72 b.sine2(a.teeth(4, 1).postln, a.geom(1.2), true, true, true);
73 b.sine2(a.teeth(1, 3).postln, a.geom(1.2), true, true, true);
74 b.sine2(a.teeth(2, 3).postln, a.geom(1.2), true, true, true);
75 y.free;
78 method::cutoff
79 Returns 1.0 to the nth place, fills the rest with 0.0
80 code::
81 a.cutoff(3);
83 b.sine2(a.ramp(1.0, 1.0), a.cutoff(3), true, true, true);
84 y = z.play(s,[\out, 0, \bufnum, b]);
85 b.sine2(a.ramp(1.0, 1.0), a.cutoff(3), true, true, true);
86 b.sine2(a.ramp(1.0, 1.0), a.cutoff(5), true, true, true);
87 b.sine2(a.ramp(1.0, 1.0), a.cutoff(1), true, true, true);
88 y.free;
91 method::shelf
92 code::
93 a.shelf(0, 6, 1, 0);
95 b.sine2(a.ramp(1.0, 1.0), a.shelf(0, 6, 1, 0).postln , true, true, true);
96 y = z.play(s,[\out, 0, \bufnum, b]);
97 b.sine2(a.ramp(1.0, 1.0), a.shelf(0, 11, 1, 0).postln , true, true, true);
98 b.sine2(a.ramp(1.0, 1.0), a.shelf(2, 6, 1, 0).postln , true, true, true);
99 b.sine2(a.ramp(1.0, 1.0), a.shelf(6, 8, 1, 0).postln , true, true, true);
100 y.free;
103 method::sine
104 code::
105 a.sine(8, 0, 1, 0);
107 b.sine2(a.ramp(1.0, 1.0), a.sine(8, 0, 1, 0).postln , true, true, true);
108 y = z.play(s,[\out, 0, \bufnum, b]);
109 b.sine2(a.ramp(1.0, 1.0), a.sine(4, 0, 1, 0).postln , true, true, true);
110 b.sine2(a.ramp(1.0, 1.0), a.sine(2.2, 0.5pi, 0.4, 0.2).postln , true, true, true);
111 b.sine2(a.ramp(1.0, 1.0), a.sine(pi, 0.25pi, 0.5, 0).postln , true, true, true);
112 y.free;
115 method::pulse
116 code::
117 a.pulse(8, 0, 2, 1, 0);
119 b.sine2(a.ramp(1.0, 1.0), a.pulse(8, 0, 2, 1, 0).postln , true, true, true);
120 y = z.play(s,[\out, 0, \bufnum, b]);
121 b.sine2(a.ramp(1.0, 1.0), a.pulse(8, 0, 2, 1, 0).postln , true, true, true);
122 b.sine2(a.ramp(1.0, 1.0), a.pulse(4, 0, 2, 0.4, 0.2).postln , true, true, true);
123 b.sine2(a.ramp(1.0, 1.0), a.pulse(7, 0.5pi, 3, 0.5, 0.1).postln , true, true, true);
124 y.free;
127 method::rand, exprand, linrand, rand2, coin