| @@ -346,23 +346,39 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| {"nodes":[ | |||
| {"type":"AudioInputI2S","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2s","inputs":0,"outputs":2,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputI2SQuad","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2s_quad","inputs":0,"outputs":4,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputI2SHex","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2s_hex","inputs":0,"outputs":6,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputI2SOct","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2s_oct","inputs":0,"outputs":8,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputI2Sslave","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2sslave","inputs":0,"outputs":2,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputI2S2","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2s2","inputs":0,"outputs":2,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputSPDIF3","data":{"defaults":{"name":{"value":"new"}},"shortName":"spdif","inputs":0,"outputs":2,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AsyncAudioInputSPDIF3","data":{"defaults":{"name":{"value":"new"}},"shortName":"spdif_async","inputs":0,"outputs":2,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputAnalog","data":{"defaults":{"name":{"value":"new"}},"shortName":"adc","inputs":0,"outputs":1,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputAnalogStereo","data":{"defaults":{"name":{"value":"new"}},"shortName":"adcs","inputs":0,"outputs":2,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputI2Sslave","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2sslave","inputs":0,"outputs":2,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputPDM","data":{"defaults":{"name":{"value":"new"}},"shortName":"pdm","inputs":0,"outputs":1,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputTDM","data":{"defaults":{"name":{"value":"new"}},"shortName":"tdm","inputs":0,"outputs":16,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputTDM2","data":{"defaults":{"name":{"value":"new"}},"shortName":"tdm2","inputs":0,"outputs":16,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioInputUSB","data":{"defaults":{"name":{"value":"new"}},"shortName":"usb","inputs":0,"outputs":2,"category":"input-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputI2S","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2s","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputI2SQuad","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2s_quad","inputs":4,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputI2SHex","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2s_hex","inputs":6,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputI2SOct","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2s_oct","inputs":8,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputI2Sslave","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2sslave","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputI2S2","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2s2","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputSPDIF","data":{"defaults":{"name":{"value":"new"}},"shortName":"spdif","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputSPDIF2","data":{"defaults":{"name":{"value":"new"}},"shortName":"spdif2","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputSPDIF3","data":{"defaults":{"name":{"value":"new"}},"shortName":"spdif3","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputPT8211","data":{"defaults":{"name":{"value":"new"}},"shortName":"pt8211","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputPT8211_2","data":{"defaults":{"name":{"value":"new"}},"shortName":"pt8211_2","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputAnalog","data":{"defaults":{"name":{"value":"new"}},"shortName":"dac","inputs":1,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputAnalogStereo","data":{"defaults":{"name":{"value":"new"}},"shortName":"dacs","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputPWM","data":{"defaults":{"name":{"value":"new"}},"shortName":"pwm","inputs":1,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputI2Sslave","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2sslave","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputMQS","data":{"defaults":{"name":{"value":"new"}},"shortName":"mqs","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputTDM","data":{"defaults":{"name":{"value":"new"}},"shortName":"tdm","inputs":16,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputTDM2","data":{"defaults":{"name":{"value":"new"}},"shortName":"tdm2","inputs":16,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputADAT","data":{"defaults":{"name":{"value":"new"}},"shortName":"adat","inputs":8,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioOutputUSB","data":{"defaults":{"name":{"value":"new"}},"shortName":"usb","inputs":2,"outputs":0,"category":"output-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioAmplifier","data":{"defaults":{"name":{"value":"new"}},"shortName":"amp","inputs":1,"outputs":1,"category":"mixer-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioMixer4","data":{"defaults":{"name":{"value":"new"}},"shortName":"mixer","inputs":4,"outputs":1,"category":"mixer-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioPlayMemory","data":{"defaults":{"name":{"value":"new"}},"shortName":"playMem","inputs":0,"outputs":1,"category":"play-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| @@ -426,6 +442,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| or another I2S device, using I2S master mode.</p> | |||
| <p align=center><img src="img/audioshield_inputs.jpg"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -440,7 +464,7 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p>The I2S signals are used in "master" mode, where Teensy creates | |||
| all 3 clock signals and controls all data timing.</p> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>T3.x<br>Pin</th><th>T4.0<br>Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=top><th>T3.x<br>Pin</th><th>T4.x<br>Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>9</td><td align=center>21</td><td>BCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>11</td><td align=center>23</td><td>MCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>13</td><td align=center>8</td><td>RX</td><td>Input</td></tr> | |||
| @@ -510,6 +534,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| or another I2S devices, using I2S master mode.</p> | |||
| <p align=center><img src="img/audioshield_quad_in.jpg"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -527,12 +559,12 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p>The I2S signals are used in "master" mode, where Teensy creates | |||
| all 3 clock signals and controls all data timing.</p> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Teensy<br>3.2 Pin</th><th>Teensy<br>3.5/3.6 Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>9</td><td align=center>9</td><td>BCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>11</td><td align=center>11</td><td>MCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>13</td><td align=center>13</td><td>RX</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>30</td><td align=center>38</td><td>RX</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>23</td><td align=center>23</td><td>LRCLK</td><td>Output</td></tr> | |||
| <tr class=top><th>Teensy<br>3.2<br>Pin</th><th>Teensy<br>3.5/3.6<br>Pin</th><th>Teensy<br>4.x<br>Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>9</td><td align=center>9</td><td align=center>21</td><td>BCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>11</td><td align=center>11</td><td align=center>23</td><td>MCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>13</td><td align=center>13</td><td align=center>8</td><td>RX</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>30</td><td align=center>38</td><td align=center>6</td><td>RX</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>23</td><td align=center>23</td><td align=center>20</td><td>LRCLK</td><td>Output</td></tr> | |||
| </table> | |||
| <p>Audio from | |||
| master mode I2S may be used in the same project as ADC, DAC and | |||
| @@ -541,6 +573,9 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p class=exam>File > Examples > Audio > HardwareTesting > PassThroughQuad | |||
| </p> | |||
| <h3>Notes</h3> | |||
| <p>On Teensy 3.x, the BCLK/LRCLK ratio is 32, which is not compatible with | |||
| most MEMS microphones. Teensy 4.x uses BCLK/LRCLK ratio, which can | |||
| be used with I2S MEMS microphones.</p> | |||
| <p>Normally, this object is used with two Audio Shield, which | |||
| are controlled separately by a pair "sgtl5000" object.</p> | |||
| </script> | |||
| @@ -551,11 +586,167 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| </div> | |||
| </script> | |||
| <script type="text/x-red" data-help-name="AudioInputI2SHex"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||
| <p>Receive 6 channel audio from three I2S devices, using I2S master mode.</p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| <tr class=odd><td align=center>Out 0</td><td>Channel #1</td></tr> | |||
| <tr class=odd><td align=center>Out 1</td><td>Channel #2</td></tr> | |||
| <tr class=odd><td align=center>Out 2</td><td>Channel #3</td></tr> | |||
| <tr class=odd><td align=center>Out 3</td><td>Channel #4</td></tr> | |||
| <tr class=odd><td align=center>Out 4</td><td>Channel #5</td></tr> | |||
| <tr class=odd><td align=center>Out 5</td><td>Channel #6</td></tr> | |||
| </table> | |||
| <h3>Functions</h3> | |||
| <p>This object has no functions to call from the Arduino sketch. It | |||
| simply streams data from the I2S hardware to its 6 output ports.</p> | |||
| <h3>Hardware</h3> | |||
| <p>The I2S signals are used in "master" mode, where Teensy creates | |||
| all 3 clock signals and controls all data timing.</p> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Teensy<br>4.x Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>21</td><td>BCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>23</td><td>MCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>8</td><td>RX (ch 1+2)</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>6</td><td>RX (ch 3+4)</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>9</td><td>RX (ch 5+6)</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>20</td><td>LRCLK</td><td>Output</td></tr> | |||
| </table> | |||
| <h3>Examples</h3> | |||
| <!--<p class=exam>File > Examples > Audio > HardwareTesting > PassThroughQuad | |||
| </p>--> | |||
| <h3>Notes</h3> | |||
| <p>Teensy 4.0 & 4.1's I2S port has a total of 5 data pins | |||
| which may each transmit or receive stereo digital audio. This | |||
| 6 channel input may be used together with the I2S stereo or | |||
| quad channel I2S output, but may not be combined with others | |||
| which use the same physical pins.</p> | |||
| </script> | |||
| <script type="text/x-red" data-template-name="AudioInputI2SHex"> | |||
| <div class="form-row"> | |||
| <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> | |||
| <input type="text" id="node-input-name" placeholder="Name"> | |||
| </div> | |||
| </script> | |||
| <script type="text/x-red" data-help-name="AudioInputI2SOct"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||
| <p>Receive 8 channel audio from three I2S devices, using I2S master mode.</p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| <tr class=odd><td align=center>Out 0</td><td>Channel #1</td></tr> | |||
| <tr class=odd><td align=center>Out 1</td><td>Channel #2</td></tr> | |||
| <tr class=odd><td align=center>Out 2</td><td>Channel #3</td></tr> | |||
| <tr class=odd><td align=center>Out 3</td><td>Channel #4</td></tr> | |||
| <tr class=odd><td align=center>Out 4</td><td>Channel #5</td></tr> | |||
| <tr class=odd><td align=center>Out 5</td><td>Channel #6</td></tr> | |||
| <tr class=odd><td align=center>Out 6</td><td>Channel #7</td></tr> | |||
| <tr class=odd><td align=center>Out 7</td><td>Channel #8</td></tr> | |||
| </table> | |||
| <h3>Functions</h3> | |||
| <p>This object has no functions to call from the Arduino sketch. It | |||
| simply streams data from the I2S hardware to its 8 output ports.</p> | |||
| <h3>Hardware</h3> | |||
| <p>The I2S signals are used in "master" mode, where Teensy creates | |||
| all 3 clock signals and controls all data timing.</p> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Teensy<br>4.x Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>21</td><td>BCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>23</td><td>MCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>8</td><td>RX (ch 1+2)</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>6</td><td>RX (ch 3+4)</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>9</td><td>RX (ch 5+6)</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>32</td><td>RX (ch 7+8)</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>20</td><td>LRCLK</td><td>Output</td></tr> | |||
| </table> | |||
| <h3>Examples</h3> | |||
| <!--<p class=exam>File > Examples > Audio > HardwareTesting > PassThroughQuad | |||
| </p>--> | |||
| <h3>Notes</h3> | |||
| <p>Teensy 4.0 & 4.1's I2S port has a total of 5 data pins | |||
| which may each transmit or receive stereo digital audio. This | |||
| 8 channel input may be used together with the I2S stereo | |||
| output, but may not be combined with others | |||
| which use the same physical pins.</p> | |||
| </script> | |||
| <script type="text/x-red" data-template-name="AudioInputI2SOct"> | |||
| <div class="form-row"> | |||
| <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> | |||
| <input type="text" id="node-input-name" placeholder="Name"> | |||
| </div> | |||
| </script> | |||
| <script type="text/x-red" data-help-name="AudioInputI2S2"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||
| <p>Receive 16 bit stereo audio from an I2S device using the 2nd I2S port on Teensy 4.x.</p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| <tr class=odd><td align=center>Out 0</td><td>Left Channel</td></tr> | |||
| <tr class=odd><td align=center>Out 1</td><td>Right Channel</td></tr> | |||
| </table> | |||
| <h3>Functions</h3> | |||
| <p>This object has no functions to call from the Arduino sketch. It | |||
| simply streams data from the I2S hardware to its 2 output ports.</p> | |||
| <h3>Hardware</h3> | |||
| <p>The I2S signals are used in "master" mode, where Teensy creates | |||
| all 3 clock signals and controls all data timing.</p> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>T4.x<br>Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>4</td><td>BCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>33</td><td>MCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>5</td><td>RX</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>3</td><td>LRCLK</td><td>Output</td></tr> | |||
| </table> | |||
| </p> | |||
| <h3>Examples</h3> | |||
| <h3>Notes</h3> | |||
| </script> | |||
| <script type="text/x-red" data-template-name="AudioInputI2S2"> | |||
| <div class="form-row"> | |||
| <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> | |||
| <input type="text" id="node-input-name" placeholder="Name"> | |||
| </div> | |||
| </script> | |||
| <script type="text/x-red" data-help-name="AudioInputAnalog"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||
| <p>Receive audio using the built-in analog to digital converter.</p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 - experimental | |||
| <li>Teensy 4.1 - experimental | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -616,6 +807,12 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <div class=tooltipinfo> | |||
| <p>Receive stereo audio using the built-in analog to digital converters.</p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -679,6 +876,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p>Receive 16 bit stereo audio from an I2S device using I2S slave mode | |||
| (where the ADC or codec chip, not Teensy, controls audio timing).</p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -692,10 +897,10 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p>The I2S signals are used in "slave" mode, where the I2S device controls | |||
| data timing.</p> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>9</td><td>BCLK</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>13</td><td>RX</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>23</td><td>LRCLK</td><td>Input</td></tr> | |||
| <tr class=top><th>Teensy<br>3.x Pin</th><th>Teensy<br>4.x Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>9</td><td align=center>21</td><td>BCLK</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>13</td><td align=center>8</td><td>RX</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>23</td><td align=center>20</td><td>LRCLK</td><td>Input</td></tr> | |||
| </table> | |||
| <!-- | |||
| <h3>Examples</h3> | |||
| @@ -726,6 +931,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| many audio channels.</p> | |||
| <p align=center><img src="img/tdm.jpg"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -790,6 +1003,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| </p> | |||
| <p align=center><img src="img/pdmmic.jpg"><br><small>PDM MEMS Mic</small></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <!--<li>Teensy 4.0 | |||
| <li>Teensy 4.1--> | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -840,6 +1061,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| sound device.</p> | |||
| <p align=center><img src="img/usbtype_audio_in.png"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -882,6 +1111,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| or another I2S device, using I2S master mode.</p> | |||
| <p align=center><img src="img/audioshield_outputs.jpg"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -954,6 +1191,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p>Transmit quad (4) channel 16 bit audio, using I2S master mode.</p> | |||
| <p align=center><img src="img/audioshield_quad_out.jpg"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -972,12 +1217,12 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p>The I2S signals are used in "master" mode, where Teensy creates | |||
| all 3 clock signals and controls all data timing.</p> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>9</td><td>BCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>11</td><td>MCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>22</td><td>TX (ch 1+2)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>15</td><td>TX (ch 3+4)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>23</td><td>LRCLK</td><td>Output</td></tr> | |||
| <tr class=top><th>T3.x<br>Pin</th><th>T4.x<br>Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>9</td><td align=center>21</td><td>BCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>11</td><td align=center>23</td><td>MCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>22</td><td align=center>7</td><td>TX (ch 1+2)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>15</td><td align=center>32</td><td>TX (ch 3+4)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>23</td><td align=center>20</td><td>LRCLK</td><td>Output</td></tr> | |||
| </table> | |||
| <p>Audio from | |||
| master mode I2S may be used in the same project as ADC, DAC and | |||
| @@ -998,12 +1243,126 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| </div> | |||
| </script> | |||
| <script type="text/x-red" data-help-name="AudioOutputI2SHex"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||
| <p>Transmit 6 channel 16 bit audio, using I2S master mode.</p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| <tr class=odd><td align=center>In 0</td><td>Channel #1</td></tr> | |||
| <tr class=odd><td align=center>In 1</td><td>Channel #2</td></tr> | |||
| <tr class=odd><td align=center>In 2</td><td>Channel #3</td></tr> | |||
| <tr class=odd><td align=center>In 3</td><td>Channel #4</td></tr> | |||
| <tr class=odd><td align=center>In 4</td><td>Channel #5</td></tr> | |||
| <tr class=odd><td align=center>In 5</td><td>Channel #6</td></tr> | |||
| </table> | |||
| <h3>Functions</h3> | |||
| <p>This object has no functions to call from the Arduino sketch. It | |||
| simply streams data from its 6 input ports to the I2S hardware.</p> | |||
| <h3>Hardware</h3> | |||
| <p>The I2S signals are used in "master" mode, where Teensy creates | |||
| all 3 clock signals and controls all data timing.</p> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Teensy<br>4.x Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>21</td><td>BCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>23</td><td>MCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>7</td><td>TX (ch 1+2)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>32</td><td>TX (ch 3+4)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>9</td><td>TX (ch 5+6)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>20</td><td>LRCLK</td><td>Output</td></tr> | |||
| </table> | |||
| <h3>Examples</h3> | |||
| <h3>Notes</h3> | |||
| <p>Teensy 4.0 & 4.1's I2S port has a total of 5 data pins | |||
| which may each transmit or receive stereo digital audio. This | |||
| 6 channel output may be used together with the I2S stereo or | |||
| quad channel I2S input, but may not be combined with others | |||
| which use the same physical pins.</p> | |||
| </script> | |||
| <script type="text/x-red" data-template-name="AudioOutputI2SHex"> | |||
| <div class="form-row"> | |||
| <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> | |||
| <input type="text" id="node-input-name" placeholder="Name"> | |||
| </div> | |||
| </script> | |||
| <script type="text/x-red" data-help-name="AudioOutputI2SOct"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||
| <p>Transmit 8 channel 16 bit audio, using I2S master mode.</p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| <tr class=odd><td align=center>In 0</td><td>Channel #1</td></tr> | |||
| <tr class=odd><td align=center>In 1</td><td>Channel #2</td></tr> | |||
| <tr class=odd><td align=center>In 2</td><td>Channel #3</td></tr> | |||
| <tr class=odd><td align=center>In 3</td><td>Channel #4</td></tr> | |||
| <tr class=odd><td align=center>In 4</td><td>Channel #5</td></tr> | |||
| <tr class=odd><td align=center>In 5</td><td>Channel #6</td></tr> | |||
| <tr class=odd><td align=center>In 6</td><td>Channel #7</td></tr> | |||
| <tr class=odd><td align=center>In 7</td><td>Channel #8</td></tr> | |||
| </table> | |||
| <h3>Functions</h3> | |||
| <p>This object has no functions to call from the Arduino sketch. It | |||
| simply streams data from its 8 input ports to the I2S hardware.</p> | |||
| <h3>Hardware</h3> | |||
| <p>The I2S signals are used in "master" mode, where Teensy creates | |||
| all 3 clock signals and controls all data timing.</p> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Teensy<br>4.x Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>21</td><td>BCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>23</td><td>MCLK</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>7</td><td>TX (ch 1+2)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>32</td><td>TX (ch 3+4)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>9</td><td>TX (ch 5+6)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>6</td><td>TX (ch 7+8)</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>20</td><td>LRCLK</td><td>Output</td></tr> | |||
| </table> | |||
| <h3>Examples</h3> | |||
| <h3>Notes</h3> | |||
| <p>Teensy 4.0 & 4.1's I2S port has a total of 5 data pins | |||
| which may each transmit or receive stereo digital audio. This | |||
| 8 channel output may be used together with the I2S stereo | |||
| input, but may not be combined with others | |||
| which use the same physical pins.</p> | |||
| </script> | |||
| <script type="text/x-red" data-template-name="AudioOutputI2SOct"> | |||
| <div class="form-row"> | |||
| <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> | |||
| <input type="text" id="node-input-name" placeholder="Name"> | |||
| </div> | |||
| </script> | |||
| <script type="text/x-red" data-help-name="AudioOutputSPDIF"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||
| <p>Transmit 16 bit stereo audio as Digital S/PDIF.</p> | |||
| <p align=center><img src="img/spdif_proto.jpg"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -1058,6 +1417,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| and filtering are automatically used to improve output quality.</p> | |||
| <p align=center><img src="img/pt8211.jpg"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -1102,6 +1469,12 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p align=center><img src="img/dac_speaker.jpg"><br> | |||
| <small><a href="http://www.pjrc.com/store/prop_shield.html" target="_blank_">Prop Shield with 4Ω Speaker</a></small></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -1156,6 +1529,11 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <!--<p align=center><img src="img/dac_speaker.jpg"><br> | |||
| <small><a href="http://www.pjrc.com/store/prop_shield.html" target="_blank_">Prop Shield with 4Ω Speaker</a></small></p>--> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -1203,6 +1581,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| used for coarse and fine pulses, to be combined by scaled | |||
| resistors.</p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <!--<li>Teensy 4.0 | |||
| <li>Teensy 4.1--> | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -1252,6 +1638,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p>Transmit 16 bit stereo audio to an I2S device using I2S slave mode | |||
| (where the DAC or codec chip, not Teensy, controls audio timing).</p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -1265,10 +1659,10 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p>The I2S signals are used in "slave" mode, where the I2S device controls | |||
| data timing.</p> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>9</td><td>BCLK</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>22</td><td>TX</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>23</td><td>LRCLK</td><td>Input</td></tr> | |||
| <tr class=top><th>Teensy<br>3.x Pin</th><th>Teensy<br>4.x Pin</th><th>Signal</th><th>Direction</th></tr> | |||
| <tr class=odd><td align=center>9</td><td align=center>21</td><td>BCLK</td><td>Input</td></tr> | |||
| <tr class=odd><td align=center>22</td><td align=center>7</td><td>TX</td><td>Output</td></tr> | |||
| <tr class=odd><td align=center>23</td><td align=center>20</td><td>LRCLK</td><td>Input</td></tr> | |||
| </table> | |||
| <h3>Examples</h3> | |||
| <p class=exam>File > Examples > Audio > HardwareTesting > WM8731MikroSine | |||
| @@ -1297,6 +1691,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| many audio channels.</p> | |||
| <p align=center><img src="img/tdm.jpg"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -1355,6 +1757,16 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| <p>Transmit ADAT TOSLINK Optical Output</p> | |||
| <p align=center><img src="img/adat.jpg"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <!--<li>Teensy 4.0 | |||
| <li>Teensy 4.1--> | |||
| </ul> | |||
| <p>ADAT output for Teensy 4.0 is discussed on | |||
| <a href="https://forum.pjrc.com/threads/60914?p=239824&viewfull=1#post239824">this forum thread</a>.</p> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||
| @@ -1402,6 +1814,14 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| sound device.</p> | |||
| <p align=center><img src="img/usbtype_audio_out.png"></p> | |||
| </div> | |||
| <h3>Boards Supported</h3> | |||
| <ul> | |||
| <li>Teensy 3.2 | |||
| <li>Teensy 3.5 | |||
| <li>Teensy 3.6 | |||
| <li>Teensy 4.0 | |||
| <li>Teensy 4.1 | |||
| </ul> | |||
| <h3>Audio Connections</h3> | |||
| <table class=doc align=center cellpadding=3> | |||
| <tr class=top><th>Port</th><th>Purpose</th></tr> | |||