| @@ -528,6 +528,7 @@ span.mainfunction {color: #993300; font-weight: bolder} | |||
| {"type":"AudioFilterBiquad","data":{"defaults":{"name":{"value":"new"}},"shortName":"biquad","inputs":1,"outputs":1,"category":"filter-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioFilterFIR","data":{"defaults":{"name":{"value":"new"}},"shortName":"fir","inputs":1,"outputs":1,"category":"filter-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioFilterStateVariable","data":{"defaults":{"name":{"value":"new"}},"shortName":"filter","inputs":2,"outputs":3,"category":"filter-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioFilterLadder","data":{"defaults":{"name":{"value":"new"}},"shortName":"ladder","inputs":3,"outputs":1,"category":"filter-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioAnalyzePeak","data":{"defaults":{"name":{"value":"new"}},"shortName":"peak","inputs":1,"outputs":0,"category":"analyze-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioAnalyzeRMS","data":{"defaults":{"name":{"value":"new"}},"shortName":"rms","inputs":1,"outputs":0,"category":"analyze-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| {"type":"AudioAnalyzeFFT256","data":{"defaults":{"name":{"value":"new"}},"shortName":"fft256","inputs":1,"outputs":0,"category":"analyze-function","color":"#E6E0F8","icon":"arrow-in.png"}}, | |||
| @@ -4503,7 +4504,7 @@ double s_freq = .0625;</p> | |||
| </p> | |||
| <p class=func><span class=keyword>octaveControl</span>(octaves);</p> | |||
| <p class=desc>Set how much (in octaves) the control signal can alter | |||
| the filter's corner freqency. Range is 0 to 7 octaves. For | |||
| the filter's corner frequency. Range is 0 to 7 octaves. For | |||
| example, when set to 2.5, a full scale positive signal (1.0) will | |||
| shift the filter frequency up 2.5 octaves, and a full scale negative | |||
| signal will shift it down 2.5 octaves. | |||
| @@ -4532,6 +4533,69 @@ double s_freq = .0625;</p> | |||
| </div> | |||
| </script> | |||
| <script type="text/x-red" data-help-name="AudioFilterLadder"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||
| <p>A low pass filter with resonant feedback, meant to approximate the | |||
| classic "Moog sound". Both cut-off frequency and resonance level | |||
| can optionally be controlled by input audio signals. | |||
| </p> | |||
| <p align=center><img src="img/ladder.png"></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>In 0</td><td>Signal to Filter</td></tr> | |||
| <tr class=odd><td align=center>In 1</td><td>Frequency Control</td></tr> | |||
| <tr class=odd><td align=center>In 2</td><td>Resonance Control</td></tr> | |||
| <tr class=odd><td align=center>Out 0</td><td>Low Pass Output</td></tr> | |||
| </table> | |||
| <h3>Functions</h3> | |||
| <p class=func><span class=keyword>frequency</span>(freq);</p> | |||
| <p class=desc>Set the filter's corner frequency. When a signal is | |||
| connected to the frequency control input, this setting is | |||
| the corner frequency the filter will implement | |||
| when the signal is zero. | |||
| </p> | |||
| <p class=func><span class=keyword>octaveControl</span>(octaves);</p> | |||
| <p class=desc>Set how much (in octaves) the control signal can alter | |||
| the filter's corner frequency. Range is 0 to 7 octaves. For | |||
| example, when set to 2.5, a full scale positive signal (1.0) will | |||
| shift the filter frequency up 2.5 octaves, and a full scale negative | |||
| signal will shift it down 2.5 octaves. | |||
| </p> | |||
| <p class=func><span class=keyword>resonance</span>(level);</p> | |||
| <p class=desc>Set the filter's feedback level for resonance. The | |||
| usable range is 0 to 1.1, where values over 1.0 can cause | |||
| the filter to self oscillate. When an audio signal is present | |||
| at the resonance control input, it overrides this setting. | |||
| Only positive signal values are used. A full scale 1.0 signal | |||
| creates resonance setting 1.1 (self oscillation). | |||
| Any negative signal input is treated as zero. | |||
| </p> | |||
| <h3>Examples</h3> | |||
| <p class=exam>File > Examples > Audio > Synthesis > LadderFilter | |||
| </p> | |||
| <h3>Notes</h3> | |||
| <p> | |||
| When controlled by a signal, the equation for the filter | |||
| frequency is: | |||
| </p> | |||
| <p> | |||
| <img src="img/filter_formula.png"> | |||
| </p> | |||
| <p>This filter uses floating point math. It is recommended for use | |||
| on Teensy 4.0 or higher. | |||
| </p> | |||
| </script> | |||
| <script type="text/x-red" data-template-name="AudioFilterLadder"> | |||
| <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="AudioAnalyzePeak"> | |||
| <h3>Summary</h3> | |||
| <div class=tooltipinfo> | |||