editors: avoid IDE-specific overwrites by introducing IDE actions
[supercollider.git] / Help / UGens / Triggers / Phasor.html
bloba2759ebb4ca49008bc24ddd05af23e491de94cbf
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: 12.0px Helvetica}
11 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
12 p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
13 p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
14 p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
15 p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1}
16 p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
17 span.s1 {font: 18.0px Helvetica}
18 span.s2 {font: 9.0px Monaco}
19 span.s3 {color: #0018f7}
20 span.s4 {color: #091fb1}
21 span.s5 {color: #000000}
22 span.Apple-tab-span {white-space:pre}
23 </style>
24 </head>
25 <body>
26 <p class="p1"><span class="s1"><b>Phasor</b></span><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><b>a resettable linear ramp between two levels</b></p>
27 <p class="p2"><br></p>
28 <p class="p1"><b>superclass: UGen</b></p>
29 <p class="p3"><br></p>
30 <p class="p1">Phasor is a linear ramp between start and end values. When its trigger input crosses from non-positive to positive, Phasor's output will jump to its reset position. Upon reaching the end of its ramp Phasor will wrap back to its start. <b>N.B.</b> Since <b>end</b> is defined as the wrap point, its value is never actually output.</p>
31 <p class="p3"><br></p>
32 <p class="p1">Phasor is commonly used as an index control with <a href="../Oscillators/BufRd.html"><span class="s3">BufRd</span></a><b> </b>and<b> </b><a href="../Oscillators/BufWr.html"><span class="s3">BufWr</span></a>.</p>
33 <p class="p3"><br></p>
34 <p class="p3"><b><span class="Apple-tab-span"> </span></b></p>
35 <p class="p1"><b><span class="Apple-tab-span"> </span>*ar(trig, rate, start, end, resetPos)</b></p>
36 <p class="p1"><b><span class="Apple-tab-span"> </span>*kr(trig, rate, start, end, resetPos)</b></p>
37 <p class="p3"><br></p>
38 <p class="p1"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><b>trig</b></p>
39 <p class="p1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>when triggered, reset value to resetPos (default: 0, Phasor outputs start initially)</p>
40 <p class="p1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b>rate</b></p>
41 <p class="p1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>the amount of change per sample</p>
42 <p class="p1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.e at a rate of 1 the value of each sample will be 1 greater than the preceding sample</p>
43 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
44 <p class="p1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b>start, end</b></p>
45 <p class="p1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>start and end points of ramp.<span class="Apple-converted-space"> </span></p>
46 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
47 <p class="p1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b>resetPos</b></p>
48 <p class="p1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>the value to jump to upon receiving a trigger.</p>
49 <p class="p3"><br></p>
50 <p class="p2"><br></p>
51 <p class="p2"><span class="Apple-tab-span"> </span></p>
52 <p class="p4">// phasor controls sine frequency: end frequency matches a second sine wave.</p>
53 <p class="p2"><br></p>
54 <p class="p5">(</p>
55 <p class="p5">{ <span class="s4">var</span> trig, rate, x, sr;</p>
56 <p class="p5"><span class="Apple-tab-span"> </span>rate = <span class="s4">MouseX</span>.kr(0.2, 2, 1);</p>
57 <p class="p5"><span class="Apple-tab-span"> </span>trig = <span class="s4">Impulse</span>.ar(rate);</p>
58 <p class="p5"><span class="Apple-tab-span"> </span>sr = <span class="s4">SampleRate</span>.ir;</p>
59 <p class="p5"><span class="Apple-tab-span"> </span>x = <span class="s4">Phasor</span>.ar(trig, rate / sr);</p>
60 <p class="p6"><span class="s5"><span class="Apple-tab-span"> </span></span>SinOsc<span class="s5">.ar(</span></p>
61 <p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>[</p>
62 <p class="p4"><span class="s5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s4">LinLin</span><span class="s5">.kr(x, 0, 1, 600, 1000), </span>// convert range from 0..1 to 600..1000</p>
63 <p class="p4"><span class="s5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>1000 </span>// constant second frequency</p>
64 <p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>], 0, 0.2)</p>
65 <p class="p2"><br></p>
66 <p class="p5">}.play;</p>
67 <p class="p5">)</p>
68 <p class="p2"><br></p>
69 <p class="p2"><br></p>
70 <p class="p4">// two phasors control two sine frequencies: mouse y controls resetPos of the second</p>
71 <p class="p5">(</p>
72 <p class="p5">{ <span class="s4">var</span> trig, rate, x, sr;</p>
73 <p class="p5"><span class="Apple-tab-span"> </span>rate = <span class="s4">MouseX</span>.kr(1, 200, 1);</p>
74 <p class="p5"><span class="Apple-tab-span"> </span>trig = <span class="s4">Impulse</span>.ar(rate);</p>
75 <p class="p5"><span class="Apple-tab-span"> </span>sr = <span class="s4">SampleRate</span>.ir;</p>
76 <p class="p5"><span class="Apple-tab-span"> </span>x = <span class="s4">Phasor</span>.ar(trig, rate / sr, 0, 1, [0, <span class="s4">MouseY</span>.kr(0, 1)]);</p>
77 <p class="p5"><span class="Apple-tab-span"> </span><span class="s4">SinOsc</span>.ar(x * 500 + 500, 0, 0.2)</p>
78 <p class="p5">}.play;</p>
79 <p class="p5">)</p>
80 <p class="p2"><br></p>
81 <p class="p2"><br></p>
82 <p class="p4">// use phasor to index into a sound file</p>
83 <p class="p2"><br></p>
84 <p class="p4">// allocate a buffer with a sound file</p>
85 <p class="p7"><span class="s5">b = </span><span class="s4">Buffer</span><span class="s5">.read(s, </span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
86 <p class="p2"><br></p>
87 <p class="p4">// simple playback (more examples: see BufRd)</p>
88 <p class="p4">// Start and end here are defined as 0 and the number of frames in the buffer.</p>
89 <p class="p4">// This means that the Phasor will output values from 0 to numFrames - 1 before looping,</p>
90 <p class="p4">// which is perfect for driving BufRd. (See note above)</p>
91 <p class="p5">{ <span class="s4">BufRd</span>.ar(1, b, <span class="s4">Phasor</span>.ar(0, <span class="s4">BufRateScale</span>.kr(b), 0, <span class="s4">BufFrames</span>.kr(b))) }.play;</p>
92 <p class="p2"><br></p>
93 <p class="p2"><br></p>
94 <p class="p4">// two phasors control two sound file positions: mouse y controls resetPos of the second</p>
95 <p class="p5">(</p>
96 <p class="p5">{ <span class="s4">var</span> trig, rate, framesInBuffer;</p>
97 <p class="p5"><span class="Apple-tab-span"> </span>rate = <span class="s4">MouseX</span>.kr(0.1, 100, 1);</p>
98 <p class="p5"><span class="Apple-tab-span"> </span>trig = <span class="s4">Impulse</span>.ar(rate);</p>
99 <p class="p5"><span class="Apple-tab-span"> </span>framesInBuffer = <span class="s4">BufFrames</span>.kr(b);</p>
100 <p class="p5"><span class="Apple-tab-span"> </span>x = <span class="s4">Phasor</span>.ar(trig, <span class="s4">BufRateScale</span>.kr(b), 0, framesInBuffer,<span class="Apple-converted-space"> </span></p>
101 <p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>[0, <span class="s4">MouseY</span>.kr(0, framesInBuffer)]);</p>
102 <p class="p5"><span class="Apple-tab-span"> </span><span class="s4">BufRd</span>.ar(1, b, x);</p>
103 <p class="p5">}.play;</p>
104 <p class="p5">)</p>
105 <p class="p2"><br></p>
106 <p class="p2"><br></p>
107 <p class="p2"><br></p>
108 </body>
109 </html>