<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RingBuffer (Posts about faust:subtractive)</title><link>http://ringbuffer.org/</link><description></description><atom:link href="http://ringbuffer.org/categories/cat_faustsubtractive.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Mon, 02 Mar 2026 18:01:39 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Subtractive: Faust Examples</title><link>http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/</link><dc:creator>Henrik von Coler</dc:creator><description>&lt;section id="vco-vca-vcf"&gt;
&lt;h2&gt;VCO-VCA-VCF&lt;/h2&gt;
&lt;p&gt;The first example for subtractive synthesis implements
a virtual chain of VCO, VCF and VCA, as shown in the
Faust diagram in &lt;a class="citation-reference" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#fig-1" id="citation-reference-1" role="doc-biblioref"&gt;[Fig.1]&lt;/a&gt;.&lt;/p&gt;
&lt;hr class="docutils"&gt;
&lt;figure&gt;
&lt;img alt="/images/Sound_Synthesis/subtractive/process_subtractive_1.svg" src="http://ringbuffer.org/images/Sound_Synthesis/subtractive/process_subtractive_1.svg" width="300"&gt;
&lt;/figure&gt;
&lt;div role="list" class="citation-list"&gt;
&lt;div class="citation" id="fig-1" role="doc-biblioentry"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#citation-reference-1"&gt;Fig.1&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;Faust diagram for the VCO-VCA-VCF example.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;The three modules are definied as individual
functions, with paramters controlled by horizontal sliders.
In the processing function, they are chained using
the &lt;code class="docutils literal"&gt;:&lt;/code&gt; operator.&lt;/p&gt;
&lt;p&gt;A resonant low pass from the  &lt;code class="docutils literal"&gt;filters.lib&lt;/code&gt; -
the Faust Filters library - is used.&lt;/p&gt;
&lt;hr class="docutils"&gt;
&lt;div class="code"&gt;&lt;pre class="code cpp"&gt;&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-1" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-1" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-1"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// sawtooth-filter.dsp&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-2" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-2" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-2"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-3" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-3" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-3"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// First steps with a VCO-VCA-VCF setup.&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-4" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-4" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-4"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// The three modules are connected in series.&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-5" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-5" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-5"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-6" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-6" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-6"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// No anti-aliasing!&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-7" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-7" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-7"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-8" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-8" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-8"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// - steady sound&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-9" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-9" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-9"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// - control over f0, cutoff, resonance, gain&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-10" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-10" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-10"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-11" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-11" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-11"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Henrik von Coler&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-12" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-12" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-12"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// 2020-05-17&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-13" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-13" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-13"&gt;&lt;/a&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-14" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-14" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-14"&gt;&lt;/a&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"stdfaust.lib"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-15" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-15" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-15"&gt;&lt;/a&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-16" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-16" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-16"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-17" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-17" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-17"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Control Parameters&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-18" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-18" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-18"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-19" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-19" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-19"&gt;&lt;/a&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-20" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-20" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-20"&gt;&lt;/a&gt;&lt;span class="n"&gt;cutoff&lt;/span&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hslider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Cutoff"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.001&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-21" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-21" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-21"&gt;&lt;/a&gt;&lt;span class="n"&gt;f0&lt;/span&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hslider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Pitch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;16000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.001&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-22" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-22" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-22"&gt;&lt;/a&gt;&lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hslider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Q"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-23" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-23" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-23"&gt;&lt;/a&gt;&lt;span class="n"&gt;gain&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hslider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Gain"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-24" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-24" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-24"&gt;&lt;/a&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-25" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-25" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-25"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-26" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-26" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-26"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Define three 'module' functions&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-27" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-27" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-27"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-28" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-28" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-28"&gt;&lt;/a&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-29" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-29" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-29"&gt;&lt;/a&gt;&lt;span class="n"&gt;vco&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sawtooth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-30" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-30" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-30"&gt;&lt;/a&gt;&lt;span class="n"&gt;vcf&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resonlp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cutoff&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-31" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-31" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-31"&gt;&lt;/a&gt;&lt;span class="n"&gt;vca&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-32" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-32" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-32"&gt;&lt;/a&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-33" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-33" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-33"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-34" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-34" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-34"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Define three 'modules'&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-35" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-35" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-35"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-36" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-36" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-36"&gt;&lt;/a&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-37" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-37" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-37"&gt;&lt;/a&gt;&lt;span class="n"&gt;voice&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;vco&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vcf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vca&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-38" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-38" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-38"&gt;&lt;/a&gt;
&lt;a id="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-39" name="rest_code_0c28e6aff4ce40f09b20e7f823774ed8-39" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_0c28e6aff4ce40f09b20e7f823774ed8-39"&gt;&lt;/a&gt;&lt;span class="n"&gt;process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;voice&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="triggered"&gt;
&lt;h2&gt;Triggered&lt;/h2&gt;
&lt;p&gt;The example &lt;code class="docutils literal"&gt;subtractive_triggered.dsp&lt;/code&gt; from the repository
extends the previous sawtooth example with temporal envelopes
for VCF and VCA and implements four voices with individual
control. The block diagram is shown in &lt;a class="citation-reference" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#fig-2" id="citation-reference-2" role="doc-biblioref"&gt;[Fig.2]&lt;/a&gt;.&lt;/p&gt;
&lt;hr class="docutils"&gt;
&lt;figure&gt;
&lt;img alt="/images/Sound_Synthesis/subtractive/process_subtractive_2.svg" src="http://ringbuffer.org/images/Sound_Synthesis/subtractive/process_subtractive_2.svg" width="400"&gt;
&lt;/figure&gt;
&lt;div role="list" class="citation-list"&gt;
&lt;div class="citation" id="fig-2" role="doc-biblioentry"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#citation-reference-2"&gt;Fig.2&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;Faust diagram for the triggered subtractive example.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr class="docutils"&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;The example makes use of the Moog filter from the &lt;code class="docutils literal"&gt;vaeffects.lib&lt;/code&gt; library of  virtual analog filter effects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Individual control over the voices is realized through the &lt;code class="docutils literal"&gt;%&lt;/code&gt; command within the &lt;code class="docutils literal"&gt;voice()&lt;/code&gt; function.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="code"&gt;&lt;pre class="code cpp"&gt;&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-1" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-1" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-1"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// subtractive_triggered.dsp&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-2" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-2" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-2"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-3" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-3" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-3"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// A four voice subtractive synth.&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-4" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-4" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-4"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-5" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-5" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-5"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// - trigger&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-6" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-6" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-6"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// - control over f0, cutoff, resonance, gain&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-7" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-7" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-7"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-8" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-8" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-8"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Henrik von Coler&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-9" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-9" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-9"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// 2020-05-17&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-10" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-10" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-10"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-11" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-11" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-11"&gt;&lt;/a&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"stdfaust.lib"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-12" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-12" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-12"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-13" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-13" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-13"&gt;&lt;/a&gt;&lt;span class="n"&gt;trigger0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"trigger0 [midi:key 33]"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-14" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-14" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-14"&gt;&lt;/a&gt;&lt;span class="n"&gt;trigger1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"trigger1 [midi:key 34]"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-15" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-15" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-15"&gt;&lt;/a&gt;&lt;span class="n"&gt;trigger2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"trigger2 [midi:key 35]"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-16" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-16" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-16"&gt;&lt;/a&gt;&lt;span class="n"&gt;trigger3&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"trigger3 [midi:key 36]"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-17" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-17" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-17"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-18" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-18" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-18"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-19" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-19" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-19"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Define three 'module' functions&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-20" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-20" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-20"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-21" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-21" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-21"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-22" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-22" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-22"&gt;&lt;/a&gt;&lt;span class="n"&gt;vco&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sawtooth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-23" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-23" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-23"&gt;&lt;/a&gt;&lt;span class="n"&gt;vcf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ve&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;moog_vcf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-24" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-24" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-24"&gt;&lt;/a&gt;&lt;span class="n"&gt;vca&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-25" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-25" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-25"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-26" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-26" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-26"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-27" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-27" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-27"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-28" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-28" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-28"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// A function with envelopes&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-29" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-29" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-29"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-30" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-30" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-30"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-31" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-31" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-31"&gt;&lt;/a&gt;&lt;span class="n"&gt;voice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;trig&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;vco&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vcf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vca&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-32" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-32" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-32"&gt;&lt;/a&gt;&lt;span class="n"&gt;with&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-33" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-33" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-33"&gt;&lt;/a&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-34" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-34" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-34"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// use an individual hslider for every&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-35" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-35" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-35"&gt;&lt;/a&gt;&lt;span class="n"&gt;f0&lt;/span&gt;&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hslider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Pitch %index"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.001&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-36" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-36" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-36"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-37" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-37" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-37"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//trig = button("trigger%index");&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-38" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-38" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-38"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-39" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-39" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-39"&gt;&lt;/a&gt;&lt;span class="n"&gt;rel1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hslider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"rel_vca%index"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-40" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-40" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-40"&gt;&lt;/a&gt;&lt;span class="n"&gt;rel2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hslider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"rel_vcf%index"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-41" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-41" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-41"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-42" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-42" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-42"&gt;&lt;/a&gt;&lt;span class="n"&gt;env1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;en&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;arfe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.02&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rel1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;trig&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// en.adsre(0.001,0.3,1,1,trig);&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-43" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-43" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-43"&gt;&lt;/a&gt;&lt;span class="n"&gt;env2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;en&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;arfe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rel2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;trig&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;//en.adsre(0.001,0.3,1,1,trig);&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-44" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-44" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-44"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-45" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-45" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-45"&gt;&lt;/a&gt;&lt;span class="n"&gt;cutoff&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hslider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"cutoff%index"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.001&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-46" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-46" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-46"&gt;&lt;/a&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hslider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"res%index"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smoo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-47" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-47" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-47"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-48" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-48" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-48"&gt;&lt;/a&gt;&lt;span class="n"&gt;fc&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;env2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cutoff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-49" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-49" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-49"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-50" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-50" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-50"&gt;&lt;/a&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-51" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-51" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-51"&gt;&lt;/a&gt;
&lt;a id="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-52" name="rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-52" href="http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/#rest_code_d07a7f1d5dbe41b9bf0b543074b457c9-52"&gt;&lt;/a&gt;&lt;span class="n"&gt;process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;voice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;trigger0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;voice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;trigger1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;voice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;trigger2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;voice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;trigger3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;</description><guid>http://ringbuffer.org/faust/synthesis_algorithms/subtractive-faust-examples/</guid><pubDate>Tue, 19 May 2020 14:45:37 GMT</pubDate></item></channel></rss>