Skip to content

Commit

Permalink
Regenerated.
Browse files Browse the repository at this point in the history
  • Loading branch information
sletz committed May 29, 2021
1 parent 18a83cb commit 7ef5f0f
Show file tree
Hide file tree
Showing 9 changed files with 99 additions and 77 deletions.
2 changes: 1 addition & 1 deletion doc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ list:
@echo $(foreach e, $(LIST), " - '" $e "': libs/"$e.md"\n")

pdf:
pandoc --toc docs/index.md docs/organization.md docs/standardFunctions.md docs/contributing.md docs/copyright.md docs/libs/*.md -o library.pdf
pandoc --toc docs/index.md docs/organization.md docs/standardFunctions.md docs/contributing.md docs/about.md docs/libs/*.md -o library.pdf

clean:
rm -f $(MD)
Expand Down
2 changes: 1 addition & 1 deletion doc/docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

In general, libraries are organised in a *stacked manner*: the base ones define functions or constants without any dependancies, and additional ones are gradually built on top of simpler ones, layer by layer. **Dependency loops must be avoided as much as possible**. The *resources* folder contains tools to build and visualise the libraries dependencies graphs.

If you wish to add a function to any of these libraries or if you plan to add a new library, make sure that you follow the following conventions:
If you wish to add a function to any of these libraries or if you plan to add a new library, make sure that you observe the following conventions:

## New Functions

Expand Down
2 changes: 1 addition & 1 deletion docs/contributing/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@

<h1 id="contributing">Contributing</h1>
<p>In general, libraries are organised in a <em>stacked manner</em>: the base ones define functions or constants without any dependancies, and additional ones are gradually built on top of simpler ones, layer by layer. <strong>Dependency loops must be avoided as much as possible</strong>. The <em>resources</em> folder contains tools to build and visualise the libraries dependencies graphs.</p>
<p>If you wish to add a function to any of these libraries or if you plan to add a new library, make sure that you follow the following conventions:</p>
<p>If you wish to add a function to any of these libraries or if you plan to add a new library, make sure that you observe the following conventions:</p>
<h2 id="new-functions">New Functions</h2>
<ul>
<li>All functions must be preceded by a markdown documentation header respecting the following format (open the source code of any of the libraries for an example):</li>
Expand Down
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -387,5 +387,5 @@ <h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>

<!--
MkDocs version : 1.1.2
Build Date UTC : 2021-05-25 16:00:41.759583+00:00
Build Date UTC : 2021-05-29 12:19:40.757886+00:00
-->
88 changes: 54 additions & 34 deletions docs/libs/filters/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -421,11 +421,19 @@
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="3"><a href="#fitf1s" class="nav-link">(fi.)tf1s</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="3"><a href="#fitf1snp" class="nav-link">(fi.)tf1snp</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="3"><a href="#fitf3slf" class="nav-link">(fi.)tf3slf</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="3"><a href="#fitf1s" class="nav-link">(fi.)tf1s</a>
<li class="nav-item" data-level="3"><a href="#fitf1s_1" class="nav-link">(fi.)tf1s</a>
<ul class="nav flex-column">
</ul>
</li>
Expand Down Expand Up @@ -1302,20 +1310,32 @@ <h4 id="reference_18">Reference</h4>
<li><a href="https://ccrma.stanford.edu/~jos/pasp/Bilinear_Transformation.html">https://ccrma.stanford.edu/~jos/pasp/Bilinear_Transformation.html</a></li>
</ul>
<hr />
<h3 id="fitf1s"><code>(fi.)tf1s</code></h3>
<p>First-order special case of tf2s above</p>
<h4 id="usage_37">Usage</h4>
<pre><code>_ : tf1s(b1,b0,a0) : _
</code></pre>
<hr />
<h3 id="fitf1snp"><code>(fi.)tf1snp</code></h3>
<p>First-order special case of tf2snp above</p>
<h4 id="usage_38">Usage</h4>
<pre><code>_ : tf1snp(b1,b0,a0) : _
</code></pre>
<hr />
<h3 id="fitf3slf"><code>(fi.)tf3slf</code></h3>
<p>Analogous to tf2s above, but third order, and using the typical
low-frequency-matching bilinear-transform constant 2/T ("lf" series)
instead of the specific-frequency-matching value used in tf2s and tf1s.
Note the lack of a "w1" argument.</p>
<h4 id="usage_37">Usage</h4>
<h4 id="usage_39">Usage</h4>
<pre><code>_ : tf3slf(b3,b2,b1,b0,a3,a2,a1,a0) : _
</code></pre>
<hr />
<h3 id="fitf1s"><code>(fi.)tf1s</code></h3>
<h3 id="fitf1s_1"><code>(fi.)tf1s</code></h3>
<p>First-order direct-form digital filter,
specified by ANALOG transfer-function polynomials B(s)/A(s),
and a frequency-scaling parameter.</p>
<h4 id="usage_38">Usage</h4>
<h4 id="usage_40">Usage</h4>
<pre><code>tf1s(b1,b0,a0,w1)
</code></pre>
<p>Where:</p>
Expand Down Expand Up @@ -1354,22 +1374,22 @@ <h3 id="fitf2sb"><code>(fi.)tf2sb</code></h3>
The order of mappings is (1) frequency scaling (to set lowpass cutoff w1),
(2) bandpass mapping to wc, then (3) the bilinear transform, with the
usual scale parameter <code>2*SR</code>. Algebra carried out in maxima and pasted here.</p>
<h4 id="usage_39">Usage</h4>
<h4 id="usage_41">Usage</h4>
<pre><code>_ : tf2sb(b2,b1,b0,a1,a0,w1,wc) : _
</code></pre>
<hr />
<h3 id="fitf1sb"><code>(fi.)tf1sb</code></h3>
<p>First-to-second-order lowpass-to-bandpass section mapping,
analogous to tf2sb above.</p>
<h4 id="usage_40">Usage</h4>
<h4 id="usage_42">Usage</h4>
<pre><code>_ : tf1sb(b1,b0,a0,w1,wc) : _
</code></pre>
<h2 id="simple-resonator-filters">Simple Resonator Filters</h2>
<hr />
<h3 id="firesonlp"><code>(fi.)resonlp</code></h3>
<p>Simple resonant lowpass filter based on <code>tf2s</code> (virtual analog).
<code>resonlp</code> is a standard Faust function.</p>
<h4 id="usage_41">Usage</h4>
<h4 id="usage_43">Usage</h4>
<pre><code>_ : resonlp(fc,Q,gain) : _
_ : resonhp(fc,Q,gain) : _
_ : resonbp(fc,Q,gain) : _
Expand All @@ -1385,7 +1405,7 @@ <h4 id="usage_41">Usage</h4>
<h3 id="firesonhp"><code>(fi.)resonhp</code></h3>
<p>Simple resonant highpass filters based on <code>tf2s</code> (virtual analog).
<code>resonhp</code> is a standard Faust function.</p>
<h4 id="usage_42">Usage</h4>
<h4 id="usage_44">Usage</h4>
<pre><code>_ : resonlp(fc,Q,gain) : _
_ : resonhp(fc,Q,gain) : _
_ : resonbp(fc,Q,gain) : _
Expand All @@ -1401,7 +1421,7 @@ <h4 id="usage_42">Usage</h4>
<h3 id="firesonbp"><code>(fi.)resonbp</code></h3>
<p>Simple resonant bandpass filters based on <code>tf2s</code> (virtual analog).
<code>resonbp</code> is a standard Faust function.</p>
<h4 id="usage_43">Usage</h4>
<h4 id="usage_45">Usage</h4>
<pre><code>_ : resonlp(fc,Q,gain) : _
_ : resonhp(fc,Q,gain) : _
_ : resonbp(fc,Q,gain) : _
Expand All @@ -1418,7 +1438,7 @@ <h2 id="butterworth-lowpasshighpass-filters">Butterworth Lowpass/Highpass Filter
<h3 id="filowpass"><code>(fi.)lowpass</code></h3>
<p>Nth-order Butterworth lowpass filter.
<code>lowpass</code> is a standard Faust function.</p>
<h4 id="usage_44">Usage</h4>
<h4 id="usage_46">Usage</h4>
<pre><code>_ : lowpass(N,fc) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1435,7 +1455,7 @@ <h4 id="references_7">References</h4>
<h3 id="fihighpass"><code>(fi.)highpass</code></h3>
<p>Nth-order Butterworth highpass filters.
<code>highpass</code> is a standard Faust function.</p>
<h4 id="usage_45">Usage</h4>
<h4 id="usage_47">Usage</h4>
<pre><code>_ : highpass(N,fc) : _
</code></pre>
<p>Where:</p>
Expand Down Expand Up @@ -1472,7 +1492,7 @@ <h4 id="references_9">References</h4>
<hr />
<h3 id="filowpass3e"><code>(fi.)lowpass3e</code></h3>
<p>Third-order Elliptic (Cauer) lowpass filter.</p>
<h4 id="usage_46">Usage</h4>
<h4 id="usage_48">Usage</h4>
<pre><code>_ : lowpass3e(fc) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1488,7 +1508,7 @@ <h4 id="design">Design</h4>
<hr />
<h3 id="filowpass6e"><code>(fi.)lowpass6e</code></h3>
<p>Sixth-order Elliptic/Cauer lowpass filter.</p>
<h4 id="usage_47">Usage</h4>
<h4 id="usage_49">Usage</h4>
<pre><code>_ : lowpass6e(fc) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1506,7 +1526,7 @@ <h2 id="elliptic-highpass-filters">Elliptic Highpass Filters</h2>
<h3 id="fihighpass3e"><code>(fi.)highpass3e</code></h3>
<p>Third-order Elliptic (Cauer) highpass filter. Inversion of <code>lowpass3e</code> wrt unit
circle in s plane (s &lt;- 1/s)</p>
<h4 id="usage_48">Usage</h4>
<h4 id="usage_50">Usage</h4>
<pre><code>_ : highpass3e(fc) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1517,7 +1537,7 @@ <h4 id="usage_48">Usage</h4>
<h3 id="fihighpass6e"><code>(fi.)highpass6e</code></h3>
<p>Sixth-order Elliptic/Cauer highpass filter. Inversion of lowpass3e wrt unit
circle in s plane (s &lt;- 1/s)</p>
<h4 id="usage_49">Usage</h4>
<h4 id="usage_51">Usage</h4>
<pre><code>_ : highpass6e(fc) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1531,7 +1551,7 @@ <h3 id="fibandpass"><code>(fi.)bandpass</code></h3>
<code>s &lt;- s + wc^2/s</code> on <code>lowpass(Nh)</code>, where <code>wc</code> is the desired bandpass center
frequency. The <code>lowpass(Nh)</code> cutoff <code>w1</code> is half the desired bandpass width.
<code>bandpass</code> is a standard Faust function.</p>
<h4 id="usage_50">Usage</h4>
<h4 id="usage_52">Usage</h4>
<pre><code>_ : bandpass(Nh,fl,fu) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1552,7 +1572,7 @@ <h3 id="fibandstop"><code>(fi.)bandstop</code></h3>
<code>s &lt;- s + wc^2/s</code> on <code>highpass(Nh)</code>, where <code>wc</code> is the desired bandpass center
frequency. The <code>highpass(Nh)</code> cutoff <code>w1</code> is half the desired bandpass width.
<code>bandstop</code> is a standard Faust function.</p>
<h4 id="usage_51">Usage</h4>
<h4 id="usage_53">Usage</h4>
<pre><code>_ : bandstop(Nh,fl,fu) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1577,7 +1597,7 @@ <h3 id="fibandpass12e"><code>(fi.)bandpass12e</code></h3>
<hr />
<h3 id="fipospass"><code>(fi.)pospass</code></h3>
<p>Positive-Pass Filter (single-side-band filter)</p>
<h4 id="usage_52">Usage</h4>
<h4 id="usage_54">Usage</h4>
<pre><code>_ : pospass(N,fc) : _,_
</code></pre>
<p>where</p>
Expand Down Expand Up @@ -1625,7 +1645,7 @@ <h4 id="references_11">References</h4>
<h3 id="filow_shelf"><code>(fi.)low_shelf</code></h3>
<p>First-order "low shelf" filter (gain boost|cut between dc and some frequency)
<code>low_shelf</code> is a standard Faust function.</p>
<h4 id="usage_53">Usage</h4>
<h4 id="usage_55">Usage</h4>
<pre><code>_ : lowshelf(N,L0,fx) : _
_ : low_shelf(L0,fx) : _ // default case (order 3)
_ : lowshelf_other_freq(N,L0,fx) : _
Expand Down Expand Up @@ -1667,7 +1687,7 @@ <h4 id="references_12">References</h4>
<h3 id="fihigh_shelf"><code>(fi.)high_shelf</code></h3>
<p>First-order "high shelf" filter (gain boost|cut above some frequency).
<code>high_shelf</code> is a standard Faust function.</p>
<h4 id="usage_54">Usage</h4>
<h4 id="usage_56">Usage</h4>
<pre><code>_ : highshelf(N,Lpi,fx) : _
_ : high_shelf(L0,fx) : _ // default case (order 3)
_ : highshelf_other_freq(N,Lpi,fx) : _
Expand All @@ -1689,7 +1709,7 @@ <h3 id="fipeak_eq"><code>(fi.)peak_eq</code></h3>
<p>Second order "peaking equalizer" section (gain boost or cut near some frequency)
Also called a "parametric equalizer" section.
<code>peak_eq</code> is a standard Faust function.</p>
<h4 id="usage_55">Usage</h4>
<h4 id="usage_57">Usage</h4>
<pre><code>_ : peak_eq(Lfx,fx,B) : _;
</code></pre>
<p>Where:</p>
Expand All @@ -1704,7 +1724,7 @@ <h4 id="references_14">References</h4>
<hr />
<h3 id="fipeak_eq_cq"><code>(fi.)peak_eq_cq</code></h3>
<p>Constant-Q second order peaking equalizer section.</p>
<h4 id="usage_56">Usage</h4>
<h4 id="usage_58">Usage</h4>
<pre><code>_ : peak_eq_cq(Lfx,fx,Q) : _;
</code></pre>
<p>Where:</p>
Expand All @@ -1719,7 +1739,7 @@ <h4 id="references_15">References</h4>
<hr />
<h3 id="fipeak_eq_rm"><code>(fi.)peak_eq_rm</code></h3>
<p>Regalia-Mitra second order peaking equalizer section.</p>
<h4 id="usage_57">Usage</h4>
<h4 id="usage_59">Usage</h4>
<pre><code>_ : peak_eq_rm(Lfx,fx,tanPiBT) : _;
</code></pre>
<p>Where:</p>
Expand All @@ -1744,7 +1764,7 @@ <h3 id="fispectral_tilt"><code>(fi.)spectral_tilt</code></h3>
In other words, alpha is the slope of the ln magnitude versus ln frequency.
For a "pinking filter" (e.g., to generate 1/f noise from white noise),
set alpha to -1/2.</p>
<h4 id="usage_58">Usage</h4>
<h4 id="usage_60">Usage</h4>
<pre><code>_ : spectral_tilt(N,f0,bw,alpha) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1766,7 +1786,7 @@ <h4 id="reference_23">Reference</h4>
<h3 id="filevelfilter"><code>(fi.)levelfilter</code></h3>
<p>Dynamic level lowpass filter.
<code>levelfilter</code> is a standard Faust function.</p>
<h4 id="usage_59">Usage</h4>
<h4 id="usage_61">Usage</h4>
<pre><code>_ : levelfilter(L,freq) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1782,7 +1802,7 @@ <h4 id="reference_24">Reference</h4>
<hr />
<h3 id="filevelfiltern"><code>(fi.)levelfilterN</code></h3>
<p>Dynamic level lowpass filter.</p>
<h4 id="usage_60">Usage</h4>
<h4 id="usage_62">Usage</h4>
<pre><code>_ : levelfilterN(N,freq,L) : _
</code></pre>
<p>Where:</p>
Expand Down Expand Up @@ -1838,7 +1858,7 @@ <h4 id="references_16">References</h4>
<h3 id="fimth_octave_filterbankn"><code>(fi.)mth_octave_filterbank[n]</code></h3>
<p>Allpass-complementary filter banks based on Butterworth band-splitting.
For Butterworth band-splits, the needed delay equalizer is easily found.</p>
<h4 id="usage_61">Usage</h4>
<h4 id="usage_63">Usage</h4>
<pre><code>_ : mth_octave_filterbank(O,M,ftop,N) : par(i,N,_); // Oth-order
_ : mth_octave_filterbank_alt(O,M,ftop,N) : par(i,N,_); // dc-inverted version
</code></pre>
Expand All @@ -1861,7 +1881,7 @@ <h2 id="arbitrary-crossover-filter-banks-and-spectrum-analyzers">Arbitrary-Cross
<h3 id="fifilterbank"><code>(fi.)filterbank</code></h3>
<p>Filter bank.
<code>filterbank</code> is a standard Faust function.</p>
<h4 id="usage_62">Usage</h4>
<h4 id="usage_64">Usage</h4>
<pre><code>_ : filterbank (O,freqs) : par(i,N,_); // Butterworth band-splits
</code></pre>
<p>Where:</p>
Expand All @@ -1877,7 +1897,7 @@ <h4 id="usage_62">Usage</h4>
<hr />
<h3 id="fifilterbanki"><code>(fi.)filterbanki</code></h3>
<p>Inverted-dc filter bank.</p>
<h4 id="usage_63">Usage</h4>
<h4 id="usage_65">Usage</h4>
<pre><code>_ : filterbanki(O,freqs) : par(i,N,_); // Inverted-dc version
</code></pre>
<p>Where:</p>
Expand All @@ -1898,7 +1918,7 @@ <h4 id="references_17">References</h4>
<h3 id="fisvf"><code>(fi.)svf</code></h3>
<p>An environment with <code>lp</code>, <code>bp</code>, <code>hp</code>, <code>notch</code>, <code>peak</code>, <code>ap</code>, <code>bell</code>, <code>ls</code>, <code>hs</code> SVF based filters.
All filters have <code>freq</code> and <code>Q</code> parameters, the <code>bell</code>, <code>ls</code>, <code>hs</code> ones also have a <code>gain</code> third parameter.</p>
<h4 id="usage_64">Usage</h4>
<h4 id="usage_66">Usage</h4>
<pre><code>_ : svf.xx(freq, Q, [gain]) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1911,7 +1931,7 @@ <h2 id="averaging-functions">Averaging Functions</h2>
<hr />
<h3 id="fiavg_rect"><code>(fi.)avg_rect</code></h3>
<p>Moving average.</p>
<h4 id="usage_65">Usage</h4>
<h4 id="usage_67">Usage</h4>
<pre><code>_ : avg_rect(period) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1925,7 +1945,7 @@ <h3 id="fiavg_tau">(fi.)avg_tau</h3>
that is, tau is the integral of the filter's impulse response. This
response is slower to reach the final value but has less ripples in
non-steady signals.</p>
<h4 id="usage_66">Usage</h4>
<h4 id="usage_68">Usage</h4>
<pre><code>_ avg_tau(period) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1942,7 +1962,7 @@ <h3 id="fiavg_t60">(fi.)avg_t60</h3>
<p>Averaging function based on a one-pole filter and the t60 response time.
This response is particularly useful when the system is required to
reach the final value after about <code>period</code> seconds.</p>
<h4 id="usage_67">Usage</h4>
<h4 id="usage_69">Usage</h4>
<pre><code>_ avg_t60(period) : _
</code></pre>
<p>Where:</p>
Expand All @@ -1960,7 +1980,7 @@ <h3 id="fiavg_t19">(fi.)avg_t19</h3>
This response is close to the moving-average algorithm as it roughly reaches
the final value after <code>period</code> seconds and shows about the same
oscillations for non-steady signals.</p>
<h4 id="usage_68">Usage</h4>
<h4 id="usage_70">Usage</h4>
<pre><code>_ avg_t19(period) : _
</code></pre>
<p>Where:</p>
Expand Down
2 changes: 2 additions & 0 deletions docs/libs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,8 @@ <h2 id="filters">filters</h2>
<a href="filters/#fiallpasskl">(fi.)allpasskl</a> &nbsp; &nbsp;
<a href="filters/#fiallpass1m">(fi.)allpass1m</a> &nbsp; &nbsp;
<a href="filters/#fitf2s-and-fitf2snp">(fi.)tf2s and (fi.)tf2snp</a> &nbsp; &nbsp;
<a href="filters/#fitf1s">(fi.)tf1s</a> &nbsp; &nbsp;
<a href="filters/#fitf1snp">(fi.)tf1snp</a> &nbsp; &nbsp;
<a href="filters/#fitf3slf">(fi.)tf3slf</a> &nbsp; &nbsp;
<a href="filters/#fitf1s">(fi.)tf1s</a> &nbsp; &nbsp;
<a href="filters/#fitf2sb">(fi.)tf2sb</a> &nbsp; &nbsp;
Expand Down
2 changes: 1 addition & 1 deletion docs/search/search_index.json

Large diffs are not rendered by default.

Loading

0 comments on commit 7ef5f0f

Please sign in to comment.