[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sc-dev] SF.net SVN: supercollider:[8221] trunk/build



Revision: 8221
          http://supercollider.svn.sourceforge.net/supercollider/?rev=8221&view=rev
Author:   rkuivila
Date:     2008-12-20 15:10:13 +0000 (Sat, 20 Dec 2008)

Log Message:
-----------
Help files for Pbind and Pspawner updated. (Pbind help file includes
slightly reorganized information on Event.)

Ref modifications:
	Ref:embedInStream returns self, allowing Refs to be used
to prevent multi-channel expansion in Patterns
	Ref:asControlInput returns value, so Refs will work as control
values in an Event
	at, put, and seq methods defined.  They can be used to simplify
Proutine syntax. For example:
	Pbind(\freq, Proutine({ | ev | ev = `ev;
	10.do {
		ev.seq([100, Pseq((1..16)) * 100].choose);
	}})
	)

Modified Paths:
--------------
    trunk/build/Help/Core/Ref.html
    trunk/build/Help/Streams-Patterns-Events/Pbind.html
    trunk/build/Help/Streams-Patterns-Events/Pspawner.html
    trunk/build/SCClassLibrary/Common/Core/AbstractFunction.sc
    trunk/build/SCClassLibrary/Common/Core/Ref.sc
    trunk/build/SCClassLibrary/Common/Streams/Pspawner.sc

Modified: trunk/build/Help/Core/Ref.html
===================================================================
--- trunk/build/Help/Core/Ref.html	2008-12-20 13:13:53 UTC (rev 8220)
+++ trunk/build/Help/Core/Ref.html	2008-12-20 15:10:13 UTC (rev 8221)
@@ -5,19 +5,27 @@
 <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="949.35">
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
 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: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #942b17}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #783222}
 p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
 p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-span.s1 {color: #001fb3}
+p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
+p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
+p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
+p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
+span.s1 {color: #072aad}
 span.s2 {color: #000000}
 span.s3 {text-decoration: underline}
 span.s4 {font: 12.0px Monaco}
+span.s5 {font: 9.0px Monaco}
+span.s6 {color: #062aaf}
+span.s7 {color: #606060}
+span.s8 {color: #0000bf}
 span.Apple-tab-span {white-space:pre}
 </style>
 </head>
@@ -25,12 +33,15 @@
 <p class="p1"><b>Ref<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a reference to a value</b></p>
 <p class="p2"><b>superclass: AbstractFunction</b></p>
 <p class="p3"><br></p>
-<p class="p2">A Ref<span class="Apple-converted-space">  </span>instance is an object with a single slot named 'value' that serves as a holder of<span class="Apple-converted-space">  </span>an object. Ref.new(object) one way to create a Ref, but there is a syntactic shortcut. The backquote ` is a unary operator that is equivalent to calling Ref.new(something).</p>
-<p class="p2">It is not to be confused with the C terminology of "a reference".</p>
+<p class="p2">A Ref holds an object which may be retrieved and altered with the messages <b>value </b>and <b>value_(obj)</b>.<span class="Apple-converted-space">   </span></p>
+<p class="p2">The backquote ` is a unary operator that is equivalent to calling Ref.new(obj).</p>
 <p class="p3"><br></p>
+<p class="p2">Refs are most commonly used to prevent <i>multi-channel </i>expansion in SynthDefs and Patterns (see <b>Klank </b>for an example).</p>
+<p class="p2">Refs can also be used to simplify the coding of co-routines used in EventStreams (see <b>Proutine </b>for an example).</p>
+<p class="p3"><br></p>
 <p class="p2">example:<span class="Apple-converted-space">   </span></p>
 <p class="p3"><br></p>
-<p class="p4">x = <span class="s1">Ref</span>.new(<span class="s1">nil</span>);</p>
+<p class="p4">x = <span class="s1">Ref</span>(<span class="s1">nil</span>);</p>
 <p class="p5"><span class="s2">z = obj.method(x);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// method puts something in reference</p>
 <p class="p5"><span class="s2">x.value.doSomething;<span class="Apple-tab-span">	</span></span>// retrieve value and use it</p>
 <p class="p6"><br></p>
@@ -48,29 +59,84 @@
 <p class="p3"><br></p>
 <p class="p7"><b><span class="s3">Instance methods:</span></b></p>
 <p class="p3"><br></p>
+<p class="p2"><b>dereference</b></p>
+<p class="p3"><br></p>
+<p class="p2"><span class="Apple-tab-span">	</span>Answer the value. This message is also defined in class Object where it just returns the receiver.<span class="Apple-converted-space">  </span>Therefore <span class="s4">anything.dereference</span> will remove a Ref if there is one. This is slightly different than the value message, because value will also cause functions to evaluate themselves whereas dereference will not.</p>
+<p class="p3"><br></p>
+<p class="p2"><b>asRef</b></p>
+<p class="p3"><br></p>
+<p class="p2"><span class="Apple-tab-span">	</span>Answers the receiver. In class Object this message is defined to create a Ref of the object.</p>
+<p class="p3"><br></p>
 <p class="p2"><b>value</b></p>
 <p class="p3"><br></p>
-<p class="p2">Answer the value.</p>
+<p class="p2"><span class="Apple-tab-span">	</span>Returns value.</p>
 <p class="p3"><br></p>
 <p class="p2"><b>value_(aValue)</b></p>
 <p class="p3"><br></p>
-<p class="p2">set the value.</p>
+<p class="p2"><span class="Apple-tab-span">	</span>Sets value.</p>
 <p class="p3"><br></p>
 <p class="p2"><b>get</b></p>
 <p class="p3"><br></p>
-<p class="p2">Answer the value.</p>
+<p class="p2"><span class="Apple-tab-span">	</span>Returns value.</p>
 <p class="p3"><br></p>
 <p class="p2"><b>set(aValue)</b></p>
 <p class="p3"><br></p>
-<p class="p2">set the value.</p>
+<p class="p2"><span class="Apple-tab-span">	</span>Sets value.</p>
 <p class="p3"><br></p>
-<p class="p2"><b>dereference</b></p>
+<p class="p2"><b>at (index)</b></p>
+<p class="p2"><b><span class="Apple-tab-span">	</span></b>Returns value.at(index)</p>
 <p class="p3"><br></p>
-<p class="p2">Answer the value. This message is also defined in class Object where it just returns the receiver.<span class="Apple-converted-space">  </span>Therefore <span class="s4">anything.dereference</span> will remove a Ref if there is one. This is slightly different than the value message, because value will also cause functions to evaluate themselves whereas dereference will not.</p>
+<p class="p2"><b>put(index, value)</b></p>
+<p class="p2"><b><span class="Apple-tab-span">	</span></b>Executes value.put(index, value)</p>
+<p class="p3"><span class="Apple-tab-span">	</span></p>
+<p class="p2"><b>seq(output)</b></p>
+<p class="p2"><b><span class="Apple-tab-span">	</span></b>this method is used to return values from within a Routine definition</p>
+<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ this.value = output.embedInStream(this.value); }</p>
 <p class="p3"><br></p>
-<p class="p2"><b>asRef</b></p>
+<p class="p2"><b>asUGenInput</b></p>
+<p class="p2"><b><span class="Apple-tab-span">	</span></b>Returns the Ref - this prevents multi-channel expansion in a SynthDef</p>
+<p class="p3"><span class="Apple-tab-span">	</span></p>
+<p class="p2"><b>asControlInput</b></p>
+<p class="p2"><b><span class="Apple-tab-span">	</span></b>Returns the value - this is used when sending a Ref as a control value to a server Node.</p>
+<p class="p3"><span class="Apple-tab-span">	</span></p>
+<p class="p2"><b>Typical uses of Ref:</b></p>
 <p class="p3"><br></p>
-<p class="p2">Answers the receiver. In class Object this message is defined to create a Ref of the object.</p>
-<p class="p3"><br></p>
+<p class="p2"><b><span class="Apple-tab-span">	</span>preventing multi-channel expansion:</b></p>
+<p class="p8"><span class="Apple-tab-span">	</span></p>
+<p class="p2"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>Refs prevent multi-channel expansion in a SynthDef, so the array below defines one Klank UGen rather than three.</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
+<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s6">Klank</span>.ar(`[[800, 1071, 1153, 1723], <span class="s6">nil</span>, [1, 1, 1, 1]], <span class="s6">Impulse</span>.ar(2, 0, 0.1)) }.play;</p>
+<p class="p8"><span class="Apple-tab-span">	</span></p>
+<p class="p9"><br></p>
+<p class="p2"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>Refs also prevent multi-channel expansion in a Pattern. In this example, a SynthDef with an arrayed freq argument is defined and controlled</p>
+<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>with a pattern:</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
+<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SynthDef<span class="s2">(</span><span class="s7">"multi"</span><span class="s2">, { </span>| gate, out, freq = #[100,200,300], amp = 0.1, pan = 0|</p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">var</span> audio, env;</p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s8">Linen</span>.kr(gate, doneAction:2);</p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>audio = <span class="s8">Mix</span>(<span class="s8">Saw</span>.ar(freq));</p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>audio = <span class="s8">Pan2</span>.ar(audio * env, pan, amp);<span class="Apple-tab-span">	</span></p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">OffsetOut</span>.ar(out, audio)</p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).store</p>
+<p class="p9"><span class="Apple-tab-span">	</span></p>
+<p class="p9"><span class="Apple-tab-span">	</span></p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Pbind</span>(*[</p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq: <span class="s8">Prand</span>([ `[100, 101, 103], `[100,110, 190], `[100,100.1, 110], `[100,110, 120], ], <span class="s8">inf</span>) * 4,</p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>detune:<span class="Apple-tab-span">	</span><span class="s8">Pwhite</span>(-1.0,1.0),</p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur: 0.2,</p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sustain: 2</p>
+<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]).play</p>
+<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
+<p class="p2"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>The message <b>ref</b>, defined in AbstractFunction, converts the values specified by a Pattern, Stream or Function into Refs.<span class="Apple-converted-space">  </span>Thus, the previous</p>
+<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>example can also be written:</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
+<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Pbind</span>(*[</p>
+<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq: <span class="s8">Prand</span>([ [100, 101, 103], [100,110, 190], [100,100.1, 110], [100,110, 120], ], <span class="s8">inf</span>).ref * 4,</p>
+<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>detune:<span class="Apple-tab-span">	</span><span class="s8">Pwhite</span>(-1.0,1.0),</p>
+<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur: 0.2,</p>
+<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sustain: 2</p>
+<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]).play</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5"><span class="Apple-tab-span">	</span></span></p>
 </body>
 </html>

Modified: trunk/build/Help/Streams-Patterns-Events/Pbind.html
===================================================================
--- trunk/build/Help/Streams-Patterns-Events/Pbind.html	2008-12-20 13:13:53 UTC (rev 8220)
+++ trunk/build/Help/Streams-Patterns-Events/Pbind.html	2008-12-20 15:10:13 UTC (rev 8221)
@@ -5,26 +5,28 @@
 <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="949.35">
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
 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: 9.0px Monaco; color: #71371c}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-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: #153ea9}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #58622a}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8c2a18}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #71371c; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #71371c}
-span.s1 {color: #153ea9}
-span.s2 {color: #58622a}
-span.s3 {color: #000000}
-span.s4 {color: #0024f8}
-span.s5 {color: #606060}
-span.s6 {color: #0000ff}
-span.s7 {color: #71371c}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0014bc}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #a91616}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #603923}
+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
+p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
+p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2342a3}
+p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #5c602e}
+p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #722f22}
+p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #603923; min-height: 12.0px}
+span.s1 {color: #000000}
+span.s2 {color: #606060}
+span.s3 {color: #0014bc}
+span.s4 {color: #307109}
+span.s5 {color: #2342a3}
+span.s6 {color: #5c602e}
+span.s7 {color: #0026f7}
+span.s8 {color: #603923}
 span.Apple-tab-span {white-space:pre}
 </style>
 </head>
@@ -33,185 +35,259 @@
 <p class="p2"><br></p>
 <p class="p3"><b>superclass: Pattern</b></p>
 <p class="p2"><br></p>
-<p class="p3">Pbind(pattern pairs)</p>
+<p class="p3"><b>Pbind(key1, pattern1, key2, pattern2...)</b></p>
 <p class="p2"><br></p>
-<p class="p3">The class Pbind provides a bridge between value patterns and event patterns. It binds symbols in each event to values obtained from a pattern. Pbind takes arguments in pairs, the first of a pair being a Symbol and the second being a value Pattern. Any object can act as a Pattern, so constants can be used as values.</p>
+<p class="p3"><b>Pbind</b> is a pattern that specifies sequences of Events to generate music (or any other time based media, such as graphics). It works with <b>SynthDef</b> and <b>Event</b> to form SuperCollider's basic score language.<span class="Apple-converted-space">  </span>It is helpful to review the relation of SynthDef and Event before proceeding to a detailed discussion.</p>
 <p class="p2"><br></p>
+<p class="p3"><b>SynthDef and Event</b></p>
 <p class="p2"><br></p>
-<p class="p3">The Pbind stream returns nil whenever the first one of its streams ends or if nil is passed in.</p>
+<p class="p3">A <b>SynthDef</b> assigns a name to an interconnection of unit generators to be run as a synth on a server.<span class="Apple-converted-space">  </span>It also assigns <b>control</b> <b>names</b> to the synth's control inputs. In the following example the SynthDef <b>"test" </b>has control inputs <b>out, freq, amp, nharms, pan, </b>and <b>gate</b>. <span class="Apple-converted-space"> </span></p>
 <p class="p2"><br></p>
-<p class="p4">// example:</p>
-<p class="p5"><br></p>
-<p class="p6">a = <span class="s1">Pbind</span>(<span class="s2">\x</span>, 77, <span class="s2">\y</span>, <span class="s1">Pseq</span>([1, 2, 3]));</p>
-<p class="p6">x = a.asStream;</p>
-<p class="p6">4.do { x.next(<span class="s1">Event</span>.new).postln };</p>
+<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s1">( </span><span class="s2">"test"</span><span class="s1">, { </span>| out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1 |</p>
+<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var audio = Blip</span>.ar(freq, nharms, amp);</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var env = <span class="s3">Linen</span>.kr(gate, doneAction: 2);</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">OffsetOut</span>.ar(out, <span class="s3">Pan2</span>.ar(<span class="s3">audio</span>, pan, env) );</p>
+<p class="p3"><span class="Apple-tab-span">	</span>}).store;</p>
+<p class="p2"><span class="Apple-tab-span">	</span></p>
+<p class="p3">The SynthDef needs to be downloaded to the server upon which it is to be run. The method <b>store </b>(appended to the end of the SynthDef) guarantees that the synthdef will be loaded to any Servers that are running or subsequently started.<span class="Apple-converted-space">  </span>It also creates a <b>SynthDesc, </b>which describes the names and locations of the SynthDefs controls.</p>
 <p class="p2"><br></p>
-<p class="p6">a = <span class="s1">Pbind</span>(<span class="s2">\x</span>, 77, <span class="s2">\y</span>, <span class="s1">Pseq</span>([1, 2, 3]));</p>
-<p class="p6">x = a.asStream;</p>
-<p class="p4"><span class="s3">x.next; </span>// this returns nil.</p>
+<p class="p3">An <b>Event</b> is a Dictionary that specifies an action to be taken in response to <b>play </b>and a time increment to be returned in response to <b>delta</b>. Events can be written as a series of key value pairs enclosed in parentheses.<span class="Apple-converted-space">  </span>Empty parentheses<span class="Apple-converted-space">  </span>create an empty event.<span class="Apple-converted-space"> </span></p>
 <p class="p2"><br></p>
+<p class="p3">By default, Events play synths on a server. Such <i>note events</i> use the following keys:</p>
 <p class="p2"><br></p>
-<p class="p3">An <b><i>event stream</i></b> is created for a Pattern by sending it the <i>asEventStreamPlayer</i> message. The <i>asEventStreamPlayer</i> message takes an Event as an argument. This event is copied for each call to next to pass down and back up the tree of patterns so that each pattern can modify the event. What Pbind does is put the values for its symbols into the event, possibly overwriting previous bindings to those symbols.</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>instrument <span class="Apple-tab-span">	</span>(\default)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The synthdef to be played<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>(<b>Server.default</b>)<span class="Apple-tab-span">	</span>The server that plays the synth<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>group<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>( 1</b>)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The group that conatins the synth or synth it is placed before or after</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>addAction<span class="Apple-tab-span">	</span>(0)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>How the synth is placed relative to the target specified by <b>group</b></p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>delta<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(function)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The time until the next event in a sequence of events, generally specified</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>indirectly through <b>dur</b></p>
 <p class="p2"><br></p>
-<p class="p3">This uses the default event.<span class="Apple-converted-space">  </span>In the next example we will supply our own event (synth function).</p>
+<p class="p3">When the Event is played,<span class="Apple-converted-space">  </span>it creates an OSC command to play a synth.<span class="Apple-converted-space">  </span>It uses the name assigned to <b>instrument<span class="Apple-converted-space"> </span></b> to the select the SynthDef to be played.<span class="Apple-converted-space">  </span>The SynthDef's controlnames (found in its SynthDesc) are looked up in the event and the corresponding values included in the command.</p>
 <p class="p2"><br></p>
-<p class="p4">// example:</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([1,3,5,7], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.125,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>\octave<span class="s3">, 4,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>\root<span class="s3">, 3</span></p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">To use a SynthDef other than the default, we need to read the synth description library so that event knows what type of arguments the SynthDef has.<span class="Apple-converted-space">  </span>Use <b>.store</b> or <b>.memStore</b> (instead of load or send) to create a Synth Description (SynthDesc) and store it in the SynthDescLib. The difference between store and memStore is that store rights the synthdef file to disk so that the definition will be loaded automatically in the future. memStore makes the synthdef ready to use with event patterns, but does not write the file to disk.. See <a href="../ServerArchitecture/SynthDef.html"><span class="s4">SynthDef</span></a> help.</p>
+<p class="p3"><span class="Apple-converted-space"> </span>There are a number of coventional names typically used to identify controls in a synth.</p>
+<p class="p2"><span class="Apple-converted-space"> </span></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>output bus index</p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>input bus index<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(for filters, modulators, etc)</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gate<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>envelope gate (not level!) - should default to 1.0, deletes synth when released</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>trig<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>envelope gate (not level!) - should default to 1.0, does not delete synth when released</p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>panning position</p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufnum<span class="Apple-tab-span">	</span></b>buffer number (used in synths that utilize PlayBuf, DiskIn, etc)</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sustain<span class="Apple-tab-span">	</span></b>duration of the synth</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>amplitude of the synth</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>freq<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>base pitch of the synth</p>
 <p class="p2"><br></p>
-<p class="p3">Special <b>control name conventions</b><span class="Apple-converted-space">  </span>which should be used so that the SynthDef works with the default system:</p>
+<p class="p3">Event implements a layered specification scheme for some of these controls.<span class="Apple-converted-space">  </span>In the following list, the first and leftmost name is the actual control name, names below and indented are more abstract ways to specify the control.</p>
 <p class="p2"><br></p>
-<p class="p3"><b>out<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>output bus index</p>
-<p class="p3"><b>gate<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>envelope gate (not level!) - should default to 1.0</p>
-<p class="p3"><b>amp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>synth amplitude - should default to 0.1</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>delta<span class="Apple-tab-span">	</span></b>The time until the next event.<span class="Apple-converted-space">  </span>Generally determined by:</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>dur<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The time until next event in a sequence of events</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stretch<span class="Apple-tab-span">	</span></b>Scales event timings (i.e. stretch == 2 =&gt; durations are twice as long)</p>
 <p class="p2"><br></p>
-<p class="p3">The control names of the synth definition should match the keys. The default event scheme implements a couple of useful<span class="Apple-converted-space">  </span>parameter transformations in addition to that.</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sustain<span class="Apple-tab-span">	</span></b>Duration of the synth, typically determined (in stretched time units) by:<span class="Apple-tab-span">	</span></p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>legato<span class="Apple-tab-span">	</span></b>The ratio of the synth's duration to the event's duration</p>
 <p class="p2"><br></p>
-<p class="p3"><b>sustain<span class="Apple-tab-span">	</span></b>envelope duration (not dur!) - should default to 1.0. <b>legato </b>and<b> du</b>r values are translated to <b>sustain</b></p>
-<p class="p3"><b>freq<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>some frequency input - often defaults to 440. <b>degree, note </b>and<b> midinote</b> values are translated to <b>freq</b>.</p>
-<p class="p3"><b>bufnum<span class="Apple-tab-span">	</span></b>buffer number</p>
-<p class="p3"><b>pan<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>panning position</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>synth amplitude (typically ranging from 0 to 1), often determined by</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>db<span class="Apple-tab-span">	</span></b>Amplitude in decibels</p>
 <p class="p2"><br></p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>detunedFreq<span class="Apple-tab-span">	</span></b>actual "pitch" of a synth, determined by</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>freq + detune</b>; freq is<b> </b>determined by</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<b>midinote</b> + <b>ctranspose).midicps * harmonic; </b>midinote is determined by</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<b>note + gtranspose + root)/stepsPerOctave * octave * 12; </b>note is determined by</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>(degree + mtranspose).degreeToKey(scale, stepsPerOctave)</b><span class="Apple-tab-span">	</span></p>
 <p class="p2"><br></p>
 <p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s2">\cfstring1</span>, { <span class="s1">arg</span> i_out, freq = 360, gate = 1, pan, amp=0.1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> out, eg, fc, osc, a, b, w;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>fc = <span class="s1">LinExp</span>.kr(<span class="s1">LFNoise1</span>.kr(<span class="s1">Rand</span>(0.25,0.4)), -1,1,500,2000);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>osc = <span class="s1">Mix</span>.fill(8, {<span class="s1">LFSaw</span>.ar(freq * [<span class="s1">Rand</span>(0.99,1.01),<span class="s1">Rand</span>(0.99,1.01)], 0, amp) }).distort * 0.2;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>eg = <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.asr(1,1,1), gate, doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>out = eg * <span class="s1">RLPF</span>.ar(osc, fc, 0.1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>#a, b = out;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(i_out, <span class="s1">Mix</span>.ar(<span class="s1">PanAz</span>.ar(4, [a, b], [pan, pan+0.3])));</p>
-<p class="p6">}).store;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">e = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwhite</span>(0,12),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.2,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\cfstring1</p>
-<p class="p4"><span class="s3">).play; </span>// returns an EventStream</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p4">// the event stream's stream can be changed while it is running:</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">e.stream = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Prand</span>([0.2,0.4,0.8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.05, <span class="s2">\octave</span>, 5,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\cfstring1<span class="s3">, </span>\ctranspose<span class="s3">, 0</span></p>
-<p class="p6">).asStream;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">e.stream = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Prand</span>([0.2,0.4,0.8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.05, <span class="s2">\octave</span>, 5,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\cfstring1<span class="s3">, </span>\ctranspose<span class="s3">, 0</span></p>
-<p class="p6">).asStream;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">e.stream = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pxrand</span>([0,1,2,4,6,3,5,7,8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Prand</span>([0.2,0.4,0.8],<span class="s1">inf</span>), <span class="s2">\amp</span>, 0.05,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\octave<span class="s3">, 5, </span>\instrument<span class="s3">, </span>\cfstring1</p>
-<p class="p6">).asStream;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p4">// pairs of names can be used to group several parameters</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">e.stream = <span class="s1">Pbind</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>[</span>\degree<span class="s3">, </span>\dur<span class="s3">], </span><span class="s1">Pseq</span><span class="s3">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>([[0,0.1],[2,0.1],[3,0.1],[4,0.1],[5,0.8]],2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Ptuple</span>([<span class="s1">Pxrand</span>([6,7,8,9],4), 0.4]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Ptuple</span>([<span class="s1">Pseq</span>([9,8,7,6,5,4,3,2]), 0.2])</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],<span class="s1">inf</span>),</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>\amp<span class="s3">, 0.05, </span>\octave<span class="s3">, 5, </span>\instrument<span class="s3">, </span>\cfstring1<span class="s3">, </span>\mtranspose<span class="s3">, 0).asStream;</span></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">e.stream = <span class="s1">Pbind</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>[</span>\degree<span class="s3">, </span>\dur<span class="s3">], </span><span class="s1">Pseq</span><span class="s3">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>([[0,0.1],[2,0.1],[3,0.1],[4,0.1],[5,0.8]],2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Ptuple</span>([<span class="s1">Pxrand</span>([6,7,8,9],4), 0.4]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Ptuple</span>([<span class="s1">Pseq</span>([9,8,7,6,5,4,3,2]), 0.2])</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],<span class="s1">inf</span>),</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>\amp<span class="s3">, 0.05, </span>\octave<span class="s3">, 6, </span>\instrument<span class="s3">, </span>\cfstring1<span class="s3">, </span>\mtranspose<span class="s3">, 0).asStream;</span></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">// play control:</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s3">e.mute; </span>// keeps playing, but replaces notes with rests</p>
-<p class="p5"><br></p>
-<p class="p6">e.unmute;</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s3">e.reset;<span class="Apple-converted-space">  </span></span>// reset the stream.</p>
-<p class="p4"><span class="s3">e.reset;<span class="Apple-converted-space">  </span></span>// reset the stream.</p>
-<p class="p4"><span class="s3">e.reset;<span class="Apple-converted-space">  </span></span>// reset the stream.</p>
-<p class="p4"><span class="s3">e.reset;<span class="Apple-converted-space">  </span></span>// reset the stream.</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s3">e.pause;<span class="Apple-converted-space">  </span></span>// will resume where paused.</p>
-<p class="p5"><br></p>
-<p class="p6">e.play;</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s3">e.stop;<span class="Apple-converted-space">  </span></span>// will reset before resume.</p>
-<p class="p5"><br></p>
-<p class="p6">e.play;</p>
-<p class="p5"><br></p>
+<p class="p3">(</p>
+<p class="p5"><span class="s1"><b><span class="Apple-tab-span">	</span></b></span><b>// the SynthDef</b></p>
+<p class="p4"><span class="s1"><b><span class="Apple-tab-span">	</span></b></span><b>SynthDef</b><span class="s1"><b>( </b></span><span class="s2"><b>"test"</b></span><span class="s1"><b>, { </b></span><b>| out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1 |</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s3"><b>var</b></span><b> audio = </b><span class="s3"><b>Blip</b></span><b>.ar(freq, nharms, amp);</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s3"><b>var</b></span><b> env = </b><span class="s3"><b>Linen</b></span><b>.kr(gate, doneAction: 2);</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s3"><b>OffsetOut</b></span><b>.ar(out, </b><span class="s3"><b>Pan2</b></span><b>.ar(audio, pan, env) );</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span>}).store;</b></p>
 <p class="p2"><br></p>
+<p class="p5"><span class="s1"><b><span class="Apple-tab-span">	</span></b></span><b>// Events are written as parantheses enclosing key/value pairs</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span>(instrument: </b><span class="s4"><b>\test</b></span><b>).play;</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span>(instrument: </b><span class="s4"><b>\test</b></span><b>, freq: 20, nharms: 50).play;</b></p>
+<p class="p3">)</p>
 <p class="p2"><br></p>
 <p class="p2"><br></p>
+<p class="p3"><b>Pbind</b></p>
+<p class="p2"><br></p>
+<p class="p3">A pattern defined with <b>Pbind </b>binds different patterns to different keys in an Event to define a sequence of events.<span class="Apple-converted-space">  </span>The sequence of Events typically defines a sequence of synths that generates music (but may include control changes, buffer allocations, etc).<span class="Apple-converted-space">  </span>The patterns bound to keys are referred to as <i>value patterns</i> and the Pbind itself is termed an <i>event pattern</i>.<span class="Apple-converted-space">  </span>For example:</p>
+<p class="p2"><br></p>
+<p class="p3">(</p>
+<p class="p5"><span class="s1"><b><span class="Apple-tab-span">	</span></b></span><b>// the SynthDef</b></p>
+<p class="p4"><span class="s1"><b><span class="Apple-tab-span">	</span></b></span><b>SynthDef</b><span class="s1"><b>( </b></span><span class="s2"><b>"test"</b></span><span class="s1"><b>, { </b></span><b>| out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1 |</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s3"><b>var</b></span><b> audio = </b><span class="s3"><b>Blip</b></span><b>.ar(freq, nharms, amp);</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s3"><b>var</b></span><b> env = </b><span class="s3"><b>Linen</b></span><b>.kr(gate, doneAction: 2);</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s3"><b>OffsetOut</b></span><b>.ar(out, </b><span class="s3"><b>Pan2</b></span><b>.ar(audio, pan, env) );</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span>}).store;</b></p>
+<p class="p2"><br></p>
+<p class="p3"><span class="Apple-tab-span">	</span><b>Pbind(*[</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>instrument:<span class="Apple-tab-span">	</span>\test,</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nharms:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pseq([4,10,40], inf),</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pseq([1,1,2,1]/10,inf)</b>,</p>
+<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sustain:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pseq([1/10, 0.5, 1, 2],inf),</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pseq( (1..16) * 50, 4)</b></p>
+<p class="p3"><b><span class="Apple-tab-span">	</span>]).play</b></p>
+<p class="p3">)</p>
+<p class="p2"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
+<p class="p3">When a Pbind is sent <b>asStream</b>, it creates streams out of all of its constituent patterns and a Stream to obtain values from those streams and insert them into an event.<span class="Apple-converted-space">  </span>This "realization" of the Pbind is actually performed by an <b>EventStreamPlayer </b>that takes events from the Stream, plays those events and schedules itself in accordance with the results of sending <b>delta </b>messages to those events.</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p3">The Pbind stream returns nil whenever the first one of its streams ends or if nil is passed in.</p>
+<p class="p2"><br></p>
+<p class="p6">// example:</p>
+<p class="p7"><br></p>
+<p class="p8">a = <span class="s5">Pbind</span>(<span class="s6">\x</span>, 77, <span class="s6">\y</span>, <span class="s5">Pseq</span>([1, 2, 3]));</p>
+<p class="p8">x = a.asStream;</p>
+<p class="p8">4.do { x.next(<span class="s5">Event</span>.new).postln };</p>
+<p class="p2"><br></p>
+<p class="p8">a = <span class="s5">Pbind</span>(<span class="s6">\x</span>, 77, <span class="s6">\y</span>, <span class="s5">Pseq</span>([1, 2, 3]));</p>
+<p class="p8">x = a.asStream;</p>
+<p class="p6"><span class="s1">x.next; </span>// this returns nil.</p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p3">An <b><i>event stream</i></b> is created for a Pattern by sending it the <i>asEventStreamPlayer</i> message. The <i>asEventStreamPlayer</i> message takes an Event as an argument. This event is copied for each call to next to pass down and back up the tree of patterns so that each pattern can modify the event. What Pbind does is put the values for its symbols into the event, possibly overwriting previous bindings to those symbols.</p>
+<p class="p2"><br></p>
+<p class="p3">This uses the default event.<span class="Apple-converted-space">  </span>In the next example we will supply our own event (synth function).</p>
+<p class="p2"><br></p>
+<p class="p6">// example:</p>
+<p class="p8">(</p>
+<p class="p9">Pbind<span class="s1">(</span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pseq</span>([1,3,5,7], <span class="s5">inf</span>),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.125,<span class="Apple-converted-space"> </span></p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span></span>\octave<span class="s1">, 4,<span class="Apple-converted-space"> </span></span></p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span></span>\root<span class="s1">, 3</span></p>
+<p class="p8">).play</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8"><span class="s5">SynthDef</span>(<span class="s6">\cfstring1</span>, { <span class="s5">arg</span> i_out, freq = 360, gate = 1, pan, amp=0.1;</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">var</span> out, eg, fc, osc, a, b, w;</p>
+<p class="p8"><span class="Apple-tab-span">	</span>fc = <span class="s5">LinExp</span>.kr(<span class="s5">LFNoise1</span>.kr(<span class="s5">Rand</span>(0.25,0.4)), -1,1,500,2000);</p>
+<p class="p8"><span class="Apple-tab-span">	</span>osc = <span class="s5">Mix</span>.fill(8, {<span class="s5">LFSaw</span>.ar(freq * [<span class="s5">Rand</span>(0.99,1.01),<span class="s5">Rand</span>(0.99,1.01)], 0, amp) }).distort * 0.2;</p>
+<p class="p8"><span class="Apple-tab-span">	</span>eg = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.asr(1,1,1), gate, doneAction:2);</p>
+<p class="p8"><span class="Apple-tab-span">	</span>out = eg * <span class="s5">RLPF</span>.ar(osc, fc, 0.1);</p>
+<p class="p8"><span class="Apple-tab-span">	</span>#a, b = out;</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(i_out, <span class="s5">Mix</span>.ar(<span class="s5">PanAz</span>.ar(4, [a, b], [pan, pan+0.3])));</p>
+<p class="p8">}).store;</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8">e = <span class="s5">Pbind</span>(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pwhite</span>(0,12),<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.2,<span class="Apple-converted-space"> </span></p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span></span>\instrument<span class="s1">, </span>\cfstring1</p>
+<p class="p6"><span class="s1">).play; </span>// returns an EventStream</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p6">// the event stream's stream can be changed while it is running:</p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8">e.stream = <span class="s5">Pbind</span>(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s5">Prand</span>([0.2,0.4,0.8],<span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\amp</span>, 0.05, <span class="s6">\octave</span>, 5,<span class="Apple-converted-space"> </span></p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s1">, </span>\cfstring1<span class="s1">, </span>\ctranspose<span class="s1">, 0</span></p>
+<p class="p8">).asStream;</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8">e.stream = <span class="s5">Pbind</span>(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s5">Prand</span>([0.2,0.4,0.8],<span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\amp</span>, 0.05, <span class="s6">\octave</span>, 5,<span class="Apple-converted-space"> </span></p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s1">, </span>\cfstring1<span class="s1">, </span>\ctranspose<span class="s1">, 0</span></p>
+<p class="p8">).asStream;</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8">e.stream = <span class="s5">Pbind</span>(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pxrand</span>([0,1,2,4,6,3,5,7,8],<span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s5">Prand</span>([0.2,0.4,0.8],<span class="s5">inf</span>), <span class="s6">\amp</span>, 0.05,<span class="Apple-converted-space"> </span></p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\octave<span class="s1">, 5, </span>\instrument<span class="s1">, </span>\cfstring1</p>
+<p class="p8">).asStream;</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p6">// pairs of names can be used to group several parameters</p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8">e.stream = <span class="s5">Pbind</span>(</p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span>[</span>\degree<span class="s1">, </span>\dur<span class="s1">], </span><span class="s5">Pseq</span><span class="s1">([</span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pseq</span>([[0,0.1],[2,0.1],[3,0.1],[4,0.1],[5,0.8]],2),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Ptuple</span>([<span class="s5">Pxrand</span>([6,7,8,9],4), 0.4]),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Ptuple</span>([<span class="s5">Pseq</span>([9,8,7,6,5,4,3,2]), 0.2])</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],<span class="s5">inf</span>),</p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span></span>\amp<span class="s1">, 0.05, </span>\octave<span class="s1">, 5, </span>\instrument<span class="s1">, </span>\cfstring1<span class="s1">, </span>\mtranspose<span class="s1">, 0).asStream;</span></p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8">e.stream = <span class="s5">Pbind</span>(</p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span>[</span>\degree<span class="s1">, </span>\dur<span class="s1">], </span><span class="s5">Pseq</span><span class="s1">([</span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pseq</span>([[0,0.1],[2,0.1],[3,0.1],[4,0.1],[5,0.8]],2),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Ptuple</span>([<span class="s5">Pxrand</span>([6,7,8,9],4), 0.4]),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Ptuple</span>([<span class="s5">Pseq</span>([9,8,7,6,5,4,3,2]), 0.2])</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],<span class="s5">inf</span>),</p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span></span>\amp<span class="s1">, 0.05, </span>\octave<span class="s1">, 6, </span>\instrument<span class="s1">, </span>\cfstring1<span class="s1">, </span>\mtranspose<span class="s1">, 0).asStream;</span></p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p7"><br></p>
+<p class="p7"><br></p>
+<p class="p7"><br></p>
+<p class="p6">// play control:</p>
+<p class="p7"><br></p>
+<p class="p6"><span class="s1">e.mute; </span>// keeps playing, but replaces notes with rests</p>
+<p class="p7"><br></p>
+<p class="p8">e.unmute;</p>
+<p class="p7"><br></p>
+<p class="p6"><span class="s1">e.reset;<span class="Apple-converted-space">  </span></span>// reset the stream.</p>
+<p class="p6"><span class="s1">e.reset;<span class="Apple-converted-space">  </span></span>// reset the stream.</p>
+<p class="p6"><span class="s1">e.reset;<span class="Apple-converted-space">  </span></span>// reset the stream.</p>
+<p class="p6"><span class="s1">e.reset;<span class="Apple-converted-space">  </span></span>// reset the stream.</p>
+<p class="p7"><br></p>
+<p class="p6"><span class="s1">e.pause;<span class="Apple-converted-space">  </span></span>// will resume where paused.</p>
+<p class="p7"><br></p>
+<p class="p8">e.play;</p>
+<p class="p7"><br></p>
+<p class="p6"><span class="s1">e.stop;<span class="Apple-converted-space">  </span></span>// will reset before resume.</p>
+<p class="p7"><br></p>
+<p class="p8">e.play;</p>
+<p class="p7"><br></p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
 <p class="p3">Another example with a different SynthDef:</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s2">\berlinb</span>, { <span class="s1">arg</span> out=0, freq = 80, amp = 0.01, pan=0, gate=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> synth, env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s1">Decay2</span>.kr(gate, 0.05, 8, 0.0003);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>synth = <span class="s1">RLPF</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFPulse</span>.ar(freq, 0, <span class="s1">SinOsc</span>.kr(0.12,[0,0.5pi],0.48,0.5)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * <span class="s1">SinOsc</span>.kr(0.21,0,18,20),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.07</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>#a, b = synth*env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">DetectSilence</span>.ar(a, 0.1, doneAction: 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, <span class="s1">Mix</span>.ar(<span class="s1">PanAz</span>.ar(4, [a,b], [pan, pan+1])));</p>
-<p class="p6">}).store;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">f = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\dur<span class="s3">, 0.5, </span>\octave<span class="s3">, 3, </span>\instrument<span class="s3">, </span>\berlinb</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">f.stream = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.5, <span class="s2">\octave</span>, [2,1],</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\berlinb<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\pan</span>, <span class="s1">Pfunc</span>({1.0.rand2})<span class="Apple-converted-space"> </span></p>
-<p class="p6">).asStream;</p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8"><span class="s5">SynthDef</span>(<span class="s6">\berlinb</span>, { <span class="s5">arg</span> out=0, freq = 80, amp = 0.01, pan=0, gate=1;</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">var</span> synth, env;</p>
+<p class="p8"><span class="Apple-tab-span">	</span>env = <span class="s5">Decay2</span>.kr(gate, 0.05, 8, 0.0003);</p>
+<p class="p8"><span class="Apple-tab-span">	</span>synth = <span class="s5">RLPF</span>.ar(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">LFPulse</span>.ar(freq, 0, <span class="s5">SinOsc</span>.kr(0.12,[0,0.5pi],0.48,0.5)),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * <span class="s5">SinOsc</span>.kr(0.21,0,18,20),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.07</p>
+<p class="p8"><span class="Apple-tab-span">	</span>);</p>
+<p class="p8"><span class="Apple-tab-span">	</span>#a, b = synth*env;</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">DetectSilence</span>.ar(a, 0.1, doneAction: 2);</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">Mix</span>.ar(<span class="s5">PanAz</span>.ar(4, [a,b], [pan, pan+1])));</p>
+<p class="p8">}).store;</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8">f = <span class="s5">Pbind</span>(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\dur<span class="s1">, 0.5, </span>\octave<span class="s1">, 3, </span>\instrument<span class="s1">, </span>\berlinb</p>
+<p class="p8">).play;</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8">f.stream = <span class="s5">Pbind</span>(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.5, <span class="s6">\octave</span>, [2,1],</p>
+<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s1">, </span>\berlinb<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\pan</span>, <span class="s5">Pfunc</span>({1.0.rand2})<span class="Apple-converted-space"> </span></p>
+<p class="p8">).asStream;</p>
 <p class="p3">)</p>
 <p class="p2"><br></p>
 <p class="p2"><br></p>
@@ -222,206 +298,137 @@
 <p class="p3">also, due to the synthdef's and synthdeclib, if the server is shut down you will have to reload the<span class="Apple-converted-space"> </span></p>
 <p class="p3">synthdef and re-read the synthdesclib.<span class="Apple-converted-space"> </span></p>
 <p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s5">"acid"</span>, { <span class="s1">arg</span> out, freq = 1000, gate = 1, pan = 1, cut = 4000, rez = 0.8, amp = 1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">RLPF</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pulse</span>.ar(freq,0.05),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cut, rez),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan) * <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.linen(0.01, 1, 0.3), gate, amp, doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}).store;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pbind</span>(<span class="s2">\instrument</span>,<span class="s2">\acid</span>, <span class="s2">\dur</span>,<span class="s1">Pseq</span>([0.25,0.5,0.25],<span class="s1">inf</span>), <span class="s2">\root</span>,-12,</p>
-<p class="p6"><span class="Apple-tab-span">	</span> <span class="s2">\degree</span>,<span class="s1">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s1">inf</span>), <span class="s2">\pan</span>,<span class="s1">Pfunc</span>({1.0.rand2}),</p>
-<p class="p6"><span class="Apple-tab-span">	</span> <span class="s2">\cut</span>,<span class="s1">Pxrand</span>([1000,500,2000,300],<span class="s1">inf</span>), <span class="s2">\rez</span>,<span class="s1">Pfunc</span>({0.7.rand +0.3}), <span class="s2">\amp</span>,0.2).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
+<p class="p8">(</p>
+<p class="p8"><span class="s5">SynthDef</span>(<span class="s2">"acid"</span>, { <span class="s5">arg</span> out, freq = 1000, gate = 1, pan = 1, cut = 4000, rez = 0.8, amp = 1;</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pan2</span>.ar(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">RLPF</span>.ar(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pulse</span>.ar(freq,0.05),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cut, rez),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan) * <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.linen(0.01, 1, 0.3), gate, amp, doneAction:2);</p>
+<p class="p8"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
+<p class="p8">}).store;</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8"><span class="s5">Pbind</span>(<span class="s6">\instrument</span>,<span class="s6">\acid</span>, <span class="s6">\dur</span>,<span class="s5">Pseq</span>([0.25,0.5,0.25],<span class="s5">inf</span>), <span class="s6">\root</span>,-12,</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>,<span class="s5">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s5">inf</span>), <span class="s6">\pan</span>,<span class="s5">Pfunc</span>({1.0.rand2}),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\cut</span>,<span class="s5">Pxrand</span>([1000,500,2000,300],<span class="s5">inf</span>), <span class="s6">\rez</span>,<span class="s5">Pfunc</span>({0.7.rand +0.3}), <span class="s6">\amp</span>,0.2).play;</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p7"><br></p>
 <p class="p3">The <b>ListPatterns</b> can be put around Event Streams to create sequences of Event Streams.</p>
-<p class="p6">(</p>
-<p class="p7">Pseq<span class="s3">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pbind</span>(<span class="s2">\instrument</span>,<span class="s2">\acid</span>, <span class="s2">\dur</span>,<span class="s1">Pseq</span>([0.25,0.5,0.25],4), <span class="s2">\root</span>,-24,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>,<span class="s1">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s1">inf</span>), <span class="s2">\pan</span>,<span class="s1">Pfunc</span>({1.0.rand2}),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\cut</span>,<span class="s1">Pxrand</span>([1000,500,2000,300],<span class="s1">inf</span>),<span class="s2">\rez</span>,<span class="s1">Pfunc</span>({0.7.rand +0.3}), <span class="s2">\amp</span>,0.2),</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pbind</span>(<span class="s2">\instrument</span>,<span class="s2">\acid</span>, <span class="s2">\dur</span>,<span class="s1">Pseq</span>([0.25],6), <span class="s2">\root</span>,-24, <span class="s2">\degree</span>,<span class="s1">Pseq</span>([18,17,11,9],<span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\pan</span>,<span class="s1">Pfunc</span>({1.0.rand2}),<span class="s2">\cut</span>,1500, <span class="s2">\rez</span>,<span class="s1">Pfunc</span>({0.7.rand +0.3}), <span class="s2">\amp</span>,0.16)</p>
-<p class="p5"><br></p>
-<p class="p6">],<span class="s1">inf</span>).play;</p>
-<p class="p6">)</p>
+<p class="p8">(</p>
+<p class="p9">Pseq<span class="s1">([</span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\instrument</span>,<span class="s6">\acid</span>, <span class="s6">\dur</span>,<span class="s5">Pseq</span>([0.25,0.5,0.25],4), <span class="s6">\root</span>,-24,</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\degree</span>,<span class="s5">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s5">inf</span>), <span class="s6">\pan</span>,<span class="s5">Pfunc</span>({1.0.rand2}),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\cut</span>,<span class="s5">Pxrand</span>([1000,500,2000,300],<span class="s5">inf</span>),<span class="s6">\rez</span>,<span class="s5">Pfunc</span>({0.7.rand +0.3}), <span class="s6">\amp</span>,0.2),</p>
+<p class="p7"><br></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\instrument</span>,<span class="s6">\acid</span>, <span class="s6">\dur</span>,<span class="s5">Pseq</span>([0.25],6), <span class="s6">\root</span>,-24, <span class="s6">\degree</span>,<span class="s5">Pseq</span>([18,17,11,9],<span class="s5">inf</span>),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\pan</span>,<span class="s5">Pfunc</span>({1.0.rand2}),<span class="s6">\cut</span>,1500, <span class="s6">\rez</span>,<span class="s5">Pfunc</span>({0.7.rand +0.3}), <span class="s6">\amp</span>,0.16)</p>
+<p class="p7"><br></p>
+<p class="p8">],<span class="s5">inf</span>).play;</p>
+<p class="p8">)</p>
 <p class="p2"><br></p>
 <p class="p3">'<b>Pseq</b>' in the above ex. can be any pattern object:</p>
-<p class="p6">(</p>
-<p class="p7">Prand<span class="s3">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pbind</span>(<span class="s2">\instrument</span>,<span class="s2">\acid</span>, <span class="s2">\dur</span>,<span class="s1">Pseq</span>([0.25,0.5,0.25],4), <span class="s2">\root</span>,-24,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>,<span class="s1">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s1">inf</span>),<span class="s2">\pan</span>,<span class="s1">Pfunc</span>({1.0.rand2}),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\cut</span>,<span class="s1">Pxrand</span>([1000,500,2000,300],<span class="s1">inf</span>), <span class="s2">\rez</span>,<span class="s1">Pfunc</span>({0.7.rand +0.3}),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\amp</span>,0.2),</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pbind</span>(<span class="s2">\instrument</span>,<span class="s2">\acid</span>, <span class="s2">\dur</span>,<span class="s1">Pseq</span>([0.25],6), <span class="s2">\root</span>,-24, <span class="s2">\degree</span>,<span class="s1">Pseq</span>([18,17,11,9],<span class="s1">inf</span>), <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\pan</span>,<span class="s1">Pfunc</span>({1.0.rand2}),<span class="s2">\cut</span>,1500, <span class="s2">\rez</span>,<span class="s1">Pfunc</span>({0.7.rand +0.3}), <span class="s2">\amp</span>,0.16)</p>
-<p class="p5"><br></p>
-<p class="p6">],<span class="s1">inf</span>).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
+<p class="p8">(</p>
+<p class="p9">Prand<span class="s1">([</span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\instrument</span>,<span class="s6">\acid</span>, <span class="s6">\dur</span>,<span class="s5">Pseq</span>([0.25,0.5,0.25],4), <span class="s6">\root</span>,-24,</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\degree</span>,<span class="s5">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s5">inf</span>),<span class="s6">\pan</span>,<span class="s5">Pfunc</span>({1.0.rand2}),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\cut</span>,<span class="s5">Pxrand</span>([1000,500,2000,300],<span class="s5">inf</span>), <span class="s6">\rez</span>,<span class="s5">Pfunc</span>({0.7.rand +0.3}),<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\amp</span>,0.2),</p>
+<p class="p7"><br></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\instrument</span>,<span class="s6">\acid</span>, <span class="s6">\dur</span>,<span class="s5">Pseq</span>([0.25],6), <span class="s6">\root</span>,-24, <span class="s6">\degree</span>,<span class="s5">Pseq</span>([18,17,11,9],<span class="s5">inf</span>), <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\pan</span>,<span class="s5">Pfunc</span>({1.0.rand2}),<span class="s6">\cut</span>,1500, <span class="s6">\rez</span>,<span class="s5">Pfunc</span>({0.7.rand +0.3}), <span class="s6">\amp</span>,0.16)</p>
+<p class="p7"><br></p>
+<p class="p8">],<span class="s5">inf</span>).play;</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p7"><br></p>
 <p class="p2"><br></p>
 <p class="p3"><b>Multichannel Expansion.</b></p>
 <p class="p3">If we supply an array for any argument, the synth node will<span class="Apple-converted-space"> </span></p>
 <p class="p3">automatically replicate to handle the additional arguments.</p>
 <p class="p3">When we give the 'root' argument an array, we should hear a chord....</p>
 <p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\instrument</span>,<span class="s2">\acid</span>, <span class="s2">\dur</span>,<span class="s1">Pseq</span>([0.25,0.5,0.25],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\root</span>,[-24,-17],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>,<span class="s1">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\pan</span>,<span class="s1">Pfunc</span>({1.0.rand2}),<span class="s2">\cut</span>,<span class="s1">Pxrand</span>([1000,500,2000,300],<span class="s1">inf</span>), <span class="s2">\rez</span>,<span class="s1">Pfunc</span>({0.7.rand +0.3}),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\amp</span>,0.2).play;</p>
-<p class="p5"><br></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">Using <a href="../Libraries/JITLib/Patterns/Pdef.html"><span class="s6">Pdef</span></a> (JITLib) makes it easy to replace patterns on the fly:</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p8"><span class="s1">Pdef</span><span class="s3">(</span>\buckyball<span class="s3">).play;</span></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s2">\buckyball</span>, <span class="s1">Pbind</span>(<span class="s2">\instrument</span>,<span class="s2">\acid</span>, <span class="s2">\dur</span>,<span class="s1">Pseq</span>([0.25,0.5,0.25],<span class="s1">inf</span>), <span class="s2">\root</span>,[-24,-17],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>,<span class="s1">Pseq</span>([0,3,5,7,9,11,[5,17],1],<span class="s1">inf</span>), <span class="s2">\pan</span>,<span class="s1">Pfunc</span>({[1.0.rand2,1.0.rand2]}),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\cut</span>,<span class="s1">Pxrand</span>([1000,500,2000,300],<span class="s1">inf</span>), <span class="s2">\rez</span>,<span class="s1">Pfunc</span>({0.7.rand +0.3}), <span class="s2">\amp</span>,[0.15,0.22]));</p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s2">\buckyball</span>, <span class="s1">Pbind</span>(<span class="s2">\instrument</span>,<span class="s2">\acid</span>, <span class="s2">\dur</span>,<span class="s1">Pseq</span>([0.25,0.5,0.25],<span class="s1">inf</span>), <span class="s2">\root</span>,[-24,-17],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>,<span class="s1">Pseq</span>([0b,3b,5b,7b,9b,11b,5b,0b],<span class="s1">inf</span>), <span class="s2">\pan</span>,<span class="s1">Pfunc</span>({1.0.rand2}),<span class="Apple-converted-space">  </span><span class="s7">//notice the flats</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\cut</span>,<span class="s1">Pxrand</span>([1000,500,2000,300],<span class="s1">inf</span>), <span class="s2">\rez</span>,<span class="s1">Pfunc</span>({0.7.rand +0.3}), <span class="s2">\amp</span>,0.2));</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p4">//stop the Pdef</p>
-<p class="p8"><span class="s1">Pdef</span><span class="s3">(</span>\buckyball<span class="s3">).stop;</span></p>
-<p class="p5"><br></p>
-<p class="p4">//start the Pdef</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s2">\buckyball</span>).resume;</p>
-<p class="p5"><br></p>
-<p class="p4">//removing the Pdef</p>
-<p class="p9">Pdef.remove(\buckyball);</p>
-<p class="p5"><br></p>
+<p class="p8">(</p>
+<p class="p9">Pbind<span class="s1">(</span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\instrument</span>,<span class="s6">\acid</span>, <span class="s6">\dur</span>,<span class="s5">Pseq</span>([0.25,0.5,0.25],<span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\root</span>,[-24,-17],<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>,<span class="s5">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\pan</span>,<span class="s5">Pfunc</span>({1.0.rand2}),<span class="s6">\cut</span>,<span class="s5">Pxrand</span>([1000,500,2000,300],<span class="s5">inf</span>), <span class="s6">\rez</span>,<span class="s5">Pfunc</span>({0.7.rand +0.3}),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\amp</span>,0.2).play;</p>
+<p class="p7"><br></p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p7"><br></p>
+<p class="p3">Using <a href="../Libraries/JITLib/Patterns/Pdef.html"><span class="s7">Pdef</span></a> (JITLib) makes it easy to replace patterns on the fly:</p>
+<p class="p7"><br></p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p10"><span class="s5">Pdef</span><span class="s1">(</span>\buckyball<span class="s1">).play;</span></p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8"><span class="s5">Pdef</span>(<span class="s6">\buckyball</span>, <span class="s5">Pbind</span>(<span class="s6">\instrument</span>,<span class="s6">\acid</span>, <span class="s6">\dur</span>,<span class="s5">Pseq</span>([0.25,0.5,0.25],<span class="s5">inf</span>), <span class="s6">\root</span>,[-24,-17],<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>,<span class="s5">Pseq</span>([0,3,5,7,9,11,[5,17],1],<span class="s5">inf</span>), <span class="s6">\pan</span>,<span class="s5">Pfunc</span>({[1.0.rand2,1.0.rand2]}),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\cut</span>,<span class="s5">Pxrand</span>([1000,500,2000,300],<span class="s5">inf</span>), <span class="s6">\rez</span>,<span class="s5">Pfunc</span>({0.7.rand +0.3}), <span class="s6">\amp</span>,[0.15,0.22]));</p>
+<p class="p8">)</p>
+<p class="p8">(</p>
+<p class="p8"><span class="s5">Pdef</span>(<span class="s6">\buckyball</span>, <span class="s5">Pbind</span>(<span class="s6">\instrument</span>,<span class="s6">\acid</span>, <span class="s6">\dur</span>,<span class="s5">Pseq</span>([0.25,0.5,0.25],<span class="s5">inf</span>), <span class="s6">\root</span>,[-24,-17],<span class="Apple-converted-space"> </span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>,<span class="s5">Pseq</span>([0b,3b,5b,7b,9b,11b,5b,0b],<span class="s5">inf</span>), <span class="s6">\pan</span>,<span class="s5">Pfunc</span>({1.0.rand2}),<span class="Apple-converted-space">  </span><span class="s8">//notice the flats</span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\cut</span>,<span class="s5">Pxrand</span>([1000,500,2000,300],<span class="s5">inf</span>), <span class="s6">\rez</span>,<span class="s5">Pfunc</span>({0.7.rand +0.3}), <span class="s6">\amp</span>,0.2));</p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p6">//stop the Pdef</p>
+<p class="p10"><span class="s5">Pdef</span><span class="s1">(</span>\buckyball<span class="s1">).stop;</span></p>
+<p class="p7"><br></p>
+<p class="p6">//start the Pdef</p>
+<p class="p8"><span class="s5">Pdef</span>(<span class="s6">\buckyball</span>).resume;</p>
+<p class="p7"><br></p>
+<p class="p6">//removing the Pdef</p>
+<p class="p11">Pdef.remove(\buckyball);</p>
+<p class="p7"><br></p>
 <p class="p2"><br></p>
 <p class="p3"><b>Sending to effects.</b></p>
 <p class="p3">Assignment to effect processors can be achieved by setting the 'out' argument to the desired</p>
 <p class="p3">efx's input bus.<span class="Apple-converted-space">  </span>The effect Synth must also be created.<span class="Apple-converted-space">  </span>Synth.new is one way of doing this.</p>
 <p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p4">//efx synthdef- dig the timing on the delay and the pbind.<span class="Apple-converted-space">  </span>:-P</p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s5">"pbindefx"</span>, { <span class="s1">arg</span> out, in, time1=0.25, time2=0.5; <span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>var audio, efx;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>audio = <span class="s1">In</span>.ar([20,21],2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>efx=<span class="s1">CombN</span>.ar(audio, 0.5, [time1,time2], 10, 1, audio); <span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, <span class="s1">efx</span>);</p>
-<p class="p6">}).load(s);</p>
-<p class="p10"><br></p>
-<p class="p4">//create efx synth</p>
-<p class="p6"><span class="s1">a = Synth</span>.after(1, <span class="s5">"pbindefx"</span>);</p>
-<p class="p10"><br></p>
-<p class="p4">//if you don't like the beats change to 0.4,0.24</p>
-<p class="p4">//a.set(\time1,0.4, \time2,0.24);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s5">"acid"</span>, { <span class="s1">arg</span> out, freq = 1000, gate = 1, pan = 0, cut = 4000, rez = 0.8, amp = 1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">RLPF</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pulse</span>.ar(freq,0.05),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cut, rez),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan) * <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.linen(0.02, 1, 0.3), gate, amp, doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}).load(s);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">SynthDescLib</span>.global.read;</p>
-<p class="p5"><br></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pbind</span>(<span class="s2">\instrument</span>,<span class="s2">\acid</span>, <span class="s2">\out</span>, 20, <span class="s2">\dur</span>,<span class="s1">Pseq</span>([0.25,0.5,0.25],<span class="s1">inf</span>), <span class="s2">\root</span>,[-24,-17],</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>,<span class="s1">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s1">inf</span>), <span class="s2">\pan</span>,<span class="s1">Pfunc</span>({1.0.rand2}),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\cut</span>,<span class="s1">Pxrand</span>([1000,500,2000,300],<span class="s1">inf</span>), <span class="s2">\rez</span>,<span class="s1">Pfunc</span>({0.7.rand +0.3}), <span class="s2">\amp</span>,0.12).play;</p>
-<p class="p6">)</p>
+<p class="p8">(</p>
+<p class="p6">//efx synthdef- dig the timing on the delay and the pbind.<span class="Apple-converted-space">  </span>:-P</p>
+<p class="p8"><span class="s5">SynthDef</span>(<span class="s2">"pbindefx"</span>, { <span class="s5">arg</span> out, in, time1=0.25, time2=0.5; <span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
+<p class="p8"><span class="Apple-tab-span">	</span>var audio, efx;</p>
+<p class="p8"><span class="Apple-tab-span">	</span>audio = <span class="s5">In</span>.ar([20,21],2);</p>
+<p class="p8"><span class="Apple-tab-span">	</span>efx=<span class="s5">CombN</span>.ar(audio, 0.5, [time1,time2], 10, 1, audio); <span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">efx</span>);</p>
+<p class="p8">}).store;</p>
+<p class="p12"><br></p>
+<p class="p6">//create efx synth</p>
+<p class="p8"><span class="s5">a = Synth</span>.after(1, <span class="s2">"pbindefx"</span>);</p>
+<p class="p12"><br></p>
+<p class="p6">//if you don't like the beats change to 0.4,0.24</p>
+<p class="p6">//a.set(\time1,0.4, \time2,0.24);</p>
+<p class="p7"><br></p>
+<p class="p8"><span class="s5">SynthDef</span>(<span class="s2">"acid"</span>, { <span class="s5">arg</span> out, freq = 1000, gate = 1, pan = 0, cut = 4000, rez = 0.8, amp = 1;</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pan2</span>.ar(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">RLPF</span>.ar(</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pulse</span>.ar(freq,0.05),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cut, rez),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan) * <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.linen(0.02, 1, 0.3), gate, amp, doneAction:2);</p>
+<p class="p8"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
+<p class="p8">}).store;</p>
+<p class="p7"><br></p>
+<p class="p8"><span class="s5">SynthDescLib</span>.global.read;</p>
+<p class="p7"><br></p>
+<p class="p8">)</p>
+<p class="p7"><br></p>
+<p class="p7"><br></p>
+<p class="p8">(</p>
+<p class="p8"><span class="s5">Pbind</span>(<span class="s6">\instrument</span>,<span class="s6">\acid</span>, <span class="s6">\out</span>, 20, <span class="s6">\dur</span>,<span class="s5">Pseq</span>([0.25,0.5,0.25],<span class="s5">inf</span>), <span class="s6">\root</span>,[-24,-17],</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>,<span class="s5">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s5">inf</span>), <span class="s6">\pan</span>,<span class="s5">Pfunc</span>({1.0.rand2}),</p>
+<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\cut</span>,<span class="s5">Pxrand</span>([1000,500,2000,300],<span class="s5">inf</span>), <span class="s6">\rez</span>,<span class="s5">Pfunc</span>({0.7.rand +0.3}), <span class="s6">\amp</span>,0.12).play;</p>
+<p class="p8">)</p>
 <p class="p2"><br></p>
 <p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p11">//<b>UGens as Event values.</b></p>
-<p class="p11">//The following example creates unit generators instead of scalar values for</p>
-<p class="p11">//the values bound to the arguments. This shows that you can use patterns</p>
-<p class="p11">//to dynamically build your patch. Score data is not limited to scalar values.</p>
-<p class="p11">//This example can generate 36 different patches: 3 instruments * 3 freqs</p>
-<p class="p11">//* 2 amps * 2 pans</p>
-<p class="p11">//</p>
-<p class="p11">//</p>
-<p class="p4">//I don't know if this is possible in sc3. <span class="Apple-converted-space"> </span></p>
-<p class="p4">////(</p>
-<p class="p4">//SynthDef(\cfstring1.postln, { arg i_out, freq = 360, gate = 1, pan, amp=0.1;</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>var out, eg, fc, osc, a, b, w;</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>fc = LinExp.kr(LFNoise1.kr(Rand(0.25,0.4)), -1,1,500,2000);</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>osc = Mix.fill(8, { LFSaw.ar(freq * [Rand(0.99,1.01),Rand(0.99,1.01)], 0, amp) }).distort * 0.2;</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>eg = EnvGen.kr(Env.asr(0.1,1,1), gate, doneAction:2);</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>out = eg * RLPF.ar(osc, fc, 0.1);</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>#a, b = out;</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>Out.ar(i_out, Mix.ar(PanAz.ar(4, [a, b], [pan, pan+0.3])));</p>
-<p class="p4">//}).load(s);</p>
-<p class="p4">//</p>
-<p class="p4">//SynthDef(\berlinb, { arg out=0, freq = 80, amp = 0.01, pan=0, gate=1;</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>var synth, env;</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>env = Decay2.kr(gate, 0.05, 8, 0.0003);</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>synth = RLPF.ar(</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>LFPulse.ar(freq, 0, SinOsc.kr(0.12,[0,0.5pi],0.48,0.5)),</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * SinOsc.kr(0.21,0,18,20),</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.07</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>);</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>#a, b = synth*env;</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>DetectSilence.ar(a, 0.1, doneAction: 2);</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>Out.ar(out, Mix.ar(PanAz.ar(4, [a,b], [pan, pan+1])));</p>
-<p class="p4">//}).load(s);</p>
-<p class="p4">//</p>
-<p class="p4">//SynthDef("acid", { arg out, freq = 1000, gate = 1, pan = 0,<span class="Apple-converted-space">  </span>amp = 0.3;</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>Out.ar(out,</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pan2.ar(</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pulse.ar(freq*0.125,0.05),</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan) * EnvGen.kr(Env.linen(0.01, 1, 0.3), gate, amp, doneAction:2);</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p4">//<span class="Apple-tab-span">	</span>}).load(s);</p>
-<p class="p4">//</p>
-<p class="p4">//SynthDescLib.global.read;</p>
-<p class="p4">//)</p>
-<p class="p4">//</p>
-<p class="p4">//(</p>
-<p class="p4">//var a, b, c, pattern, stream;</p>
-<p class="p4">//</p>
-<p class="p4">//pattern = Pbind(</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>\freq, Pfunc({Line.kr(40, 2000, 0.2)}),</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">//<span class="Apple-tab-span">	</span>\amp, Pfunc({ <span class="Apple-converted-space"> </span></p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ SinOsc.kr(20.0.rand, 0, 0.1, 0.1) },</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ XLine.kr(exprand(0.002, 0.2), exprand(0.002, 0.2), 2.2) }<span class="Apple-converted-space"> </span></p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>].choose.value;</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}),</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>\pan, Pfunc({ <span class="Apple-converted-space"> </span></p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ Line.kr(1.0.rand2, 1.0.rand2, 2.2)<span class="Apple-converted-space">  </span>},</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ SinOsc.kr(4.0.rand) }</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>].choose.value;</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}),</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>\instrument, Prand([ \cfstring1, \acid, \berlinb ], inf)</p>
-<p class="p4">//);</p>
-<p class="p4">//</p>
-<p class="p4">//)</p>
-<p class="p4">//</p>
 </body>
 </html>

Modified: trunk/build/Help/Streams-Patterns-Events/Pspawner.html
===================================================================
--- trunk/build/Help/Streams-Patterns-Events/Pspawner.html	2008-12-20 13:13:53 UTC (rev 8220)
+++ trunk/build/Help/Streams-Patterns-Events/Pspawner.html	2008-12-20 15:10:13 UTC (rev 8221)
@@ -5,20 +5,17 @@
 <meta http-equiv="Content-Style-Type" content="text/css">
 <title></title>
 <meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.33">
+<meta name="CocoaVersion" content="949.35">
 <style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-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; color: #0000bf; min-height: 14.0px}
-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}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica; color: #0000bf}
+p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
+p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001db9; min-height: 14.0px}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001db9}
+span.s1 {font: 18.0px Helvetica; color: #001db9}
 span.s2 {font: 18.0px Helvetica}
-span.s3 {color: #0000bf}
+span.s3 {color: #001db9}
 span.s4 {color: #000000}
 span.Apple-tab-span {white-space:pre}
 </style>
@@ -26,11 +23,9 @@
 <body>

@@ Diff output truncated at 100000 characters. @@

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/