sclang: shm interface - fix Bus-setSynchronous
[supercollider.git] / Help / UGens / Oscillators / VOsc3.html
blobde8b2d2c6f57472c7a29e78545725638da7efd3e
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <meta http-equiv="Content-Style-Type" content="text/css">
6 <title></title>
7 <meta name="Generator" content="Cocoa HTML Writer">
8 <meta name="CocoaVersion" content="824.44">
9 <style type="text/css">
10 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
11 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
12 p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
13 p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
14 p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
15 p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
16 p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
17 span.s1 {color: #0018f7}
18 span.s2 {color: #091fb1}
19 span.s3 {color: #000000}
20 span.s4 {color: #456c20}
21 span.s5 {color: #606060}
22 span.s6 {color: #902a19}
23 span.Apple-tab-span {white-space:pre}
24 </style>
25 </head>
26 <body>
27 <p class="p1"><b>VOsc3<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>three variable wavetable oscillators</b></p>
28 <p class="p2"><br></p>
29 <p class="p3"><b>VOsc3.ar(table, freq1, freq2, freq3, mul, add)</b></p>
30 <p class="p4"><br></p>
31 <p class="p3">A wavetable lookup oscillator which can be swept smoothly across wavetables. All the wavetables must be allocated to the same size. Fractional values of table will interpolate between two adjacent tables. This unit generator contains three oscillators at different frequencies, mixed together.</p>
32 <p class="p4"><br></p>
33 <p class="p3">This oscillator requires at least two buffers to be filled with a wavetable format signal.<span class="Apple-converted-space">  </span>This preprocesses the Signal into a form which can be used efficiently by the Oscillator.<span class="Apple-converted-space">  </span>The buffer size must be a power of 2.</p>
34 <p class="p4"><br></p>
35 <p class="p3">This can be achieved by creating a Buffer object and sending it one of the "b_gen" messages ( sine1, sine2, sine3 ) with the wavetable flag set to true. <span class="Apple-converted-space"> </span></p>
36 <p class="p4"><br></p>
37 <p class="p3">This can also be achieved by creating a Signal object and sending it the 'asWavetable' message, saving it to disk, and having the server load it from there.</p>
38 <p class="p4"><br></p>
39 <p class="p3">If you use Buffer objects to manage buffer numbers, you can use the *allocConsecutive method to allocate a continuous block of buffers. See the <a href="../../ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a> helpfile for details. Note that since VOsc uses fractional buffer numbers you will need to call <b>bufnum</b> on any Buffer objects which are used directly as UGen inputs.</p>
40 <p class="p4"><br></p>
41 <p class="p3"><b>table</b> - buffer index. Can be swept continuously among adjacent wavetable buffers of the same size.</p>
42 <p class="p3"><b>freq1, freq1, freq3</b> - frequencies in Hertz of the three oscillators</p>
43 <p class="p3"><b>phase</b> - phase offset or modulator in radians</p>
44 <p class="p4"><br></p>
45 <p class="p3">note about wavetables:</p>
46 <p class="p3">VOsc3 requires the b_gen sine1 wavetable flag to be ON.</p>
47 <p class="p5"><br></p>
48 <p class="p5"><br></p>
49 <p class="p6">(</p>
50 <p class="p6">s = <span class="s2">Server</span>.local;</p>
51 <p class="p7">// allocate and fill tables 0 to 7</p>
52 <p class="p6">8.do({ <span class="s2">arg</span> i;</p>
53 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">var</span> n, a;</p>
54 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// allocate table</p>
55 <p class="p6"><span class="Apple-tab-span"> </span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024);<span class="Apple-converted-space"> </span></p>
56 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// generate array of harmonic amplitudes</p>
57 <p class="p6"><span class="Apple-tab-span"> </span>n = (i+1)**2;</p>
58 <p class="p6"><span class="Apple-tab-span"> </span>a = <span class="s2">Array</span>.fill(n, { <span class="s2">arg</span> j; ((n-j)/n).squared.round(0.001) });</p>
59 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// fill table</p>
60 <p class="p6"><span class="Apple-tab-span"> </span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
61 <p class="p6">});</p>
62 <p class="p6">)</p>
63 <p class="p5"><br></p>
64 <p class="p6">(</p>
65 <p class="p6"><span class="s2">SynthDef</span>(<span class="s5">"help-VOsc"</span>,{ <span class="s2">arg</span> out=0, bufoffset=0, freq=240;</p>
66 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">var</span> x;</p>
67 <p class="p6"><span class="Apple-tab-span"> </span>// mouse x controls the wavetable position</p>
68 <p class="p6"><span class="Apple-tab-span"> </span>x = <span class="s2">MouseX</span>.kr(0,7);</p>
69 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">Out</span>.ar(out,</p>
70 <p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s2">VOsc3</span>.ar(bufoffset+x, freq+[0,1],freq+[0.37,1.1],freq+[0.43, -0.29], 0.3)</p>
71 <p class="p6"><span class="Apple-tab-span"> </span>)</p>
72 <p class="p6">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufoffset</span>, 0]);</p>
73 <p class="p6">)</p>
74 <p class="p5"><br></p>
75 <p class="p6">(</p>
76 <p class="p6">8.do({ <span class="s2">arg</span> i;</p>
77 <p class="p6"><span class="Apple-tab-span"> </span>var a;</p>
78 <p class="p6"><span class="Apple-tab-span"> </span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
79 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// generate array of harmonic amplitudes</p>
80 <p class="p6"><span class="Apple-tab-span"> </span>a = <span class="s2">Array</span>.fill(i, 0) ++ [0.5, 1, 0.5];</p>
81 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// fill table</p>
82 <p class="p6"><span class="Apple-tab-span"> </span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
83 <p class="p6">});</p>
84 <p class="p6">)</p>
85 <p class="p5"><br></p>
86 <p class="p6">(</p>
87 <p class="p6">8.do({ <span class="s2">arg</span> i;</p>
88 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">var</span> a, n;</p>
89 <p class="p6"><span class="Apple-tab-span"> </span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
90 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// generate array of harmonic amplitudes</p>
91 <p class="p7"><span class="Apple-tab-span"> </span>n = (i+1)*8;</p>
92 <p class="p6"><span class="Apple-tab-span"> </span>a = <span class="s2">Array</span>.fill(n,0);</p>
93 <p class="p6"><span class="Apple-tab-span"> </span>(n&gt;&gt;1).do({ <span class="s2">arg</span> i; a.put(n.rand, 1) });</p>
94 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// fill table</p>
95 <p class="p6"><span class="Apple-tab-span"> </span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
96 <p class="p6">});</p>
97 <p class="p6">)</p>
98 <p class="p5"><br></p>
99 <p class="p6">(</p>
100 <p class="p6">8.do({ <span class="s2">arg</span> i;</p>
101 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">var</span> a;</p>
102 <p class="p6"><span class="Apple-tab-span"> </span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
103 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// generate array of harmonic amplitudes</p>
104 <p class="p6"><span class="Apple-tab-span"> </span>n = (i+1)**2;</p>
105 <p class="p6"><span class="Apple-tab-span"> </span>a = <span class="s2">Array</span>.fill(n, { <span class="s2">arg</span> j; 1.0.rand2 });</p>
106 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// fill table</p>
107 <p class="p6"><span class="Apple-tab-span"> </span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
108 <p class="p6">});</p>
109 <p class="p6">)</p>
110 <p class="p5"><br></p>
111 <p class="p6">(</p>
112 <p class="p6">var a;</p>
113 <p class="p6">a = <span class="s2">Array</span>.fill(64, { <span class="s2">arg</span> j; 1.0.rand2 });</p>
114 <p class="p6">8.do({ <span class="s2">arg</span> i;</p>
115 <p class="p6"><span class="Apple-tab-span"> </span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
116 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// generate array of harmonic amplitudes</p>
117 <p class="p6"><span class="Apple-tab-span"> </span>n = (i+1)**2;</p>
118 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// fill table</p>
119 <p class="p6"><span class="Apple-tab-span"> </span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a.extend(n.asInteger));</p>
120 <p class="p6">});</p>
121 <p class="p6">)</p>
122 <p class="p5"><br></p>
123 <p class="p6">(</p>
124 <p class="p6">var a;</p>
125 <p class="p6">a = <span class="s2">Array</span>.fill(64, { <span class="s2">arg</span> j; 1/(j+1) });</p>
126 <p class="p6">8.do({ <span class="s2">arg</span> i;</p>
127 <p class="p6"><span class="Apple-tab-span"> </span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
128 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// generate array of harmonic amplitudes</p>
129 <p class="p6"><span class="Apple-tab-span"> </span>n = (i+1)**2;</p>
130 <p class="p7"><span class="s3"><span class="Apple-tab-span"> </span></span>// fill table</p>
131 <p class="p6"><span class="Apple-tab-span"> </span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a.extend(n.asInteger));</p>
132 <p class="p6">});</p>
133 <p class="p6">)</p>
134 <p class="p5"><br></p>
135 <p class="p5"><br></p>
136 </body>
137 </html>