<?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:spectral)</title><link>http://ringbuffer.org/</link><description></description><atom:link href="http://ringbuffer.org/categories/cat_faustspectral.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>Additive &amp; Spectral: Faust Examples</title><link>http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/</link><dc:creator>Henrik von Coler</dc:creator><description>&lt;section id="adding-partials-manually"&gt;
&lt;h2&gt;Adding Partials 'Manually'&lt;/h2&gt;
&lt;p&gt;A simple example, well suited for approaching the idea
of additive synthesis in Faust is given
by Romain Michon within a &lt;a class="reference external" href="https://ccrma.stanford.edu/~rmichon/faustWorkshops/course2015/#addSynth"&gt;CCRMA workshop&lt;/a&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code cpp"&gt;&lt;a id="rest_code_23a675e44f034a20a24b82994a388d01-1" name="rest_code_23a675e44f034a20a24b82994a388d01-1" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_23a675e44f034a20a24b82994a388d01-1"&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;"music.lib"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_23a675e44f034a20a24b82994a388d01-2" name="rest_code_23a675e44f034a20a24b82994a388d01-2" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_23a675e44f034a20a24b82994a388d01-2"&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;"filter.lib"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_23a675e44f034a20a24b82994a388d01-3" name="rest_code_23a675e44f034a20a24b82994a388d01-3" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_23a675e44f034a20a24b82994a388d01-3"&gt;&lt;/a&gt;
&lt;a id="rest_code_23a675e44f034a20a24b82994a388d01-4" name="rest_code_23a675e44f034a20a24b82994a388d01-4" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_23a675e44f034a20a24b82994a388d01-4"&gt;&lt;/a&gt;&lt;span class="n"&gt;freq&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;"freq"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2000&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="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;smooth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.999&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_23a675e44f034a20a24b82994a388d01-5" name="rest_code_23a675e44f034a20a24b82994a388d01-5" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_23a675e44f034a20a24b82994a388d01-5"&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="mf"&gt;0.3&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="mi"&gt;1&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="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;smooth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.999&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_23a675e44f034a20a24b82994a388d01-6" name="rest_code_23a675e44f034a20a24b82994a388d01-6" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_23a675e44f034a20a24b82994a388d01-6"&gt;&lt;/a&gt;&lt;span class="n"&gt;t&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;"attRel (s)"&lt;/span&gt;&lt;span class="p"&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="mf"&gt;0.001&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="mf"&gt;0.001&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_23a675e44f034a20a24b82994a388d01-7" name="rest_code_23a675e44f034a20a24b82994a388d01-7" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_23a675e44f034a20a24b82994a388d01-7"&gt;&lt;/a&gt;&lt;span class="n"&gt;gate&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;"gate"&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;smooth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tau2pole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;a id="rest_code_23a675e44f034a20a24b82994a388d01-8" name="rest_code_23a675e44f034a20a24b82994a388d01-8" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_23a675e44f034a20a24b82994a388d01-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_23a675e44f034a20a24b82994a388d01-9" name="rest_code_23a675e44f034a20a24b82994a388d01-9" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_23a675e44f034a20a24b82994a388d01-9"&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;osc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;freq&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;osc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;freq&lt;/span&gt;&lt;span class="o"&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;osc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;freq&lt;/span&gt;&lt;span class="o"&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="o"&gt;:&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&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="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&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="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;gate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Within the process function,
three oscillators are called in parallel by comma-separating them.
The &lt;code class="docutils literal"&gt;:&amp;gt;_&lt;/code&gt; operator collects their outputs, which are subsequently
devided by 3 and amplified.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="fourier-series-in-a-loop"&gt;
&lt;h2&gt;Fourier Series in a Loop&lt;/h2&gt;
&lt;p&gt;The example &lt;code class="docutils literal"&gt;fourier_series.dsp&lt;/code&gt; in the seminar's
&lt;a class="reference external" href="https://gitlab.tubit.tu-berlin.de/henrikvoncoler/sound_synthesis_faust"&gt;Faust repository&lt;/a&gt;
makes use of the parallel directive within a loop,
allowing the use of more partials.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code cpp"&gt;&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-1" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-1" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-1"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// fourier_series.dsp&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-2" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-2" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-2"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-3" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-3" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-3"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Generate a square wave through Fourier series.&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-4" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-4" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-4"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// - without control&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-5" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-5" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-5"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-6" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-6" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-6"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Henrik von Coler&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-7" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-7" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-7"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// 2020-05-06&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-8" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-8" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-9" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-9" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-9"&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_347f4e13cca74aeab5849ef2e312ad2b-10" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-10" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-10"&gt;&lt;/a&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-11" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-11" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-11"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// define a fundamental frequency&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-12" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-12" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-12"&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="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-13" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-13" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-13"&gt;&lt;/a&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-14" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-14" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-14"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// define the number of partials&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-15" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-15" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-15"&gt;&lt;/a&gt;&lt;span class="n"&gt;n_partial&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;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-16" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-16" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-16"&gt;&lt;/a&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-17" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-17" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-17"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// partial function with one argument ()&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-18" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-18" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-18"&gt;&lt;/a&gt;&lt;span class="n"&gt;partial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partIDX&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="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PI&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;oscrs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;volume&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-19" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-19" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-19"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// arguments&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-20" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-20" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-20"&gt;&lt;/a&gt;&lt;span class="n"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-21" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-21" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-21"&gt;&lt;/a&gt;&lt;span class="n"&gt;f&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;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="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;partIDX&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-22" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-22" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-22"&gt;&lt;/a&gt;&lt;span class="n"&gt;volume&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;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;partIDX&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-23" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-23" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-23"&gt;&lt;/a&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-24" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-24" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-24"&gt;&lt;/a&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-25" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-25" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-25"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// the processing function,&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-26" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-26" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-26"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// running 50 partials parallel&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-27" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-27" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-27"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// mono output&lt;/span&gt;
&lt;a id="rest_code_347f4e13cca74aeab5849ef2e312ad2b-28" name="rest_code_347f4e13cca74aeab5849ef2e312ad2b-28" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_347f4e13cca74aeab5849ef2e312ad2b-28"&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;par&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;n_partial&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;partial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&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="o"&gt;+&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="the-faust-website-examples"&gt;
&lt;h2&gt;The Faust Website Examples&lt;/h2&gt;
&lt;p&gt;The Faust website lists two &lt;a class="reference external" href="https://faust.grame.fr/doc/examples/#faust-examples"&gt;examples&lt;/a&gt; for additive Synthesis.
Here, each partial is represented in the graphical
user interface with individual control for temporal
envelope parameters.
This allows playing a triggered sound with a
dynamic timbre.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="expressive-timbral-control"&gt;
&lt;h2&gt;Expressive Timbral Control&lt;/h2&gt;
&lt;p&gt;For using additive synthesis in an expressive way,
metaparameters are essential. It is desirable to control
the behavior of all partials and thus the timbre
with few meaningful controls.&lt;/p&gt;
&lt;p&gt;Follow this link for a direct use in the Faust IDE:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://faustide.grame.fr/?autorun=1&amp;amp;voices=0&amp;amp;name=feedback_example&amp;amp;inline=Ly8gZXhwb25lbnRpYWwuZHNwCi8vCi8vIEFkZGl0aXZlIHN5bnRoZXNpemVyIHdpdGggY29udHJvbGxhYmxlCi8vIGV4cG9uZW50aWFsIHNwZWN0cmFsIGRlY2F5LgovLwovLyAtIGNvbnRpbnVvdXMKLy8gLSBzdGVyZW8gb3V0cHV0Ci8vCi8vIEhlbnJpayB2b24gQ29sZXIKLy8gMjAyMC0wNS0wNQoKaW1wb3J0KCJzdGRmYXVzdC5saWIiKTsKCmdhaW4gPSBoc2xpZGVyKCJNYXN0ZXIgR2FpbiIsMCwwLDEsIDAuMSk6c2kuc21vbzsKCi8vIGRlZmluZSBhIGZ1bmRhbWVudGFsIGZyZXF1ZW5jeQpmMCAgICAgICAgPSBoc2xpZGVyKCJQaXRjaCIsIDUwLCAxMCwgMTAwMCwgMC4wMSk6c2kuc21vbzsKCi8vIGRlZmluZSB0aGUgbnVtYmVyIG9mIHBhcnRpYWxzCm5fcGFydGlhbCA9IDIwMDsKCnNsb3BlICAgICA9IGhzbGlkZXIoInMiLCAxLCAwLjEsIDcsIDAuMDEpOnNpLnNtb287CgoKLy8gcGFydGlhbCBmdW5jdGlvbgpwYXJ0aWFsKHBhcnRDTlQscykgPSBvcy5vc2NycyhmKSAqIHZvbHVtZQovLyBhcmd1bWVudHMKd2l0aCB7CmYgPSBmMCAqIChwYXJ0Q05UKzEpOwp2b2x1bWUgPSBwb3cocywwLjUpICogMC41ICogIGV4cChzICogLXBhcnRDTlQpOwp9OwoKLy8gdGhlIHByb2Nlc3NpbmcgZnVuY3Rpb24sCi8vIHJ1bm5pbmcgMjAwIHBhcnRpYWxzIHBhcmFsbGVsCi8vIHN1bW1pbmcgdGhlbSB1cCBhbmQgYXBwbHlpbmcgYSBnbG9iYWwgZ2Fpbgpwcm9jZXNzID0gcGFyKGksIG5fcGFydGlhbCwgIHBhcnRpYWwoaSxzbG9wZSkpIDo-XyAqIGdhaW4gPDogXyxfOw%3D%3D"&gt;Exponential Decay in the Faust IDE&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following example, found in the seminar's &lt;a class="reference external" href="https://gitlab.tubit.tu-berlin.de/henrikvoncoler/sound_synthesis_faust"&gt;Faust repository&lt;/a&gt;, controlls the decrease in energy towards higher partials with a single parameter:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code cpp"&gt;&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-1" name="rest_code_7c1a6946b86942568bfb2846496212d7-1" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-1"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// exponential.dsp&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-2" name="rest_code_7c1a6946b86942568bfb2846496212d7-2" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-2"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-3" name="rest_code_7c1a6946b86942568bfb2846496212d7-3" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-3"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Additive synthesizer with controllable&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-4" name="rest_code_7c1a6946b86942568bfb2846496212d7-4" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-4"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// exponential spectral decay.&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-5" name="rest_code_7c1a6946b86942568bfb2846496212d7-5" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-5"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-6" name="rest_code_7c1a6946b86942568bfb2846496212d7-6" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-6"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// - continuous&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-7" name="rest_code_7c1a6946b86942568bfb2846496212d7-7" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-7"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// - stereo output&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-8" name="rest_code_7c1a6946b86942568bfb2846496212d7-8" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-8"&gt;&lt;/a&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-9" name="rest_code_7c1a6946b86942568bfb2846496212d7-9" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-9"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Henrik von Coler&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-10" name="rest_code_7c1a6946b86942568bfb2846496212d7-10" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-10"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// 2022-10-26&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-11" name="rest_code_7c1a6946b86942568bfb2846496212d7-11" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-11"&gt;&lt;/a&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-12" name="rest_code_7c1a6946b86942568bfb2846496212d7-12" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-12"&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_7c1a6946b86942568bfb2846496212d7-13" name="rest_code_7c1a6946b86942568bfb2846496212d7-13" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-13"&gt;&lt;/a&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-14" name="rest_code_7c1a6946b86942568bfb2846496212d7-14" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-14"&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;"Master Gain"&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="mi"&gt;0&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="mf"&gt;0.1&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_7c1a6946b86942568bfb2846496212d7-15" name="rest_code_7c1a6946b86942568bfb2846496212d7-15" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-15"&gt;&lt;/a&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-16" name="rest_code_7c1a6946b86942568bfb2846496212d7-16" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-16"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// define a fundamental frequency&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-17" name="rest_code_7c1a6946b86942568bfb2846496212d7-17" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-17"&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;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&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.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_7c1a6946b86942568bfb2846496212d7-18" name="rest_code_7c1a6946b86942568bfb2846496212d7-18" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-18"&gt;&lt;/a&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-19" name="rest_code_7c1a6946b86942568bfb2846496212d7-19" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-19"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// define the number of partials&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-20" name="rest_code_7c1a6946b86942568bfb2846496212d7-20" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-20"&gt;&lt;/a&gt;&lt;span class="n"&gt;n_partial&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;200&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-21" name="rest_code_7c1a6946b86942568bfb2846496212d7-21" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-21"&gt;&lt;/a&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-22" name="rest_code_7c1a6946b86942568bfb2846496212d7-22" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-22"&gt;&lt;/a&gt;&lt;span class="n"&gt;slope&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;"s"&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;7&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_7c1a6946b86942568bfb2846496212d7-23" name="rest_code_7c1a6946b86942568bfb2846496212d7-23" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-23"&gt;&lt;/a&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-24" name="rest_code_7c1a6946b86942568bfb2846496212d7-24" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-24"&gt;&lt;/a&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-25" name="rest_code_7c1a6946b86942568bfb2846496212d7-25" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-25"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// partial function&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-26" name="rest_code_7c1a6946b86942568bfb2846496212d7-26" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-26"&gt;&lt;/a&gt;&lt;span class="n"&gt;partial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partCNT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;s&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;oscrs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&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;volume&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-27" name="rest_code_7c1a6946b86942568bfb2846496212d7-27" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-27"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// arguments&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-28" name="rest_code_7c1a6946b86942568bfb2846496212d7-28" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-28"&gt;&lt;/a&gt;&lt;span class="n"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-29" name="rest_code_7c1a6946b86942568bfb2846496212d7-29" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-29"&gt;&lt;/a&gt;&lt;span class="n"&gt;f&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;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="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partCNT&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-30" name="rest_code_7c1a6946b86942568bfb2846496212d7-30" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-30"&gt;&lt;/a&gt;&lt;span class="n"&gt;volume&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;pow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&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="o"&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="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;exp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&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="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;partCNT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-31" name="rest_code_7c1a6946b86942568bfb2846496212d7-31" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-31"&gt;&lt;/a&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-32" name="rest_code_7c1a6946b86942568bfb2846496212d7-32" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-32"&gt;&lt;/a&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-33" name="rest_code_7c1a6946b86942568bfb2846496212d7-33" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-33"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// the processing function,&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-34" name="rest_code_7c1a6946b86942568bfb2846496212d7-34" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-34"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// running 200 partials parallel&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-35" name="rest_code_7c1a6946b86942568bfb2846496212d7-35" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-35"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// summing them up and applying a global gain&lt;/span&gt;
&lt;a id="rest_code_7c1a6946b86942568bfb2846496212d7-36" name="rest_code_7c1a6946b86942568bfb2846496212d7-36" href="http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/#rest_code_7c1a6946b86942568bfb2846496212d7-36"&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;par&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;n_partial&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;partial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;slope&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="n"&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;&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="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;</description><guid>http://ringbuffer.org/faust/synthesis_algorithms/additive-spectral-faust-examples/</guid><pubDate>Wed, 06 May 2020 07:25:43 GMT</pubDate></item></channel></rss>