|
|
@@ -348,9 +348,9 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
{"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":"AudioInputI2Sslave","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2sslave","inputs":0,"outputs":2,"category":"input-function","color":"#F7D8F0","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":"AudioInputSPDIF3","data":{"defaults":{"name":{"value":"new"}},"shortName":"spdif3","inputs":0,"outputs":2,"category":"input-function","color":"#F7D8F0","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"}}, |
|
|
@@ -363,7 +363,7 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
{"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":"AudioOutputI2Sslave","data":{"defaults":{"name":{"value":"new"}},"shortName":"i2sslave","inputs":2,"outputs":0,"category":"output-function","color":"#F7D8F0","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"}}, |
|
|
@@ -478,6 +478,7 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
<li><a href="https://www.pjrc.com/store/teensy3_audio.html">STGL5000</a> |
|
|
|
<li><a href="https://forum.pjrc.com/threads/42665-New-Audio-Board!-TI-TLV320AIC3206">TLV320AIC3206</a> |
|
|
|
<li><a href="https://forum.pjrc.com/threads/32276-HiFi-Audio-CODEC-Module-AK4558-evaluation-board-in-a-square-inch-PCB">AK4558</a> |
|
|
|
<li>WM8731 |
|
|
|
</ul> |
|
|
|
</p> |
|
|
|
<p>Compatible ADC Chips: |
|
|
@@ -734,6 +735,105 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
<script type="text/x-red" data-help-name="AudioInputSPDIF3"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<p>Receive S/PDIF digital audio, at the rate of the external digital audio source.</p> |
|
|
|
<p><span style="color:red">This input is incompatible with most other inputs and outputs</span> |
|
|
|
which run at a speed controlled by Teensy's internal sample rate.</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 class=func><span class=keyword>pllLocked</span>();</p> |
|
|
|
<p class=desc>Returns true if the S/PDIF phase locked loop is tracking |
|
|
|
the sample rate of incoming digital audio data. |
|
|
|
</p> |
|
|
|
<p class=func><span class=keyword>sampleRate</span>();</p> |
|
|
|
<p class=desc>Returns the sample rate of incoming data, if the PLL has locked, |
|
|
|
or returns 0 if the audio sample rate is unknown. |
|
|
|
</p> |
|
|
|
<h3>Hardware</h3> |
|
|
|
<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>15</td><td>S/PDIF Data</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
</p> |
|
|
|
<h3>Examples</h3> |
|
|
|
<!--<p class=exam>File > Examples > Audio > HardwareTesting > PassThroughAsyncSpdif |
|
|
|
</p>--> |
|
|
|
<h3>Notes</h3> |
|
|
|
<p>This input tries to force the entire audio library to run at the |
|
|
|
sample rate of the incoming data. It usually can not be combined |
|
|
|
with most other inputs and outputs which run at specific speeds.</p> |
|
|
|
</script> |
|
|
|
<script type="text/x-red" data-template-name="AudioInputSPDIF3"> |
|
|
|
<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="AsyncAudioInputSPDIF3"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<p>Receive S/PDIF digital audio and resample to Teensy's audio sample rate.</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 class=func><span class=keyword>getBufferedTime</span>();</p> |
|
|
|
<p class=desc>TODO: documentation needed here (and what units does the returned value use?) |
|
|
|
</p> |
|
|
|
<p class=func><span class=keyword>getInputFrequency</span>();</p> |
|
|
|
<p class=desc>TODO: documentation needed here |
|
|
|
</p> |
|
|
|
<p class=func><span class=keyword>isLocked</span>();</p> |
|
|
|
<p class=desc>Returns true if the S/PDIF phase locked loop is tracking |
|
|
|
the sample rate of incoming digital audio data. |
|
|
|
</p> |
|
|
|
<p class=func><span class=keyword>getTargetLantency</span>();</p> |
|
|
|
<p class=desc>TODO: documentation needed here (and what units does the returned value use?) |
|
|
|
</p> |
|
|
|
<h3>Hardware</h3> |
|
|
|
<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>15</td><td>S/PDIF Data</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
</p> |
|
|
|
<h3>Examples</h3> |
|
|
|
<p class=exam>File > Examples > Audio > HardwareTesting > PassThroughAsyncSpdif |
|
|
|
</p> |
|
|
|
<h3>Notes</h3> |
|
|
|
<p>TODO: document optional instance parameters.... (dither, noiseshaping, attenuation, minHalfFilterLength) </p> |
|
|
|
</script> |
|
|
|
<script type="text/x-red" data-template-name="AsyncAudioInputSPDIF3"> |
|
|
|
<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> |
|
|
@@ -875,6 +975,8 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
<div class=tooltipinfo> |
|
|
|
<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> |
|
|
|
<p><span style="color:red">This input is incompatible with most other inputs and outputs</span> |
|
|
|
which run at a speed controlled by Teensy's internal sample rate.</p> |
|
|
|
</div> |
|
|
|
<h3>Boards Supported</h3> |
|
|
|
<ul> |
|
|
@@ -968,7 +1070,7 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
<a href="https://forum.pjrc.com/threads/42894">Invensense ICS-52000 microphones</a>. |
|
|
|
</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, 11.3 MHz</td></tr> |
|
|
|
<tr class=odd><td align=center>11</td><td align=center>23</td><td>MCLK</td><td>Output, 22.6 MHz</td></tr> |
|
|
|
<tr class=odd><td align=center>13</td><td align=center>8</td><td>RX</td><td>Input, 11.3 Mbit/sec</td></tr> |
|
|
@@ -996,6 +1098,64 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
</div> |
|
|
|
</script> |
|
|
|
|
|
|
|
<script type="text/x-red" data-help-name="AudioInputTDM2"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<p>Receive a 256 bit Time Division Multiplexed frame containing |
|
|
|
many audio channels, using the I2S2 port.</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>Bits 0 to 15</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 1</td><td>Bits 16 to 31</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 2</td><td>Bits 32 to 47</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 3</td><td>Bits 48 to 63</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 4</td><td>Bits 64 to 79</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 5</td><td>Bits 80 to 95</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 6</td><td>Bits 96 to 111</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 7</td><td>Bits 112 to 127</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 8</td><td>Bits 128 to 143</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 9</td><td>Bits 144 to 159</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 10</td><td>Bits 160 to 175</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 11</td><td>Bits 176 to 191</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 12</td><td>Bits 192 to 207</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 13</td><td>Bits 208 to 223</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 14</td><td>Bits 224 to 239</td></tr> |
|
|
|
<tr class=odd><td align=center>Out 15</td><td>Bits 240 to 255</td></tr> |
|
|
|
</table> |
|
|
|
<h3>Functions</h3> |
|
|
|
<p>This object has no functions to call from the Arduino sketch. It |
|
|
|
simply streams data from the TDM hardware to its 16 output ports.</p> |
|
|
|
<h3>Hardware</h3> |
|
|
|
<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>4</td><td>BCLK</td><td>Output, 11.3 MHz</td></tr> |
|
|
|
<tr class=odd><td align=center>33</td><td>MCLK</td><td>Output, 22.6 MHz</td></tr> |
|
|
|
<tr class=odd><td align=center>5</td><td>RX</td><td>Input, 11.3 Mbit/sec</td></tr> |
|
|
|
<tr class=odd><td align=center>3</td><td>FS</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
<!--<h3>Examples</h3>--> |
|
|
|
<h3>Notes</h3> |
|
|
|
<p>When used with TDM devices which transmit 32 bit audio, the |
|
|
|
even numbered channels will contain the useful upper 16 |
|
|
|
bits of audio data.</p> |
|
|
|
<p>AudioMemory should be at least 16. Even if most channels are |
|
|
|
unused, this TDM object will need to allocate 16 blocks of |
|
|
|
memory.</p> |
|
|
|
</script> |
|
|
|
<script type="text/x-red" data-template-name="AudioInputTDM2"> |
|
|
|
<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="AudioInputPDM"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
@@ -1133,7 +1293,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>22</td><td align=center>7</td><td>TX</td><td>Output</td></tr> |
|
|
@@ -1347,12 +1507,49 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/x-red" data-help-name="AudioOutputI2S2"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<p>Transmit 16 bit stereo audio to an I2S device, using I2S master mode, on the I2S2 port.</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>Left Channel</td></tr> |
|
|
|
<tr class=odd><td align=center>In 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 its 2 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>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>2</td><td>TX</td><td>Output</td></tr> |
|
|
|
<tr class=odd><td align=center>3</td><td>LRCLK</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
<h3>Examples</h3> |
|
|
|
<h3>Notes</h3> |
|
|
|
</script> |
|
|
|
<script type="text/x-red" data-template-name="AudioOutputI2S2"> |
|
|
|
<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>Transmit 16 bit stereo audio as Digital S/PDIF by use of the I2S port.</p> |
|
|
|
<p align=center><img src="img/spdif_proto.jpg"></p> |
|
|
|
</div> |
|
|
|
<h3>Boards Supported</h3> |
|
|
@@ -1372,13 +1569,13 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
<h3>Functions</h3> |
|
|
|
<p>This object has no functions to call from the Arduino sketch. It |
|
|
|
simply streams data from its 2 input ports S/PDIF encoded digital |
|
|
|
audio on pin 22.</p> |
|
|
|
audio on pin 22 (Teensy 3.x) or pin 7 (Teensy 4.x).</p> |
|
|
|
<h3>Hardware</h3> |
|
|
|
<p>The S/PDIF output signal can be used to drive an optical TOSLINK |
|
|
|
cable, or a standard (usually orange) RCA jack.</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>22</td><td>S/PDIF</td><td>Output</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>22</td><td align=center>7</td><td>S/PDIF</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
<p>For optical TOSLINK output, this |
|
|
|
<a href="https://www.oshpark.com/shared_projects/KcDBKHta" target="_blank">OSH Park board</a> |
|
|
@@ -1410,6 +1607,106 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
</div> |
|
|
|
</script> |
|
|
|
|
|
|
|
<script type="text/x-red" data-help-name="AudioOutputSPDIF2"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<p>Transmit 16 bit stereo audio as Digital S/PDIF by use of the I2S2 port.</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>Left Channel</td></tr> |
|
|
|
<tr class=odd><td align=center>In 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 its 2 input ports S/PDIF encoded digital |
|
|
|
audio on pin 2 (Teensy 4.x).</p> |
|
|
|
<h3>Hardware</h3> |
|
|
|
<p>The S/PDIF output signal can be used to drive an optical TOSLINK |
|
|
|
cable, or a standard (usually orange) RCA jack.</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>2</td><td>S/PDIF</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
<h3>Examples</h3> |
|
|
|
<p>The AudioOutputSPDIF object can be used in place of the AudioOutputI2S object, |
|
|
|
<p>used in nearly all the examples. The WavFilePlayer shows how to substitute |
|
|
|
output objects for different hardware types. |
|
|
|
</p> |
|
|
|
<p class=exam>File > Examples > Audio > WavFilePlayer |
|
|
|
</p> |
|
|
|
<h3>Credits</h3> |
|
|
|
<p><a href="https://github.com/FrankBoesing" target="_blank">Frank Boesing</a> |
|
|
|
developed the AudioOutputSPDIF code. The original |
|
|
|
<a href="https://forum.pjrc.com/threads/28639-S-pdif" target="_blank">forum disussion</a> |
|
|
|
included valuable input and code from "kpc". |
|
|
|
<h3>Notes</h3> |
|
|
|
<p>S/PDIF output uses the I2S2 hardware. This object can not be used |
|
|
|
together with any of the I2S2 objects, because it requires the I2S2 |
|
|
|
hardware with different internal settings.</p> |
|
|
|
</p> |
|
|
|
</script> |
|
|
|
<script type="text/x-red" data-template-name="AudioOutputSPDIF2"> |
|
|
|
<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="AudioOutputSPDIF3"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<p>Transmit 16 bit stereo audio as Digital S/PDIF by use of the native S/PDIF port.</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>Left Channel</td></tr> |
|
|
|
<tr class=odd><td align=center>In 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 its 2 input ports S/PDIF encoded digital |
|
|
|
audio on pin 14 (Teensy 4.x).</p> |
|
|
|
<h3>Hardware</h3> |
|
|
|
<p>The S/PDIF output signal can be used to drive an optical TOSLINK |
|
|
|
cable, or a standard (usually orange) RCA jack.</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>14</td><td>S/PDIF</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
<h3>Examples</h3> |
|
|
|
<p>The AudioOutputSPDIF object can be used in place of the AudioOutputI2S object, |
|
|
|
<p>used in nearly all the examples. The WavFilePlayer shows how to substitute |
|
|
|
output objects for different hardware types. |
|
|
|
</p> |
|
|
|
<p class=exam>File > Examples > Audio > WavFilePlayer |
|
|
|
</p> |
|
|
|
<h3>Credits</h3> |
|
|
|
<p><a href="https://github.com/FrankBoesing" target="_blank">Frank Boesing</a> |
|
|
|
developed the AudioOutputSPDIF3 code. |
|
|
|
<h3>Notes</h3> |
|
|
|
<p>Native S/PDIF hardware is used, which is more efficient that use of I2S ports.</p> |
|
|
|
</p> |
|
|
|
</script> |
|
|
|
<script type="text/x-red" data-template-name="AudioOutputSPDIF3"> |
|
|
|
<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="AudioOutputPT8211"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
@@ -1437,10 +1734,10 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
oversampling and filtering is automatically used to improve quality.</p> |
|
|
|
<h3>Hardware</h3> |
|
|
|
<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>BCK</td><td>Output</td></tr> |
|
|
|
<tr class=odd><td align=center>22</td><td>DIN</td><td>Output</td></tr> |
|
|
|
<tr class=odd><td align=center>23</td><td>FS</td><td>Output</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>BCK</td><td>Output</td></tr> |
|
|
|
<tr class=odd><td align=center>22</td><td align=center>7</td><td>DIN</td><td>Output</td></tr> |
|
|
|
<tr class=odd><td align=center>23</td><td align=center>20</td><td>FS</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
<p>More information can be found in the PT8211 datasheet. |
|
|
|
</p> |
|
|
@@ -1462,6 +1759,52 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
</div> |
|
|
|
</script> |
|
|
|
|
|
|
|
<script type="text/x-red" data-help-name="AudioOutputPT8211_2"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<p>Transmit 16 bit stereo audio to a low-cost PT8211 DAC chip, using the I2S2 port. 4X oversampling |
|
|
|
and filtering are automatically used to improve output quality.</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>Left Channel</td></tr> |
|
|
|
<tr class=odd><td align=center>In 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 its 2 input ports to a PT8211 chip. 4X |
|
|
|
oversampling and filtering is automatically used to improve quality.</p> |
|
|
|
<h3>Hardware</h3> |
|
|
|
<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>4</td><td>BCK</td><td>Output</td></tr> |
|
|
|
<tr class=odd><td align=center>2</td><td>DIN</td><td>Output</td></tr> |
|
|
|
<tr class=odd><td align=center>3</td><td>FS</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
<p>More information can be found in the PT8211 datasheet. |
|
|
|
</p> |
|
|
|
<h3>Examples</h3> |
|
|
|
<h3>Credits</h3> |
|
|
|
<p>Frank Boesing and Benjamin developed this PT8211 object. Details can be |
|
|
|
found on this |
|
|
|
<a href="https://forum.pjrc.com/threads/29284-Dual-channel-16bit-dac-PT8211/page3" target="_blank">forum disussion</a>. |
|
|
|
<h3>Notes</h3> |
|
|
|
<p> |
|
|
|
</p> |
|
|
|
</script> |
|
|
|
<script type="text/x-red" data-template-name="AudioOutputPT8211_2"> |
|
|
|
<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="AudioOutputAnalog"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
@@ -1577,7 +1920,7 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
<script type="text/x-red" data-help-name="AudioOutputPWM"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<p>Transmit audio using Teensy 3.1's PWM pins. Two pins are |
|
|
|
<p>Transmit audio using Teensy 3's PWM pins. Two pins are |
|
|
|
used for coarse and fine pulses, to be combined by scaled |
|
|
|
resistors.</p> |
|
|
|
</div> |
|
|
@@ -1632,11 +1975,50 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
</div> |
|
|
|
</script> |
|
|
|
|
|
|
|
<script type="text/x-red" data-help-name="AudioOutputMQS"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<p>Transmit 16 bit stereo audio using Medium Quality Sound pulses, usually better than PWM, |
|
|
|
but not as good as a proper DAC or the audio shield.</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>Left Channel</td></tr> |
|
|
|
<tr class=odd><td align=center>In 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 its 2 input ports to generate output pulses.</p> |
|
|
|
<h3>Hardware</h3> |
|
|
|
<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>12</td><td>Left</td><td>Output</td></tr> |
|
|
|
<tr class=odd><td align=center>10</td><td>Right</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
<h3>Examples</h3> |
|
|
|
<h3>Notes</h3> |
|
|
|
<p>TODO: can this really be used together with other inputs and outputs?</p> |
|
|
|
</script> |
|
|
|
<script type="text/x-red" data-template-name="AudioOutputMQS"> |
|
|
|
<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="AudioOutputI2Sslave"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<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> |
|
|
|
<p><span style="color:red">This input is incompatible with most other inputs and outputs</span> |
|
|
|
which run at a speed controlled by Teensy's internal sample rate.</p> |
|
|
|
</div> |
|
|
|
<h3>Boards Supported</h3> |
|
|
|
<ul> |
|
|
@@ -1727,7 +2109,7 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
CS42448 Circuit Board</a>. |
|
|
|
</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, 11.3 MHz</td></tr> |
|
|
|
<tr class=odd><td align=center>11</td><td align=center>23</td><td>MCLK</td><td>Output, 22.6 MHz</td></tr> |
|
|
|
<tr class=odd><td align=center>22</td><td align=center>7</td><td>TX</td><td>Output, 11.3 Mbit/sec</td></tr> |
|
|
@@ -1751,6 +2133,60 @@ span.mainfunction {color: #993300; font-weight: bolder} |
|
|
|
</div> |
|
|
|
</script> |
|
|
|
|
|
|
|
<script type="text/x-red" data-help-name="AudioOutputTDM2"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |
|
|
|
<p>Transmit a 256 bit Time Division Multiplexed frame containing |
|
|
|
many audio channels, using the I2S2 port.</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>Bits 0 to 15</td></tr> |
|
|
|
<tr class=odd><td align=center>In 1</td><td>Bits 16 to 31</td></tr> |
|
|
|
<tr class=odd><td align=center>In 2</td><td>Bits 32 to 47</td></tr> |
|
|
|
<tr class=odd><td align=center>In 3</td><td>Bits 48 to 63</td></tr> |
|
|
|
<tr class=odd><td align=center>In 4</td><td>Bits 64 to 79</td></tr> |
|
|
|
<tr class=odd><td align=center>In 5</td><td>Bits 80 to 95</td></tr> |
|
|
|
<tr class=odd><td align=center>In 6</td><td>Bits 96 to 111</td></tr> |
|
|
|
<tr class=odd><td align=center>In 7</td><td>Bits 112 to 127</td></tr> |
|
|
|
<tr class=odd><td align=center>In 8</td><td>Bits 128 to 143</td></tr> |
|
|
|
<tr class=odd><td align=center>In 9</td><td>Bits 144 to 159</td></tr> |
|
|
|
<tr class=odd><td align=center>In 10</td><td>Bits 160 to 175</td></tr> |
|
|
|
<tr class=odd><td align=center>In 11</td><td>Bits 176 to 191</td></tr> |
|
|
|
<tr class=odd><td align=center>In 12</td><td>Bits 192 to 207</td></tr> |
|
|
|
<tr class=odd><td align=center>In 13</td><td>Bits 208 to 223</td></tr> |
|
|
|
<tr class=odd><td align=center>In 14</td><td>Bits 224 to 239</td></tr> |
|
|
|
<tr class=odd><td align=center>In 15</td><td>Bits 240 to 255</td></tr> |
|
|
|
</table> |
|
|
|
<h3>Functions</h3> |
|
|
|
<p>This object has no functions to call from the Arduino sketch. It |
|
|
|
simply streams data from its 16 input ports to the TDM hardware.</p> |
|
|
|
<h3>Hardware</h3> |
|
|
|
<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>4</td><td>BCLK</td><td>Output, 11.3 MHz</td></tr> |
|
|
|
<tr class=odd><td align=center>33</td><td>MCLK</td><td>Output, 22.6 MHz</td></tr> |
|
|
|
<tr class=odd><td align=center>2</td><td>TX</td><td>Output, 11.3 Mbit/sec</td></tr> |
|
|
|
<tr class=odd><td align=center>3</td><td>WS</td><td>Output</td></tr> |
|
|
|
</table> |
|
|
|
<!--<h3>Examples</h3>--> |
|
|
|
<h3>Notes</h3> |
|
|
|
<p>When used with TDM devices which receive 32 bit audio, the |
|
|
|
even numbered channels are used for the top 16 bits.</p> |
|
|
|
</script> |
|
|
|
<script type="text/x-red" data-template-name="AudioOutputTDM2"> |
|
|
|
<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="AudioOutputADAT"> |
|
|
|
<h3>Summary</h3> |
|
|
|
<div class=tooltipinfo> |