| @@ -349,6 +349,7 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| {"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":"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"}}, | |||
| @@ -762,6 +763,56 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| </div> | |||
| </script> | |||
| <script type="text/x-red" data-help-name="AudioInputPDM"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||
| <p>Receive (and filter) a Pulse Density Modulated bitstream. | |||
| </p> | |||
| <p align=center><img src="img/pdmmic.jpg"><br><small>PDM MEMS Mic</small></p> | |||
| </div> | |||
| <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>Filtered Audio Output</td></tr> | |||
| </table> | |||
| <h3>Functions</h3> | |||
| <p>This object has no functions to call from the Arduino sketch. It | |||
| simply streams data from the PDM data, filters out the high frequency | |||
| noise and gives you the audio signal.</p> | |||
| <h3>Hardware</h3> | |||
| <p>PDM has been tested with this <a href="https://www.adafruit.com/product/3492"> | |||
| Adafruit MP34DT01-M Microphone Board</a>. | |||
| </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>CLK</td><td>Output, 2.8235 MHz</td></tr> | |||
| <tr class=odd><td align=center>13</td><td>DATA</td><td>Input, Data on rising edge</td></tr> | |||
| </table> | |||
| <p>Data is input on the rising edge. The SEL pin on MP34DT01-M should be | |||
| connected LOW for proper data capture.</p> | |||
| <!--<h3>Examples</h3>--> | |||
| <h3>Notes</h3> | |||
| <p>Filtering consumes approximately 39% of the CPU when running at | |||
| 96 MHz. The code currently consumes this time inside a high | |||
| priority interrupt, blocking other libraries. Perhaps future | |||
| versions will perform filtering at lower priority. | |||
| </p> | |||
| <p>The filter used is a 512 tap FIR with approx ±1.1 dB gain | |||
| flatness to 10 kHz. While far from audiophile grade, this should | |||
| perform far better than the rapid rolloff of Cascaded Integrator | |||
| Comb (CIC) or simple moving average filters commonly used on | |||
| other microcontrollers. The filter also consumes 2104 bytes of | |||
| RAM for buffering and 32K of Flash for a lookup table to optimized | |||
| the filter computation. | |||
| </p> | |||
| </script> | |||
| <script type="text/x-red" data-template-name="AudioInputPDM"> | |||
| <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="AudioInputUSB"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||