Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

652 lines
18KB

  1. <!-- vim: set ts=4: -->
  2. <!-- TODO: generate some or all of this automatically from the C++ source -->
  3. <script type="text/javascript">
  4. RED.nodes.registerType('AnalogInputI2S',{
  5. shortName: "i2s",
  6. inputs:0,
  7. outputs:2,
  8. category: 'input-function',
  9. color:"#E6E0F8",
  10. icon: "arrow-in.png"
  11. });
  12. </script>
  13. <script type="text/x-red" data-help-name="AnalogInputI2S">
  14. <h3>Summary</h3>
  15. <p>Receive 16 bit stereo audio from the
  16. <a href="http://www.pjrc.com/store/teensy3_audio.html" target="_blank">audio shield</a>
  17. or another I2S device.</p>
  18. <h3>Audio Library Ports</h3>
  19. <table class=doc align=center cellpadding=3>
  20. <tr class=top><th>Port</th><th>Function</th></tr>
  21. <tr class=odd><td align=center>Out 0</td><td>Left Channel</td></tr>
  22. <tr class=odd><td align=center>Out 1</td><td>Right Channel</td></tr>
  23. </table>
  24. <h3>Functions</h3>
  25. <p>This object has no functions to call from the Arduino sketch. It
  26. simply streams data from the I2S hardware to its 2 output ports.</p>
  27. <h3>Hardware</h3>
  28. <p align=center><img src="audioshield_inputs.jpg"></p>
  29. <p>The I2S signals are used in "master" mode, where Teensy creates
  30. all 3 clock signals and controls all data timing.</p>
  31. <table class=doc align=center cellpadding=3>
  32. <tr class=top><th>Pin</th><th>Signal</th><th>Direction</th></tr>
  33. <tr class=odd><td align=center>9</td><td>BCLK</td><td>Output</td></tr>
  34. <tr class=odd><td align=center>11</td><td>MCLK</td><td>Output</td></tr>
  35. <tr class=odd><td align=center>13</td><td>RX</td><td>Input</td></tr>
  36. <tr class=odd><td align=center>23</td><td>LRCLK</td><td>Output</td></tr>
  37. </table>
  38. <p>Audio from
  39. master mode I2S may be used in the same project as ADC, DAC and
  40. PWM signals, because all remain in sync to Teensy's timing</p>
  41. <h3>Notes</h3>
  42. <p>Normally, this object is used with the Audio Shield, which
  43. is controlled separately by the "sgtl5000" object.</p>
  44. <p align=center><img src="audioshield_backside.jpg"></p>
  45. </script>
  46. <script type="text/x-red" data-template-name="AnalogInputI2S">
  47. <div class="form-row">
  48. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  49. <input type="text" id="node-input-name" placeholder="Name">
  50. </div>
  51. </script>
  52. <script type="text/javascript">
  53. RED.nodes.registerType('AnalogInputI2Sslave',{
  54. shortName: "i2ss",
  55. inputs:0,
  56. outputs:2,
  57. category: 'input-function',
  58. color:"#E6E0F8",
  59. icon: "arrow-in.png"
  60. });
  61. </script>
  62. <script type="text/x-red" data-help-name="AnalogInputI2Sslave">
  63. <p>Receive 16 bit stereo audio from a I2S device using slave mode</p>
  64. <p>Stereo audio input from the audio shield or other I2S device</p>
  65. <p><b>TODO</b> Add object documetation here</b>.</p>
  66. </script>
  67. <script type="text/x-red" data-template-name="AnalogInputI2Sslave">
  68. <div class="form-row">
  69. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  70. <input type="text" id="node-input-name" placeholder="Name">
  71. </div>
  72. </script>
  73. <script type="text/javascript">
  74. RED.nodes.registerType('AnalogInputADC',{
  75. shortName: "adc",
  76. inputs:0,
  77. outputs:1,
  78. category: 'input-function',
  79. color:"#E6E0F8",
  80. icon: "arrow-in.png"
  81. });
  82. </script>
  83. <script type="text/x-red" data-help-name="AnalogInputADC">
  84. <p><b>TODO</b> Add object documetation here</b>.</p>
  85. </script>
  86. <script type="text/x-red" data-template-name="AnalogInputADC">
  87. <div class="form-row">
  88. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  89. <input type="text" id="node-input-name" placeholder="Name">
  90. </div>
  91. </script>
  92. <script type="text/javascript">
  93. RED.nodes.registerType('AnalogOutputI2S',{
  94. shortName: "i2s",
  95. inputs:2,
  96. outputs:0,
  97. category: 'output-function',
  98. color:"#E6E0F8",
  99. icon: "arrow-in.png"
  100. });
  101. </script>
  102. <script type="text/x-red" data-help-name="AnalogOutputI2S">
  103. <p><b>TODO</b> Add object documetation here</b>.</p>
  104. </script>
  105. <script type="text/x-red" data-template-name="AnalogOutputI2S">
  106. <div class="form-row">
  107. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  108. <input type="text" id="node-input-name" placeholder="Name">
  109. </div>
  110. </script>
  111. <script type="text/javascript">
  112. RED.nodes.registerType('AnalogOutputI2Sslave',{
  113. shortName: "i2ss",
  114. inputs:2,
  115. outputs:0,
  116. category: 'output-function',
  117. color:"#E6E0F8",
  118. icon: "arrow-in.png"
  119. });
  120. </script>
  121. <script type="text/x-red" data-help-name="AnalogOutputI2Sslave">
  122. <p><b>TODO</b> Add object documetation here</b>.</p>
  123. </script>
  124. <script type="text/x-red" data-template-name="AnalogOutputI2Sslave">
  125. <div class="form-row">
  126. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  127. <input type="text" id="node-input-name" placeholder="Name">
  128. </div>
  129. </script>
  130. <script type="text/javascript">
  131. RED.nodes.registerType('AnalogOutputAnalog',{
  132. shortName: "dac",
  133. inputs:1,
  134. outputs:0,
  135. category: 'output-function',
  136. color:"#E6E0F8",
  137. icon: "arrow-in.png"
  138. });
  139. </script>
  140. <script type="text/x-red" data-help-name="AnalogOutputAnalog">
  141. <p><b>TODO</b> Add object documetation here</b>.</p>
  142. </script>
  143. <script type="text/x-red" data-template-name="AnalogOutputAnalog">
  144. <div class="form-row">
  145. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  146. <input type="text" id="node-input-name" placeholder="Name">
  147. </div>
  148. </script>
  149. <script type="text/javascript">
  150. RED.nodes.registerType('AnalogOutputPWM',{
  151. shortName: "pwm",
  152. inputs:1,
  153. outputs:0,
  154. category: 'output-function',
  155. color:"#E6E0F8",
  156. icon: "arrow-in.png"
  157. });
  158. </script>
  159. <script type="text/x-red" data-help-name="AnalogOutputPWM">
  160. <p><b>TODO</b> Add object documetation here</b>.</p>
  161. </script>
  162. <script type="text/x-red" data-template-name="AnalogOutputPWM">
  163. <div class="form-row">
  164. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  165. <input type="text" id="node-input-name" placeholder="Name">
  166. </div>
  167. </script>
  168. <script type="text/javascript">
  169. RED.nodes.registerType('AudioMixer4',{
  170. shortName: "mixer",
  171. inputs:4,
  172. outputs:1,
  173. category: 'mixer-function',
  174. color:"#E6E0F8",
  175. icon: "arrow-in.png"
  176. });
  177. </script>
  178. <script type="text/x-red" data-help-name="AudioMixer4">
  179. <p><b>TODO</b> Add object documetation here</b>.</p>
  180. </script>
  181. <script type="text/x-red" data-template-name="AudioMixer4">
  182. <div class="form-row">
  183. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  184. <input type="text" id="node-input-name" placeholder="Name">
  185. </div>
  186. </script>
  187. <script type="text/javascript">
  188. RED.nodes.registerType('AudioPlayMemory',{
  189. shortName: "playMem",
  190. inputs:0,
  191. outputs:1,
  192. category: 'play-function',
  193. color:"#E6E0F8",
  194. icon: "arrow-in.png"
  195. });
  196. </script>
  197. <script type="text/x-red" data-help-name="AudioPlayMemory">
  198. <p><b>TODO</b> Add object documetation here</b>.</p>
  199. </script>
  200. <script type="text/x-red" data-template-name="AudioPlayMemory">
  201. <div class="form-row">
  202. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  203. <input type="text" id="node-input-name" placeholder="Name">
  204. </div>
  205. </script>
  206. <script type="text/javascript">
  207. RED.nodes.registerType('AudioPlaySdWav',{
  208. shortName: "playWav",
  209. inputs:0,
  210. outputs:2,
  211. category: 'play-function',
  212. color:"#E6E0F8",
  213. icon: "arrow-in.png"
  214. });
  215. </script>
  216. <script type="text/x-red" data-help-name="AudioPlaySdWav">
  217. <p><b>TODO</b> Add object documetation here</b>.</p>
  218. </script>
  219. <script type="text/x-red" data-template-name="AudioPlaySdWav">
  220. <div class="form-row">
  221. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  222. <input type="text" id="node-input-name" placeholder="Name">
  223. </div>
  224. </script>
  225. <script type="text/javascript">
  226. RED.nodes.registerType('AudioPlaySdRaw',{
  227. shortName: "playRaw",
  228. inputs:0,
  229. outputs:1,
  230. category: 'play-function',
  231. color:"#E6E0F8",
  232. icon: "arrow-in.png"
  233. });
  234. </script>
  235. <script type="text/x-red" data-help-name="AudioPlaySdRaw">
  236. <p><b>TODO</b> Add object documetation here</b>.</p>
  237. </script>
  238. <script type="text/x-red" data-template-name="AudioPlaySdRaw">
  239. <div class="form-row">
  240. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  241. <input type="text" id="node-input-name" placeholder="Name">
  242. </div>
  243. </script>
  244. <script type="text/javascript">
  245. RED.nodes.registerType('AudioPlayQueue',{
  246. shortName: "queue",
  247. inputs:0,
  248. outputs:1,
  249. category: 'play-function',
  250. color:"#E6E0F8",
  251. icon: "arrow-in.png"
  252. });
  253. </script>
  254. <script type="text/x-red" data-help-name="AudioPlayQueue">
  255. <p><b>TODO</b> Add object documetation here</b>.</p>
  256. </script>
  257. <script type="text/x-red" data-template-name="AudioPlayQueue">
  258. <div class="form-row">
  259. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  260. <input type="text" id="node-input-name" placeholder="Name">
  261. </div>
  262. </script>
  263. <script type="text/javascript">
  264. RED.nodes.registerType('AudioSynthWaveformSine',{
  265. shortName: "sine",
  266. inputs:0,
  267. outputs:1,
  268. category: 'synth-function',
  269. color:"#E6E0F8",
  270. icon: "arrow-in.png"
  271. });
  272. </script>
  273. <script type="text/x-red" data-help-name="AudioSynthWaveformSine">
  274. <p><b>TODO</b> Add object documetation here</b>.</p>
  275. </script>
  276. <script type="text/x-red" data-template-name="AudioSynthWaveformSine">
  277. <div class="form-row">
  278. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  279. <input type="text" id="node-input-name" placeholder="Name">
  280. </div>
  281. </script>
  282. <script type="text/javascript">
  283. RED.nodes.registerType('AudioSynthWaveformSineModulated',{
  284. shortName: "sine_fm",
  285. inputs:1,
  286. outputs:1,
  287. category: 'synth-function',
  288. color:"#E6E0F8",
  289. icon: "arrow-in.png"
  290. });
  291. </script>
  292. <script type="text/x-red" data-help-name="AudioSynthWaveformSineModulated">
  293. <p><b>TODO</b> Add object documetation here</b>.</p>
  294. </script>
  295. <script type="text/x-red" data-template-name="AudioSynthWaveformSineModulated">
  296. <div class="form-row">
  297. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  298. <input type="text" id="node-input-name" placeholder="Name">
  299. </div>
  300. </script>
  301. <script type="text/javascript">
  302. RED.nodes.registerType('AudioSynthWaveform',{
  303. shortName: "waveform",
  304. inputs:0,
  305. outputs:1,
  306. category: 'synth-function',
  307. color:"#E6E0F8",
  308. icon: "arrow-in.png"
  309. });
  310. </script>
  311. <script type="text/x-red" data-help-name="AudioSynthWaveform">
  312. <p><b>TODO</b> Add object documetation here</b>.</p>
  313. </script>
  314. <script type="text/x-red" data-template-name="AudioSynthWaveform">
  315. <div class="form-row">
  316. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  317. <input type="text" id="node-input-name" placeholder="Name">
  318. </div>
  319. </script>
  320. <script type="text/javascript">
  321. RED.nodes.registerType('AudioSynthToneSweep',{
  322. shortName: "tonesweep",
  323. inputs:0,
  324. outputs:1,
  325. category: 'synth-function',
  326. color:"#E6E0F8",
  327. icon: "arrow-in.png"
  328. });
  329. </script>
  330. <script type="text/x-red" data-help-name="AudioSynthToneSweep">
  331. <p><b>TODO</b> Add object documetation here</b>.</p>
  332. </script>
  333. <script type="text/x-red" data-template-name="AudioSynthToneSweep">
  334. <div class="form-row">
  335. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  336. <input type="text" id="node-input-name" placeholder="Name">
  337. </div>
  338. </script>
  339. <script type="text/javascript">
  340. RED.nodes.registerType('AudioEffectFade',{
  341. shortName: "fade",
  342. inputs:1,
  343. outputs:1,
  344. category: 'effect-function',
  345. color:"#E6E0F8",
  346. icon: "arrow-in.png"
  347. });
  348. </script>
  349. <script type="text/x-red" data-help-name="AudioEffectFade">
  350. <p><b>TODO</b> Add object documetation here</b>.</p>
  351. </script>
  352. <script type="text/x-red" data-template-name="AudioEffectFade">
  353. <div class="form-row">
  354. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  355. <input type="text" id="node-input-name" placeholder="Name">
  356. </div>
  357. </script>
  358. <script type="text/javascript">
  359. RED.nodes.registerType('AudioEffectChorus',{
  360. shortName: "chorus",
  361. inputs:2,
  362. outputs:2,
  363. category: 'effect-function',
  364. color:"#E6E0F8",
  365. icon: "arrow-in.png"
  366. });
  367. </script>
  368. <script type="text/x-red" data-help-name="AudioEffectChorus">
  369. <p><b>TODO</b> Add object documetation here</b>.</p>
  370. </script>
  371. <script type="text/x-red" data-template-name="AudioEffectChorus">
  372. <div class="form-row">
  373. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  374. <input type="text" id="node-input-name" placeholder="Name">
  375. </div>
  376. </script>
  377. <script type="text/javascript">
  378. RED.nodes.registerType('AudioEffectFlange',{
  379. shortName: "flange",
  380. inputs:2,
  381. outputs:2,
  382. category: 'effect-function',
  383. color:"#E6E0F8",
  384. icon: "arrow-in.png"
  385. });
  386. </script>
  387. <script type="text/x-red" data-help-name="AudioEffectFlange">
  388. <p><b>TODO</b> Add object documetation here</b>.</p>
  389. </script>
  390. <script type="text/x-red" data-template-name="AudioEffectFlange">
  391. <div class="form-row">
  392. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  393. <input type="text" id="node-input-name" placeholder="Name">
  394. </div>
  395. </script>
  396. <script type="text/javascript">
  397. RED.nodes.registerType('AudioFilterBiquad',{
  398. shortName: "biquad",
  399. inputs:1,
  400. outputs:1,
  401. category: 'filter-function',
  402. color:"#E6E0F8",
  403. icon: "arrow-in.png"
  404. });
  405. </script>
  406. <script type="text/x-red" data-help-name="AudioFilterBiquad">
  407. <p><b>TODO</b> Add object documetation here</b>.</p>
  408. </script>
  409. <script type="text/x-red" data-template-name="AudioFilterBiquad">
  410. <div class="form-row">
  411. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  412. <input type="text" id="node-input-name" placeholder="Name">
  413. </div>
  414. </script>
  415. <script type="text/javascript">
  416. RED.nodes.registerType('AudioFilterFIR',{
  417. shortName: "fir",
  418. inputs:1,
  419. outputs:1,
  420. category: 'filter-function',
  421. color:"#E6E0F8",
  422. icon: "arrow-in.png"
  423. });
  424. </script>
  425. <script type="text/x-red" data-help-name="AudioFilterFIR">
  426. <p><b>TODO</b> Add object documetation here</b>.</p>
  427. </script>
  428. <script type="text/x-red" data-template-name="AudioFilterFIR">
  429. <div class="form-row">
  430. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  431. <input type="text" id="node-input-name" placeholder="Name">
  432. </div>
  433. </script>
  434. <script type="text/javascript">
  435. RED.nodes.registerType('AudioPeak',{
  436. shortName: "peak",
  437. inputs:1,
  438. outputs:0,
  439. category: 'analyze-function',
  440. color:"#E6E0F8",
  441. icon: "arrow-in.png"
  442. });
  443. </script>
  444. <script type="text/x-red" data-help-name="AudioPeak">
  445. <p><b>TODO</b> Add object documetation here</b>.</p>
  446. </script>
  447. <script type="text/x-red" data-template-name="AudioPeak">
  448. <div class="form-row">
  449. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  450. <input type="text" id="node-input-name" placeholder="Name">
  451. </div>
  452. </script>
  453. <script type="text/javascript">
  454. RED.nodes.registerType('AudioAnalyzeFFT256',{
  455. shortName: "fft256",
  456. inputs:1,
  457. outputs:0,
  458. category: 'analyze-function',
  459. color:"#E6E0F8",
  460. icon: "arrow-in.png"
  461. });
  462. </script>
  463. <script type="text/x-red" data-help-name="AudioAnalyzeFFT256">
  464. <p><b>TODO</b> Add object documetation here</b>.</p>
  465. </script>
  466. <script type="text/x-red" data-template-name="AudioAnalyzeFFT256">
  467. <div class="form-row">
  468. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  469. <input type="text" id="node-input-name" placeholder="Name">
  470. </div>
  471. </script>
  472. <script type="text/javascript">
  473. RED.nodes.registerType('AudioAnalyzeFFT1024',{
  474. shortName: "fft1024",
  475. inputs:1,
  476. outputs:0,
  477. category: 'analyze-function',
  478. color:"#E6E0F8",
  479. icon: "arrow-in.png"
  480. });
  481. </script>
  482. <script type="text/x-red" data-help-name="AudioAnalyzeFFT1024">
  483. <p><b>TODO</b> Add object documetation here</b>.</p>
  484. </script>
  485. <script type="text/x-red" data-template-name="AudioAnalyzeFFT1024">
  486. <div class="form-row">
  487. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  488. <input type="text" id="node-input-name" placeholder="Name">
  489. </div>
  490. </script>
  491. <script type="text/javascript">
  492. RED.nodes.registerType('AudioAnalyzeToneDetect',{
  493. shortName: "tone",
  494. inputs:1,
  495. outputs:0,
  496. category: 'analyze-function',
  497. color:"#E6E0F8",
  498. icon: "arrow-in.png"
  499. });
  500. </script>
  501. <script type="text/x-red" data-help-name="AudioAnalyzeToneDetect">
  502. <p><b>TODO</b> Add object documetation here</b>.</p>
  503. </script>
  504. <script type="text/x-red" data-template-name="AudioAnalyzeToneDetect">
  505. <div class="form-row">
  506. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  507. <input type="text" id="node-input-name" placeholder="Name">
  508. </div>
  509. </script>
  510. <script type="text/javascript">
  511. RED.nodes.registerType('AudioAnalyzePrint',{
  512. shortName: "print",
  513. inputs:1,
  514. outputs:0,
  515. category: 'analyze-function',
  516. color:"#E6E0F8",
  517. icon: "arrow-in.png"
  518. });
  519. </script>
  520. <script type="text/x-red" data-help-name="AudioAnalyzePrint">
  521. <p><b>TODO</b> Add object documetation here</b>.</p>
  522. </script>
  523. <script type="text/x-red" data-template-name="AudioAnalyzePrint">
  524. <div class="form-row">
  525. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  526. <input type="text" id="node-input-name" placeholder="Name">
  527. </div>
  528. </script>
  529. <script type="text/javascript">
  530. RED.nodes.registerType('AudioControlSGTL5000',{
  531. shortName: "sgtl5000",
  532. inputs:0,
  533. outputs:0,
  534. category: 'control-function',
  535. color:"#E6E0F8",
  536. icon: "arrow-in.png"
  537. });
  538. </script>
  539. <script type="text/x-red" data-help-name="AudioControlSGTL5000">
  540. <p><b>TODO</b> Add object documetation here</b>.</p>
  541. </script>
  542. <script type="text/x-red" data-template-name="AudioControlSGTL5000">
  543. <div class="form-row">
  544. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  545. <input type="text" id="node-input-name" placeholder="Name">
  546. </div>
  547. </script>
  548. <script type="text/javascript">
  549. RED.nodes.registerType('AudioControlWM8731',{
  550. shortName: "wm8731",
  551. inputs:0,
  552. outputs:0,
  553. category: 'control-function',
  554. color:"#E6E0F8",
  555. icon: "arrow-in.png"
  556. });
  557. </script>
  558. <script type="text/x-red" data-help-name="AudioControlWM8731">
  559. <p><b>TODO</b> Add object documetation here</b>.</p>
  560. </script>
  561. <script type="text/x-red" data-template-name="AudioControlWM8731">
  562. <div class="form-row">
  563. <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
  564. <input type="text" id="node-input-name" placeholder="Name">
  565. </div>
  566. </script>