Be more specific about numbers of channels of inputs and outputs
authorcrogers
Tue, 12 Feb 2013 15:38:23 -0800
changeset 261 6b54d1345924
parent 260 333dbb6ffbc2
child 262 b3a132e8d6c7
Be more specific about numbers of channels of inputs and outputs
webaudio/specification.html
--- a/webaudio/specification.html	Wed Feb 06 14:50:32 2013 -0800
+++ b/webaudio/specification.html	Tue Feb 12 15:38:23 2013 -0800
@@ -496,7 +496,7 @@
 
 <p>Modular routing allows arbitrary connections between different <a
 href="#AudioNode-section"><code>AudioNode</code></a> objects. Each node can
-have inputs and/or outputs. An <a
+have <dfn>inputs</dfn> and/or <dfn>outputs</dfn>. An <a
 href="#AudioSourceNode-section"><code>AudioSourceNode</code></a> has no inputs
 and a single output. An <a
 href="#AudioDestinationNode-section"><code>AudioDestinationNode</code></a> has
@@ -505,7 +505,7 @@
 href="#AudioSourceNode-section"><code>AudioSourceNode</code></a> nodes and the
 final <a
 href="#AudioDestinationNode-section"><code>AudioDestinationNode</code></a>
-node. The developer doesn't have to worry about low-level stream format details
+node.  The developer doesn't have to worry about low-level stream format details
 when two objects are connected together; <a href="#UpMix-section">the right
 thing just happens</a>. For example, if a mono audio stream is connected to a
 stereo input it should just mix to left and right channels <a
@@ -1228,7 +1228,7 @@
 represents audio sources, the audio destination, and intermediate processing
 modules. These modules can be connected together to form <a
 href="#ModularRouting-section">processing graphs</a> for rendering audio to the
-audio hardware. Each node can have inputs and/or outputs. An <a
+audio hardware. Each node can have <dfn>inputs</dfn> and/or <dfn>outputs</dfn>. An <a
 href="#AudioSourceNode-section"><code>AudioSourceNode</code></a> has no inputs
 and a single output. An <a
 href="#AudioDestinationNode-section"><code>AudioDestinationNode</code></a> has
@@ -1237,14 +1237,25 @@
 output.  Each type of <code>AudioNode</code> differs in the details of how it processes or synthesizes audio.  But, in general, <code>AudioNodes</code>
 will process its inputs (if it has any), and generate audio for its outputs (if it has any).
  </p>
-
+ 
 <p>
-An output may connect to one or more <code>AudioNode</code> inputs, thus <em>fanout</em> is supported.  An input may be connected from one
-or more <code>AudioNode</code> outputs, thus <em>fanin</em> is supported. 
+Each <dfn>output</dfn> has one or more <dfn>channels</dfn>.  The exact number of channels depends on the details of the specific AudioNode.
 </p>
 
 <p>
-In order to handle this <em>fanin</em>, any <code>AudioNode</code> with inputs performs an up-mixing of all connections <em>for each input</em>:
+An output may connect to one or more <code>AudioNode</code> inputs, thus <em>fan-out</em> is supported.  An input initially has no connections,
+but may be connected from one
+or more <code>AudioNode</code> outputs, thus <em>fan-in</em> is supported.  When the <code>connect()</code> method is called to connect
+an output of an AudioNode to an input of an AudioNode, we call that a <dfn>connection</dfn> to the input.
+</p>
+
+<p>
+Each AudioNode <dfn>input</dfn> has a specific number of channels at any given time.  This number can change depending on the <dfn>connection(s)</dfn>
+made to the input.  If the input has no connections then it has one channel which is silent.
+</p>
+
+<p>
+In order to handle this <em>fan-in</em>, any <code>AudioNode</code> with inputs performs an up-mixing of all connections <em>for each input</em>:
 </p>
 
 <ol>
@@ -1323,7 +1334,7 @@
       which input of the destination AudioNode to connect to. An out-of-bound
       value throws an exception. </p>
       <p>It is possible to connect an AudioNode output to more than one input
-      with multiple calls to connect(). Thus, "fanout" is supported. </p>
+      with multiple calls to connect(). Thus, "fan-out" is supported. </p>
       <p>
       It is possible to connect an AudioNode to another AudioNode which creates a <em>cycle</em>.
       In other words, an AudioNode may connect to another AudioNode, which in turn connects back
@@ -1361,9 +1372,9 @@
       out-of-bound value throws an exception.</p>      
 
       <p>It is possible to connect an AudioNode output to more than one AudioParam
-      with multiple calls to connect(). Thus, "fanout" is supported. </p>
+      with multiple calls to connect(). Thus, "fan-out" is supported. </p>
       <p>It is possible to connect more than one AudioNode output to a single AudioParam
-      with multiple calls to connect().  Thus, "fanin" is supported. </p>
+      with multiple calls to connect().  Thus, "fan-in" is supported. </p>
       <p>An AudioParam will take the rendered audio data from any AudioNode output connected to it and <a href="#down-mix">convert it to mono</a> by down-mixing if it is not
       already mono, then mix it together with other such outputs and finally will mix with the <em>intrinsic</em>
       parameter value (the value the AudioParam would normally have without any audio connections), including any timeline changes
@@ -1886,7 +1897,7 @@
     numberOfOutputs : 1
     </pre>
 
-<p>which multiplies the input audio signal by the (possibly time-varying) <code>gain</code> attribute, copying the result to the output.
+<p>It multiplies the input audio signal by the (possibly time-varying) <code>gain</code> attribute, copying the result to the output.
  By default, it will take the input and pass it through to the output unchanged, which represents a constant gain change
  of 1. 
 </p>
@@ -1949,7 +1960,11 @@
     numberOfOutputs : 1
     </pre>
 
-<p>which delays the incoming audio signal by a certain amount. The default
+<p>
+The number of channels of the output always equals the number of channels of the input.
+</p>
+
+<p>It delays the incoming audio signal by a certain amount. The default
 amount is 0 seconds (no delay). When the delay time is changed, the
 implementation must make the transition smoothly, without introducing
 noticeable clicks or glitches to the audio stream. </p>
@@ -2085,6 +2100,11 @@
     numberOfOutputs : 1
     </pre>
 
+<p>
+The number of channels of the output always equals the number of channels of the AudioBuffer
+assigned to the .buffer attribute, or is one channel of silence if .buffer is NULL.
+</p>
+
 <div class="block">
 
 <div class="blockTitleDiv">
@@ -2245,6 +2265,12 @@
     numberOfOutputs : 1
     </pre>
 
+<p>
+The number of channels of the output corresponds to the number of channels of the media referenced by the HTMLMediaElement.
+Thus, changes to the media element's .src attribute can change the number of channels output by this node.
+If the .src attribute is not set, then the number of channels output will be one silent channel.
+</p>
+
 <div class="block">
 
 <div class="blockTitleDiv">
@@ -3167,10 +3193,13 @@
 filter parameters such as "frequency" can be changed over time for filter
 sweeps, etc. Each BiquadFilterNode can be configured as one of a number of
 common filter types as shown in the IDL below.  The default filter type
-is "lowpass" </p>
+is "lowpass".</p>
 <pre>    numberOfInputs  : 1
     numberOfOutputs : 1
     </pre>
+<p>
+The number of channels of the output always equals the number of channels of the input.
+</p>
 
 <div class="block">
 
@@ -3417,11 +3446,15 @@
 
 <p>Non-linear waveshaping distortion is commonly used for both subtle
 non-linear warming, or more obvious distortion effects. Arbitrary non-linear
-shaping curves may be specified. </p>
+shaping curves may be specified.</p>
 <pre>    numberOfInputs  : 1
     numberOfOutputs : 1
     </pre>
 
+<p>
+The number of channels of the output always equals the number of channels of the input.
+</p>
+
 <div class="block">
 
 <div class="blockTitleDiv">
@@ -3656,6 +3689,11 @@
 </pre>
 
 <p>
+The number of channels of the output corresponds to the number of channels of the <code>AudioMediaStreamTrack</code>.
+If there is no valid audio track, then the number of channels output will be one silent channel.
+</p>
+
+<p>
 The number of channels of the input is by default 2 (stereo).  Any connections to the input
 are up-mixed/down-mixed to the number of channels of the input.
 </p>