[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[sc-dev] SF.net SVN: supercollider:[8213] trunk
Revision: 8213
http://supercollider.svn.sourceforge.net/supercollider/?rev=8213&view=rev
Author: danstowell
Date: 2008-12-19 16:08:00 +0000 (Fri, 19 Dec 2008)
Log Message:
-----------
PlayBuf add doneAction
Modified Paths:
--------------
trunk/Source/plugins/DelayUGens.cpp
trunk/build/Help/UGens/Playback and Recording/PlayBuf.html
trunk/build/Help/UGens/Playback and Recording/RecordBuf.html
trunk/build/SCClassLibrary/Common/Audio/BufIO.sc
Modified: trunk/Source/plugins/DelayUGens.cpp
===================================================================
--- trunk/Source/plugins/DelayUGens.cpp 2008-12-19 14:57:07 UTC (rev 8212)
+++ trunk/Source/plugins/DelayUGens.cpp 2008-12-19 16:08:00 UTC (rev 8213)
@@ -977,6 +977,7 @@
phase += ZXP(ratein);
}
+ if(unit->mDone) { DoneAction((int)ZIN0(5), unit); }
unit->m_phase = phase;
unit->m_prevtrig = prevtrig;
}
@@ -1020,6 +1021,7 @@
phase += ZXP(ratein);
}
+ if(unit->mDone) { DoneAction((int)ZIN0(5), unit); }
unit->m_phase = phase;
}
@@ -1046,6 +1048,7 @@
phase += rate;
}
+ if(unit->mDone) { DoneAction((int)ZIN0(5), unit); }
unit->m_phase = phase;
}
@@ -1075,6 +1078,7 @@
phase += rate;
}
+ if(unit->mDone) { DoneAction((int)ZIN0(5), unit); }
unit->m_phase = phase;
unit->m_prevtrig = prevtrig;
}
Modified: trunk/build/Help/UGens/Playback and Recording/PlayBuf.html
===================================================================
--- trunk/build/Help/UGens/Playback and Recording/PlayBuf.html 2008-12-19 14:57:07 UTC (rev 8212)
+++ trunk/build/Help/UGens/Playback and Recording/PlayBuf.html 2008-12-19 16:08:00 UTC (rev 8213)
@@ -5,21 +5,22 @@
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
+<meta name="CocoaVersion" content="824.48">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
+p.p5 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bb0e03}
span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0000bf}
+span.s2 {color: #001bfd}
+span.s3 {color: #0013fe}
span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.s6 {color: #007300}
+span.s5 {color: #000ebe}
+span.s6 {color: #606060}
+span.s7 {color: #167209}
span.Apple-tab-span {white-space:pre}
</style>
</head>
@@ -30,7 +31,7 @@
<p class="p4">Plays back a sample resident in memory.</p>
<p class="p3"><br></p>
<p class="p3"><br></p>
-<p class="p4"><b>PlayBuf.ar(numChannels,bufnum,rate,trigger,startPos,loop)</b></p>
+<p class="p4"><b>PlayBuf.ar(numChannels,bufnum,rate,trigger,startPos,loop,doneAction)</b></p>
<p class="p3"><br></p>
<p class="p4"><span class="Apple-tab-span"> </span><b>numChannels</b> - number of channels that the buffer will be.</p>
<p class="p4"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>this must be a fixed integer. The architechture of the SynthDef</p>
@@ -49,100 +50,102 @@
<p class="p4"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>A trigger occurs when a signal changes from <= 0 to > 0.</p>
<p class="p4"><span class="Apple-tab-span"> </span><b>startPos</b> - sample frame to start playback.</p>
<p class="p4"><span class="Apple-tab-span"> </span><b>loop</b> <span class="Apple-converted-space"> </span>- 1 means true, 0 means false.<span class="Apple-converted-space"> </span>this is modulate-able.</p>
+<p class="p5"><span class="Apple-tab-span"> </span><b>doneAction</b> - an integer representing an action to be executed when the buffer is finished playing. This can be used to free the enclosing synth, etc. See <a href="../Synth control/Envelopes/UGen-doneActions.html"><span class="s2">UGen-doneActions</span></a> for more detail.</p>
<p class="p3"><br></p>
-<p class="p4"><b>See also:</b> <a href="DiskIn.html"><span class="s2">DiskIn</span></a>, <a href="../Oscillators/BufRd.html"><span class="s2">BufRd</span></a></p>
+<p class="p4"><b>See also:</b> <a href="DiskIn.html"><span class="s3">DiskIn</span></a>, <a href="../Oscillators/BufRd.html"><span class="s3">BufRd</span></a></p>
<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p6">s.boot // Boot the server, if you need to<span class="Apple-converted-space"> </span></p>
+<p class="p2"><br></p>
<p class="p7">// read a whole sound into memory</p>
-<p class="p6">s = <span class="s3">Server</span>.local;</p>
<p class="p7">// note: not *that* columbia, the first one</p>
-<p class="p7"><span class="s4">b = </span><span class="s3">Buffer</span><span class="s4">.read(s,</span><span class="s5">"sounds/a11wlk01.wav"</span><span class="s4">); </span>// remember to free the buffer later.</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s5">"help_PlayBuf"</span>, { <span class="s3">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">PlayBuf</span>.ar(1, bufnum, <span class="s3">BufRateScale</span>.kr(bufnum))</p>
+<p class="p7"><span class="s4">b = </span><span class="s5">Buffer</span><span class="s4">.read(s,</span><span class="s6">"sounds/a11wlk01.wav"</span><span class="s4">); </span>// remember to free the buffer later.</p>
+<p class="p2"><br></p>
+<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">"help_PlayBuf"</span>, { <span class="s5">arg</span> out=0,bufnum=0;</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">Out</span>.ar(out,</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s5">PlayBuf</span>.ar(1, bufnum, <span class="s5">BufRateScale</span>.kr(bufnum), doneAction:2)</p>
<p class="p6"><span class="Apple-tab-span"> </span>)</p>
-<p class="p6">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
+<p class="p6">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\bufnum</span>, b]);</p>
<p class="p2"><br></p>
+<p class="p4">In the above example, note how the doneAction:2 causes the synth to free itself when the buffer reaches its end.</p>
+<p class="p3"><br></p>
<p class="p4">Note again that the number of channels must be fixed for the SynthDef. It cannot vary depending on which buffer you use.</p>
<p class="p2"><br></p>
-<p class="p5"><br></p>
+<p class="p2"><br></p>
<p class="p7">// loop is true</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s5">"help_PlayBuf"</span>, { <span class="s3">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">PlayBuf</span>.ar(1, bufnum, <span class="s3">BufRateScale</span>.kr(bufnum), loop: 1.0)</p>
+<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">"help_PlayBuf"</span>, { <span class="s5">arg</span> out=0,bufnum=0;</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">Out</span>.ar(out,</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s5">PlayBuf</span>.ar(1, bufnum, <span class="s5">BufRateScale</span>.kr(bufnum), loop: 1.0)</p>
<p class="p6"><span class="Apple-tab-span"> </span>)</p>
-<p class="p6">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
+<p class="p6">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\bufnum</span>, b]);</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
<p class="p7">// trigger one shot on each pulse</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s5">"help_PlayBuf"</span>, { <span class="s3">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">var</span> trig;</p>
-<p class="p6"><span class="Apple-tab-span"> </span>trig = <span class="s3">Impulse</span>.kr(2.0);</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">PlayBuf</span>.ar(1, bufnum, <span class="s3">BufRateScale</span>.kr(bufnum), trig, 0, 0)</p>
+<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">"help_PlayBuf"</span>, { <span class="s5">arg</span> out=0,bufnum=0;</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">var</span> trig;</p>
+<p class="p6"><span class="Apple-tab-span"> </span>trig = <span class="s5">Impulse</span>.kr(2.0);</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">Out</span>.ar(out,</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s5">PlayBuf</span>.ar(1, bufnum, <span class="s5">BufRateScale</span>.kr(bufnum), trig, 0, 0)</p>
<p class="p6"><span class="Apple-tab-span"> </span>)</p>
-<p class="p6">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
+<p class="p6">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\bufnum</span>, b]);</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
<p class="p7">// trigger one shot on each pulse</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s5">"help_PlayBuf"</span>, { <span class="s3">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">var</span> trig;</p>
-<p class="p6"><span class="Apple-tab-span"> </span>trig = <span class="s3">Impulse</span>.kr(<span class="s3">XLine</span>.kr(0.1, 100, 30));</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">PlayBuf</span>.ar(1, bufnum, <span class="s3">BufRateScale</span>.kr(bufnum), trig, 5000, 0)</p>
+<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">"help_PlayBuf"</span>, { <span class="s5">arg</span> out=0,bufnum=0;</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">var</span> trig;</p>
+<p class="p6"><span class="Apple-tab-span"> </span>trig = <span class="s5">Impulse</span>.kr(<span class="s5">XLine</span>.kr(0.1, 100, 30));</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">Out</span>.ar(out,</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s5">PlayBuf</span>.ar(1, bufnum, <span class="s5">BufRateScale</span>.kr(bufnum), trig, 5000, 0)</p>
<p class="p6"><span class="Apple-tab-span"> </span>)</p>
-<p class="p6">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
+<p class="p6">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\bufnum</span>, b]);</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
<p class="p7">// mouse control of trigger rate and startpos</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s5">"help_PlayBuf"</span>, { <span class="s3">arg</span> out=0, bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">var</span> trig;</p>
-<p class="p6"><span class="Apple-tab-span"> </span>trig = <span class="s3">Impulse</span>.kr(<span class="s3">MouseY</span>.kr(0.5,200,1));</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">PlayBuf</span>.ar(1, bufnum, <span class="s3">BufRateScale</span>.kr(bufnum), trig, <span class="s3">MouseX</span>.kr(0, <span class="s3">BufFrames</span>.kr(bufnum)), 1)</p>
+<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">"help_PlayBuf"</span>, { <span class="s5">arg</span> out=0, bufnum=0;</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">var</span> trig;</p>
+<p class="p6"><span class="Apple-tab-span"> </span>trig = <span class="s5">Impulse</span>.kr(<span class="s5">MouseY</span>.kr(0.5,200,1));</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">Out</span>.ar(out,</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s5">PlayBuf</span>.ar(1, bufnum, <span class="s5">BufRateScale</span>.kr(bufnum), trig, <span class="s5">MouseX</span>.kr(0, <span class="s5">BufFrames</span>.kr(bufnum)), 1)</p>
<p class="p6"><span class="Apple-tab-span"> </span>)</p>
-<p class="p6">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
+<p class="p6">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\bufnum</span>, b]);</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
<p class="p7">// accelerating pitch</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s5">"help_PlayBuf"</span>, { <span class="s3">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">var</span> rate;</p>
-<p class="p6"><span class="Apple-tab-span"> </span>rate = <span class="s3">XLine</span>.kr(0.1, 100, 60);</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">PlayBuf</span>.ar(1, bufnum, <span class="s3">BufRateScale</span>.kr(bufnum)*rate, 1.0, 0.0, 1.0)</p>
+<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">"help_PlayBuf"</span>, { <span class="s5">arg</span> out=0,bufnum=0;</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">var</span> rate;</p>
+<p class="p6"><span class="Apple-tab-span"> </span>rate = <span class="s5">XLine</span>.kr(0.1, 100, 60);</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s5">PlayBuf</span>.ar(1, bufnum, <span class="s5">BufRateScale</span>.kr(bufnum)*rate, 1.0, 0.0, 1.0)</p>
<p class="p6"><span class="Apple-tab-span"> </span>)</p>
-<p class="p6">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
+<p class="p6">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\bufnum</span>, b]);</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
<p class="p7">// sine wave control of playback rate. negative rate plays backwards</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s5">"help_PlayBuf"</span>, { <span class="s3">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">var</span> rate;</p>
-<p class="p6"><span class="Apple-tab-span"> </span>rate = <span class="s3">FSinOsc</span>.kr(<span class="s3">XLine</span>.kr(0.2, 8, 30), 0, 3, 0.6);</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">PlayBuf</span>.ar(1, bufnum, <span class="s3">BufRateScale</span>.kr(bufnum) * rate, 1, 0, 1)</p>
+<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">"help_PlayBuf"</span>, { <span class="s5">arg</span> out=0,bufnum=0;</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">var</span> rate;</p>
+<p class="p6"><span class="Apple-tab-span"> </span>rate = <span class="s5">FSinOsc</span>.kr(<span class="s5">XLine</span>.kr(0.2, 8, 30), 0, 3, 0.6);</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">Out</span>.ar(out,</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s5">PlayBuf</span>.ar(1, bufnum, <span class="s5">BufRateScale</span>.kr(bufnum) * rate, 1, 0, 1)</p>
<p class="p6"><span class="Apple-tab-span"> </span>)</p>
-<p class="p6">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
+<p class="p6">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\bufnum</span>, b]);</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
<p class="p7">// zig zag around sound<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s5">"help_PlayBuf"</span>, { <span class="s3">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">var</span> rate;</p>
-<p class="p6"><span class="Apple-tab-span"> </span>rate = <span class="s3">LFNoise2</span>.kr(<span class="s3">XLine</span>.kr(1, 20, 60), 2);</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s3">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">PlayBuf</span>.ar(1, bufnum, <span class="s3">BufRateScale</span>.kr(bufnum) * rate, 1, 0, 1)</p>
+<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">"help_PlayBuf"</span>, { <span class="s5">arg</span> out=0,bufnum=0;</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">var</span> rate;</p>
+<p class="p6"><span class="Apple-tab-span"> </span>rate = <span class="s5">LFNoise2</span>.kr(<span class="s5">XLine</span>.kr(1, 20, 60), 2);</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="s5">Out</span>.ar(out,</p>
+<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s5">PlayBuf</span>.ar(1, bufnum, <span class="s5">BufRateScale</span>.kr(bufnum) * rate, 1, 0, 1)</p>
<p class="p6"><span class="Apple-tab-span"> </span>)</p>
-<p class="p6">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
+<p class="p6">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\bufnum</span>, b]);</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
<p class="p6">b.free;</p>
</body>
</html>
Modified: trunk/build/Help/UGens/Playback and Recording/RecordBuf.html
===================================================================
--- trunk/build/Help/UGens/Playback and Recording/RecordBuf.html 2008-12-19 14:57:07 UTC (rev 8212)
+++ trunk/build/Help/UGens/Playback and Recording/RecordBuf.html 2008-12-19 16:08:00 UTC (rev 8213)
@@ -12,17 +12,16 @@
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
p.p5 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0024ed}
-span.s2 {color: #0013fe}
-span.s3 {color: #0000bf}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bb0e03}
+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
+p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
+span.s1 {color: #0029ec}
+span.s2 {color: #001bfd}
+span.s3 {color: #000ebe}
span.s4 {color: #000000}
span.s5 {color: #606060}
-span.s6 {color: #007300}
-span.s7 {color: #bf0000}
+span.s6 {color: #167209}
+span.s7 {color: #bb0e03}
span.Apple-tab-span {white-space:pre}
</style>
</head>
@@ -46,7 +45,7 @@
<p class="p3"><span class="Apple-tab-span"> </span><b>loop</b><span class="Apple-converted-space"> </span>- If zero then don't loop, otherwise do.<span class="Apple-converted-space"> </span>This is modulate-able. Default is 1.</p>
<p class="p3"><span class="Apple-tab-span"> </span><b>trigger</b> - a trigger causes a jump to the <b>offset</b> position in the Buffer.<span class="Apple-converted-space"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>A trigger occurs when a signal changes from <= 0 to > 0.</p>
-<p class="p5"><span class="Apple-tab-span"> </span><b>doneAction</b> - an integer representing an action to be executed when the env is finished playing. This can be used to free the enclosing synth, etc. See <a href="../Synth control/Envelopes/UGen-doneActions.html"><span class="s2">UGen-doneActions</span></a> for more detail.</p>
+<p class="p5"><span class="Apple-tab-span"> </span><b>doneAction</b> - an integer representing an action to be executed when the buffer is finished playing. This can be used to free the enclosing synth, etc. See <a href="../Synth control/Envelopes/UGen-doneActions.html"><span class="s2">UGen-doneActions</span></a> for more detail.</p>
<p class="p2"><br></p>
<p class="p2"><br></p>
<p class="p6">// Execute the following in order</p>
@@ -55,7 +54,7 @@
<p class="p7">s = <span class="s3">Server</span>.local;</p>
<p class="p6"><span class="s4">b = </span><span class="s3">Buffer</span><span class="s4">.alloc(s, 44100 * 4.0, 1); </span>// a four second 1 channel Buffer</p>
<p class="p7">)</p>
-<p class="p8"><br></p>
+<p class="p2"><br></p>
<p class="p6">// record for four seconds</p>
<p class="p7">(</p>
<p class="p7"><span class="s3">SynthDef</span>(<span class="s5">"help-RecordBuf"</span>,{ <span class="s3">arg</span> out=0,bufnum=0;</p>
@@ -65,33 +64,33 @@
<p class="p7"><span class="Apple-tab-span"> </span><span class="s3">RecordBuf</span>.ar(formant, bufnum);</p>
<p class="p7">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
<p class="p7">)</p>
-<p class="p8"><br></p>
+<p class="p2"><br></p>
<p class="p6">// play it back</p>
<p class="p7">(</p>
-<p class="p9"><span class="s3">SynthDef</span><span class="s4">(</span>"help-RecordBuf play"<span class="s4">,{ </span><span class="s3">arg</span><span class="s4"> out=0,bufnum=0;</span></p>
+<p class="p8"><span class="s3">SynthDef</span><span class="s4">(</span>"help-RecordBuf play"<span class="s4">,{ </span><span class="s3">arg</span><span class="s4"> out=0,bufnum=0;</span></p>
<p class="p7"><span class="Apple-tab-span"> </span><span class="s3">var</span> playbuf;</p>
<p class="p7"><span class="Apple-tab-span"> </span>playbuf = <span class="s3">PlayBuf</span>.ar(1,bufnum);</p>
<p class="p6"><span class="s4"><span class="Apple-tab-span"> </span></span><span class="s3">FreeSelfWhenDone</span><span class="s4">.kr(playbuf); </span>// frees the synth when the PlayBuf is finished</p>
<p class="p7"><span class="Apple-tab-span"> </span><span class="s3">Out</span>.ar(out, playbuf);</p>
<p class="p7">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
<p class="p7">)</p>
-<p class="p8"><br></p>
+<p class="p2"><br></p>
<p class="p6">// overdub</p>
<p class="p7">(</p>
-<p class="p9"><span class="s3">SynthDef</span><span class="s4">(</span>"help-RecordBuf overdub"<span class="s4">,{ </span><span class="s3">arg</span><span class="s4"> out=0,bufnum=0;</span></p>
+<p class="p8"><span class="s3">SynthDef</span><span class="s4">(</span>"help-RecordBuf overdub"<span class="s4">,{ </span><span class="s3">arg</span><span class="s4"> out=0,bufnum=0;</span></p>
<p class="p7"><span class="Apple-tab-span"> </span><span class="s3">var</span> formant;</p>
<p class="p6"><span class="s4"><span class="Apple-tab-span"> </span></span>// XLine will free the Synth when done</p>
<p class="p7"><span class="Apple-tab-span"> </span>formant = <span class="s3">Formant</span>.ar(<span class="s3">XLine</span>.kr(200, 1000, 4, doneAction: 2), 2000, 800, 0.125);</p>
<p class="p7"><span class="Apple-tab-span"> </span><span class="s3">RecordBuf</span>.ar(formant, bufnum, 0, 0.5, 0.5); <span class="s7">// mixes equally with existing data</span></p>
<p class="p7">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
<p class="p7">)</p>
-<p class="p8"><br></p>
+<p class="p2"><br></p>
<p class="p6">// play back the overdubbed version</p>
<p class="p7"><span class="s3">Synth</span>.new(<span class="s5">"help-RecordBuf play"</span>, [<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b], s);</p>
-<p class="p8"><br></p>
+<p class="p2"><br></p>
<p class="p6">// write the contents of the buffer to a file</p>
<p class="p7">b.write(<span class="s5">"~/RecordBuf-test.aiff"</span>.standardizePath, sampleFormat: <span class="s6">'int16'</span>);</p>
-<p class="p8"><br></p>
+<p class="p2"><br></p>
<p class="p7">b.close; b.free; <span class="s7">// cleanup</span></p>
<p class="p2"><br></p>
<p class="p3">Note again that the number of channels must be fixed for the SynthDef, it cannot vary depending on which buffer you use.</p>
Modified: trunk/build/SCClassLibrary/Common/Audio/BufIO.sc
===================================================================
--- trunk/build/SCClassLibrary/Common/Audio/BufIO.sc 2008-12-19 14:57:07 UTC (rev 8212)
+++ trunk/build/SCClassLibrary/Common/Audio/BufIO.sc 2008-12-19 16:08:00 UTC (rev 8213)
@@ -3,12 +3,12 @@
*/
PlayBuf : MultiOutUGen {
- *ar { arg numChannels, bufnum=0, rate=1.0, trigger=1.0, startPos=0.0, loop = 0.0;
- ^this.multiNew('audio', numChannels, bufnum, rate, trigger, startPos, loop)
+ *ar { arg numChannels, bufnum=0, rate=1.0, trigger=1.0, startPos=0.0, loop = 0.0, doneAction=0;
+ ^this.multiNew('audio', numChannels, bufnum, rate, trigger, startPos, loop, doneAction)
}
- *kr { arg numChannels, bufnum=0, rate=1.0, trigger=1.0, startPos=0.0, loop = 0.0;
- ^this.multiNew('control', numChannels, bufnum, rate, trigger, startPos, loop)
+ *kr { arg numChannels, bufnum=0, rate=1.0, trigger=1.0, startPos=0.0, loop = 0.0, doneAction=0;
+ ^this.multiNew('control', numChannels, bufnum, rate, trigger, startPos, loop, doneAction)
}
init { arg argNumChannels ... theInputs;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
_______________________________________________
sc-dev mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-dev/
search: https://listarc.bham.ac.uk/lists/sc-dev/search/