<?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 parallel-synthesis)</title><link>http://ringbuffer.org/</link><description></description><atom:link href="http://ringbuffer.org/categories/parallel-synthesis.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Sun, 08 Mar 2026 22:01:39 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Parallel Processes: Implementation Example</title><link>http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/</link><dc:creator>Henrik von Coler</dc:creator><description>&lt;p&gt;This page provides a practical implementation of &lt;strong&gt;Distributed Processes&lt;/strong&gt;. In this example, spatiality is not a result of a panner, but emerges from the decorrelation of 16 independent synthesis agents.&lt;/p&gt;
&lt;section id="the-spatial-texture-model"&gt;
&lt;h2&gt;The "Spatial Texture" Model&lt;/h2&gt;
&lt;p&gt;Following the work of &lt;strong&gt;Erik Nyström&lt;/strong&gt;, we define space through "internal morphology". By running parallel processes with slight parameter offsets, the sound gains "mass" and "spatial thickness" without relying on virtual trajectories.&lt;/p&gt;
&lt;section id="supercollider-implementation"&gt;
&lt;h3&gt;SuperCollider Implementation&lt;/h3&gt;
&lt;p&gt;The following code demonstrates a multi-agent granular system where each channel operates as an independent agent.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code supercollider"&gt;&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-1" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-1" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-1"&gt;&lt;/a&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-2" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-2" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-2"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// 16-Channel Parallel Process Agent&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-3" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-3" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-3"&gt;&lt;/a&gt;&lt;span class="nx"&gt;SynthDef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;\spatialTextureAgent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-4" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-4" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-4"&gt;&lt;/a&gt;    &lt;span class="kd"&gt;arg&lt;/span&gt; &lt;span class="nx"&gt;out&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;freq&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;440&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;gate&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;span class="nx"&gt;amp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-5" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-5" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-5"&gt;&lt;/a&gt;    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;mod&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-6" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-6" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-6"&gt;&lt;/a&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-7" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-7" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-7"&gt;&lt;/a&gt;    &lt;span class="c1"&gt;// Internal morphology: Each agent has its own local drift&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-8" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-8" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-8"&gt;&lt;/a&gt;    &lt;span class="nx"&gt;mod&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;LFDNoise3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;kr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;LFNoise1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;kr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;range&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.5&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-9" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-9" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-9"&gt;&lt;/a&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-10" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-10" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-10"&gt;&lt;/a&gt;    &lt;span class="c1"&gt;// Synthesis: A simple resonant cluster&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-11" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-11" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-11"&gt;&lt;/a&gt;    &lt;span class="nx"&gt;sig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;BPF&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-12" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-12" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-12"&gt;&lt;/a&gt;        &lt;span class="nx"&gt;WhiteNoise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ar&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;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-13" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-13" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-13"&gt;&lt;/a&gt;        &lt;span class="nx"&gt;freq&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&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="nx"&gt;mod&lt;/span&gt; &lt;span class="o"&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="c1"&gt;// Micro-variations in frequency&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-14" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-14" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-14"&gt;&lt;/a&gt;        &lt;span class="mf"&gt;0.01&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-15" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-15" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-15"&gt;&lt;/a&gt;    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-16" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-16" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-16"&gt;&lt;/a&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-17" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-17" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-17"&gt;&lt;/a&gt;    &lt;span class="nx"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;EnvGen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;kr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;asr&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="mi"&gt;1&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="nx"&gt;gate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;doneAction&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;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-18" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-18" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-18"&gt;&lt;/a&gt;    &lt;span class="nx"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;out&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sig&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-19" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-19" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-19"&gt;&lt;/a&gt;&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-20" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-20" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-20"&gt;&lt;/a&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-21" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-21" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-21"&gt;&lt;/a&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-22" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-22" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-22"&gt;&lt;/a&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-23" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-23" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-23"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Spawning the Ensemble (16 Channels)&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-24" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-24" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-24"&gt;&lt;/a&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;numChannels&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-25" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-25" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-25"&gt;&lt;/a&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;ensemble&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;numChannels&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;collect&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-26" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-26" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-26"&gt;&lt;/a&gt;    &lt;span class="nx"&gt;Synth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;\spatialTextureAgent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-27" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-27" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-27"&gt;&lt;/a&gt;        &lt;span class="ss"&gt;\out&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Each agent is locked to a discrete channel&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-28" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-28" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-28"&gt;&lt;/a&gt;        &lt;span class="ss"&gt;\freq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="c1"&gt;// Distributed frequency spectrum&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-29" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-29" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-29"&gt;&lt;/a&gt;        &lt;span class="ss"&gt;\amp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.05&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-30" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-30" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-30"&gt;&lt;/a&gt;    &lt;span class="p"&gt;]);&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-31" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-31" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-31"&gt;&lt;/a&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;a id="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-32" name="rest_code_64392b1308ba4bf8ad3acd0b2f077ead-32" href="http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/#rest_code_64392b1308ba4bf8ad3acd0b2f077ead-32"&gt;&lt;/a&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="technical-analysis"&gt;
&lt;h3&gt;Technical Analysis&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Discrete Agency&lt;/strong&gt;: Each synth is hard-coded to a specific &lt;code class="docutils literal"&gt;Out.ar&lt;/code&gt; index, bypassing the need for a global panner.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Decorrelation&lt;/strong&gt;: Because each agent utilizes its own &lt;code class="docutils literal"&gt;LFDNoise3&lt;/code&gt; instance, the signals are mathematically decorrelated, creating a wide spatial gestalt.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Emergent Topology&lt;/strong&gt;: The "space" is the physical layout of the speakers themselves, becoming a "discrete instrument" rather than a reproduction tool[cite: 25, 26].&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="references"&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;p&gt;The theoretical basis for this approach is detailed in &lt;strong&gt;Nyström (2013)&lt;/strong&gt; regarding the topology of form and motion in electroacoustic music.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;</description><category>nystrom</category><category>parallel-synthesis</category><category>supercollider</category><guid>http://ringbuffer.org/spatial_audio/channel_based/parallel-processes-example/</guid><pubDate>Sun, 08 Mar 2026 18:00:00 GMT</pubDate></item></channel></rss>