<div dir="ltr">Dear all,<div><br></div><div>Question from a rank ChucK beginner<br><div><br></div><div>There's something about envelopes or gain or shreduling that I don't understand.</div><div><br></div><div>I created a Cartesian matrix of impulse generators, whose frequencies are given as mx+ny {x,y btw -3 and 3) where the gain & 'tempo' of each generator is correlated with its distance from a line segment (a1,b1 - a2,b2) - later on I will be manipulating x,y,a1,b1,a2, and b2.</div>
<div> </div><div>This code runs well for a while, but within a few seconds or minutes it starts to get overwhelmed. The death is both spectacular and quite moving, but how do I keep it within bounds so it sounds perpetually like it does in the first 5-10 seconds?<br>
<br>







<p class=""><font face="courier new, monospace"><span class="">550</span> => <span class="">float</span> x;<br></font><span class="" style="font-family:'courier new',monospace">440</span><span style="font-family:'courier new',monospace"> => </span><span class="" style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> y;<br>
</span><span class="" style="font-family:'courier new',monospace">3</span><span style="font-family:'courier new',monospace"> => </span><span class="" style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> a1;<br>
</span><span class="" style="font-family:'courier new',monospace">0</span><span style="font-family:'courier new',monospace"> => </span><span class="" style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> b1;<br>
</span><span style="font-family:'courier new',monospace">0 => </span><span class="" style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> a2;<br>
</span><span style="font-family:'courier new',monospace">-2</span><span style="font-family:'courier new',monospace"> => </span><span class="" style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> b2;<br>
</span><span class="" style="font-family:'courier new',monospace"><br>fun</span><span style="font-family:'courier new',monospace"> </span><span class="" style="font-family:'courier new',monospace">void</span><span style="font-family:'courier new',monospace"> iGen(</span><span class="" style="font-family:'courier new',monospace">int</span><span style="font-family:'courier new',monospace"> i1, </span><span class="" style="font-family:'courier new',monospace">int</span><span style="font-family:'courier new',monospace"> j1) {<br>
</span><span class="" style="font-family:'courier new',monospace">    </span><span style="font-family:'courier new',monospace">while</span><span class="" style="font-family:'courier new',monospace">(</span><span style="font-family:'courier new',monospace">true</span><span class="" style="font-family:'courier new',monospace">) {<br>
</span><span style="font-family:'courier new',monospace">        </span><span style="font-family:'courier new',monospace">Euclid(i1,j1,a1,b1) + Euclid(i1,j1,a2,b2) => </span><span class="" style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> dist;<br>
</span><span style="font-family:'courier new',monospace">        </span><span style="font-family:'courier new',monospace"><<< dist >>>;<br></span><span style="font-family:'courier new',monospace">        </span><span class="" style="font-family:'courier new',monospace">SinOsc</span><span style="font-family:'courier new',monospace"> s => </span><span class="" style="font-family:'courier new',monospace">ADSR</span><span style="font-family:'courier new',monospace"> e => </span><span class="" style="font-family:'courier new',monospace">dac</span><span style="font-family:'courier new',monospace">;<br>
</span><span style="font-family:'courier new',monospace">        </span><span style="font-family:'courier new',monospace">e.set(</span><span class="" style="font-family:'courier new',monospace">35</span><span style="font-family:'courier new',monospace">::</span><span class="" style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace">, </span><span class="" style="font-family:'courier new',monospace">8</span><span style="font-family:'courier new',monospace">::</span><span class="" style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace">, .</span><span class="" style="font-family:'courier new',monospace">1</span><span style="font-family:'courier new',monospace">, </span><span class="" style="font-family:'courier new',monospace">200</span><span style="font-family:'courier new',monospace">::</span><span class="" style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace">);<br>
</span><span style="font-family:'courier new',monospace">        </span><span class="" style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow(</span><span class="" style="font-family:'courier new',monospace">0</span><span style="font-family:'courier new',monospace">.</span><span class="" style="font-family:'courier new',monospace">65</span><span style="font-family:'courier new',monospace">,(dist)) => s.gain;<br>
</span><span style="font-family:'courier new',monospace">        </span><span style="font-family:'courier new',monospace">i1*x + j1*y => s.freq;<br></span><span style="font-family:'courier new',monospace">        </span><span style="font-family:'courier new',monospace">e.keyOn();<br>
</span><span style="font-family:'courier new',monospace">        </span><span style="font-family:'courier new',monospace">(</span><span class="" style="font-family:'courier new',monospace">440</span><span style="font-family:'courier new',monospace">)::</span><span class="" style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace"> => </span><span class="" style="font-family:'courier new',monospace">now</span><span style="font-family:'courier new',monospace">;<br>
</span><span style="font-family:'courier new',monospace">        </span><span style="font-family:'courier new',monospace">e.keyOff();<br></span><span style="font-family:'courier new',monospace">        </span><span style="font-family:'courier new',monospace">(</span><span class="" style="font-family:'courier new',monospace">440</span><span style="font-family:'courier new',monospace">*</span><span class="" style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow(</span><span class="" style="font-family:'courier new',monospace">1</span><span style="font-family:'courier new',monospace">.</span><span class="" style="font-family:'courier new',monospace">2</span><span style="font-family:'courier new',monospace">,dist))::</span><span class="" style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace"> => </span><span class="" style="font-family:'courier new',monospace">now</span><span style="font-family:'courier new',monospace">;<br>
</span><span style="font-family:'courier new',monospace">    </span><span style="font-family:'courier new',monospace">}<br></span><font face="courier new, monospace">}</font></p><p class=""><span style="font-family:'courier new',monospace">fun</span><span class="" style="font-family:'courier new',monospace"> </span><span style="font-family:'courier new',monospace">float</span><span class="" style="font-family:'courier new',monospace"> Euclid(</span><span style="font-family:'courier new',monospace">float</span><span class="" style="font-family:'courier new',monospace"> p, </span><span style="font-family:'courier new',monospace">float</span><span class="" style="font-family:'courier new',monospace"> q, </span><span style="font-family:'courier new',monospace">float</span><span class="" style="font-family:'courier new',monospace"> r, </span><span style="font-family:'courier new',monospace">float</span><span class="" style="font-family:'courier new',monospace"> s) {<br>
</span><span style="font-family:'courier new',monospace">    </span><span class="" style="font-family:'courier new',monospace">return</span><span style="font-family:'courier new',monospace"> </span><span class="" style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.sqrt(</span><span class="" style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow((p-r),</span><span class="" style="font-family:'courier new',monospace">2</span><span style="font-family:'courier new',monospace">) + </span><span class="" style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow((q-s),</span><span class="" style="font-family:'courier new',monospace">2</span><span style="font-family:'courier new',monospace">));<br>
</span><span style="font-family:'courier new',monospace">}</span></p>
<p class=""><font face="courier new, monospace"><span class="">for</span>(-<span class="">3</span> => <span class="">int</span> i; i<<span class="">4</span>; i++) {<br></font><span style="font-family:'courier new',monospace">    </span><span class="" style="font-family:'courier new',monospace">for</span><span style="font-family:'courier new',monospace"> (-</span><span class="" style="font-family:'courier new',monospace">3</span><span style="font-family:'courier new',monospace"> => </span><span class="" style="font-family:'courier new',monospace">int</span><span style="font-family:'courier new',monospace"> j; j<</span><span class="" style="font-family:'courier new',monospace">4</span><span style="font-family:'courier new',monospace">; j++) {<br>
</span><span style="font-family:'courier new',monospace">        </span><span class="" style="font-family:'courier new',monospace">if</span><span style="font-family:'courier new',monospace"> (i != </span><span class="" style="font-family:'courier new',monospace">0</span><span style="font-family:'courier new',monospace"> && j != </span><span class="" style="font-family:'courier new',monospace">0</span><span style="font-family:'courier new',monospace">) {<br>
</span><span style="font-family:'courier new',monospace">            </span><span class="" style="font-family:'courier new',monospace">spork</span><span style="font-family:'courier new',monospace"> ~ iGen(i,j); </span><span style="font-family:'courier new',monospace">   <br>
</span><span style="font-family:'courier new',monospace">        </span><span style="font-family:'courier new',monospace">}<br></span><span style="font-family:'courier new',monospace">    </span><span style="font-family:'courier new',monospace">}<br>
</span><span style="font-family:'courier new',monospace">}</span></p><p class=""><span class="" style="font-family:'courier new',monospace">while</span><span style="font-family:'courier new',monospace"> (x != y) {<br>
</span><span style="font-family:'courier new',monospace">    </span><span class="" style="font-family:'courier new',monospace">500</span><span style="font-family:'courier new',monospace">::</span><span class="" style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace">=></span><span class="" style="font-family:'courier new',monospace">now</span><span style="font-family:'courier new',monospace">;<br>
</span><span style="font-family:'courier new',monospace">}</span><span style="font-family:'courier new',monospace"> </span></p><div><br></div>-- <br>Philipp Blume<br>
</div></div></div>