<div dir="ltr">Thanks, Stefan! That did take care of my problem! I didn't even trigger a new note, I simply added the line <font face="courier new, monospace">e=<dac;</font> at the end of my function iGen.</div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Wed, Feb 5, 2014 at 2:57 AM,  <span dir="ltr"><<a href="mailto:chuck-users-request@lists.cs.princeton.edu" target="_blank">chuck-users-request@lists.cs.princeton.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send chuck-users mailing list submissions to<br>
        <a href="mailto:chuck-users@lists.cs.princeton.edu">chuck-users@lists.cs.princeton.edu</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:chuck-users-request@lists.cs.princeton.edu">chuck-users-request@lists.cs.princeton.edu</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:chuck-users-owner@lists.cs.princeton.edu">chuck-users-owner@lists.cs.princeton.edu</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of chuck-users digest..."<br>
<br>Today's Topics:<br>
<br>
   1. Matrix of Impulse Generators (Philipp Blume)<br>
   2. Re: Matrix of Impulse Generators (Stefan Blixt)<br>
<br><br>---------- Forwarded message ----------<br>From: Philipp Blume <<a href="mailto:pgbluster@gmail.com">pgbluster@gmail.com</a>><br>To: <a href="mailto:chuck-users@lists.cs.princeton.edu">chuck-users@lists.cs.princeton.edu</a><br>
Cc: <br>Date: Tue, 4 Feb 2014 18:11:56 -0600<br>Subject: [chuck-users] Matrix of Impulse Generators<br><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><font face="courier new, monospace"><span>550</span> => <span>float</span> x;<br></font><span style="font-family:'courier new',monospace">440</span><span style="font-family:'courier new',monospace"> => </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> y;<br>

</span><span style="font-family:'courier new',monospace">3</span><span style="font-family:'courier new',monospace"> => </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> a1;<br>

</span><span style="font-family:'courier new',monospace">0</span><span style="font-family:'courier new',monospace"> => </span><span 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 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 style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> b2;<br>

</span><span style="font-family:'courier new',monospace"><br>fun</span><span style="font-family:'courier new',monospace"> </span><span style="font-family:'courier new',monospace">void</span><span style="font-family:'courier new',monospace"> iGen(</span><span style="font-family:'courier new',monospace">int</span><span style="font-family:'courier new',monospace"> i1, </span><span style="font-family:'courier new',monospace">int</span><span style="font-family:'courier new',monospace"> j1) {<br>

</span><span style="font-family:'courier new',monospace">    </span><span style="font-family:'courier new',monospace">while</span><span style="font-family:'courier new',monospace">(</span><span style="font-family:'courier new',monospace">true</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">Euclid(i1,j1,a1,b1) + Euclid(i1,j1,a2,b2) => </span><span 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 style="font-family:'courier new',monospace">SinOsc</span><span style="font-family:'courier new',monospace"> s => </span><span style="font-family:'courier new',monospace">ADSR</span><span style="font-family:'courier new',monospace"> e => </span><span 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 style="font-family:'courier new',monospace">35</span><span style="font-family:'courier new',monospace">::</span><span style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace">, </span><span style="font-family:'courier new',monospace">8</span><span style="font-family:'courier new',monospace">::</span><span style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace">, .</span><span style="font-family:'courier new',monospace">1</span><span style="font-family:'courier new',monospace">, </span><span style="font-family:'courier new',monospace">200</span><span style="font-family:'courier new',monospace">::</span><span 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 style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow(</span><span style="font-family:'courier new',monospace">0</span><span style="font-family:'courier new',monospace">.</span><span 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 style="font-family:'courier new',monospace">440</span><span style="font-family:'courier new',monospace">)::</span><span style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace"> => </span><span 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 style="font-family:'courier new',monospace">440</span><span style="font-family:'courier new',monospace">*</span><span style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow(</span><span style="font-family:'courier new',monospace">1</span><span style="font-family:'courier new',monospace">.</span><span style="font-family:'courier new',monospace">2</span><span style="font-family:'courier new',monospace">,dist))::</span><span style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace"> => </span><span 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><span style="font-family:'courier new',monospace">fun</span><span style="font-family:'courier new',monospace"> </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> Euclid(</span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> p, </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> q, </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> r, </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> s) {<br>

</span><span style="font-family:'courier new',monospace">    </span><span style="font-family:'courier new',monospace">return</span><span style="font-family:'courier new',monospace"> </span><span style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.sqrt(</span><span style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow((p-r),</span><span style="font-family:'courier new',monospace">2</span><span style="font-family:'courier new',monospace">) + </span><span style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow((q-s),</span><span 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><font face="courier new, monospace"><span>for</span>(-<span>3</span> => <span>int</span> i; i<<span>4</span>; i++) {<br></font><span style="font-family:'courier new',monospace">    </span><span style="font-family:'courier new',monospace">for</span><span style="font-family:'courier new',monospace"> (-</span><span style="font-family:'courier new',monospace">3</span><span style="font-family:'courier new',monospace"> => </span><span style="font-family:'courier new',monospace">int</span><span style="font-family:'courier new',monospace"> j; j<</span><span 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 style="font-family:'courier new',monospace">if</span><span style="font-family:'courier new',monospace"> (i != </span><span style="font-family:'courier new',monospace">0</span><span style="font-family:'courier new',monospace"> && j != </span><span 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 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><span 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 style="font-family:'courier new',monospace">500</span><span style="font-family:'courier new',monospace">::</span><span style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace">=></span><span 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>
<br><br>---------- Forwarded message ----------<br>From: Stefan Blixt <<a href="mailto:stefan.blixt@gmail.com">stefan.blixt@gmail.com</a>><br>To: ChucK Users Mailing List <<a href="mailto:chuck-users@lists.cs.princeton.edu">chuck-users@lists.cs.princeton.edu</a>><br>
Cc: <br>Date: Wed, 5 Feb 2014 09:57:45 +0100<br>Subject: Re: [chuck-users] Matrix of Impulse Generators<br><div dir="ltr"><div><div>I sometimes get this wrong, but I think that this line:<br><br><span style="font-family:'courier new',monospace"></span><span style="font-family:'courier new',monospace">SinOsc</span><span style="font-family:'courier new',monospace"> s => </span><span style="font-family:'courier new',monospace">ADSR</span><span style="font-family:'courier new',monospace"> e => </span><span style="font-family:'courier new',monospace">dac</span><span style="font-family:'courier new',monospace">;<br>

<br></span></div><span style="font-family:'courier new',monospace">will make new connections between s, e and dac each time it's run in the while loop - possibly creating new instances of SinOsc and ADSR each time. Since you never disconnect from dac, this means an increasing load that may explain the breakdown.<br>

<br><br></span></div><div><span style="font-family:'courier new',monospace">Since you want some release on the ADSR, you could make a second shred function that deals with playing a single note, which could make sure to disconnect e from dac one the release time has passed. Trigger the note playing shred from your iGen function.<br>

<br></span></div><div><span style="font-family:'courier new',monospace">/Stefan<br></span></div><span style="font-family:'courier new',monospace"></span></div><div class="gmail_extra"><br><br><div class="gmail_quote">

On Wed, Feb 5, 2014 at 1:11 AM, Philipp Blume <span dir="ltr"><<a href="mailto:pgbluster@gmail.com" target="_blank">pgbluster@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<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><font face="courier new, monospace"><span>550</span> => <span>float</span> x;<br></font><span style="font-family:'courier new',monospace">440</span><span style="font-family:'courier new',monospace"> => </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> y;<br>


</span><span style="font-family:'courier new',monospace">3</span><span style="font-family:'courier new',monospace"> => </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> a1;<br>


</span><span style="font-family:'courier new',monospace">0</span><span style="font-family:'courier new',monospace"> => </span><span 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 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 style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> b2;<br>


</span><span style="font-family:'courier new',monospace"><br>fun</span><span style="font-family:'courier new',monospace"> </span><span style="font-family:'courier new',monospace">void</span><span style="font-family:'courier new',monospace"> iGen(</span><span style="font-family:'courier new',monospace">int</span><span style="font-family:'courier new',monospace"> i1, </span><span style="font-family:'courier new',monospace">int</span><span style="font-family:'courier new',monospace"> j1) {<br>


</span><span style="font-family:'courier new',monospace">    </span><span style="font-family:'courier new',monospace">while</span><span style="font-family:'courier new',monospace">(</span><span style="font-family:'courier new',monospace">true</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">Euclid(i1,j1,a1,b1) + Euclid(i1,j1,a2,b2) => </span><span 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 style="font-family:'courier new',monospace">SinOsc</span><span style="font-family:'courier new',monospace"> s => </span><span style="font-family:'courier new',monospace">ADSR</span><span style="font-family:'courier new',monospace"> e => </span><span 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 style="font-family:'courier new',monospace">35</span><span style="font-family:'courier new',monospace">::</span><span style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace">, </span><span style="font-family:'courier new',monospace">8</span><span style="font-family:'courier new',monospace">::</span><span style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace">, .</span><span style="font-family:'courier new',monospace">1</span><span style="font-family:'courier new',monospace">, </span><span style="font-family:'courier new',monospace">200</span><span style="font-family:'courier new',monospace">::</span><span 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 style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow(</span><span style="font-family:'courier new',monospace">0</span><span style="font-family:'courier new',monospace">.</span><span 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 style="font-family:'courier new',monospace">440</span><span style="font-family:'courier new',monospace">)::</span><span style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace"> => </span><span 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 style="font-family:'courier new',monospace">440</span><span style="font-family:'courier new',monospace">*</span><span style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow(</span><span style="font-family:'courier new',monospace">1</span><span style="font-family:'courier new',monospace">.</span><span style="font-family:'courier new',monospace">2</span><span style="font-family:'courier new',monospace">,dist))::</span><span style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace"> => </span><span 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><span style="font-family:'courier new',monospace">fun</span><span style="font-family:'courier new',monospace"> </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> Euclid(</span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> p, </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> q, </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> r, </span><span style="font-family:'courier new',monospace">float</span><span style="font-family:'courier new',monospace"> s) {<br>


</span><span style="font-family:'courier new',monospace">    </span><span style="font-family:'courier new',monospace">return</span><span style="font-family:'courier new',monospace"> </span><span style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.sqrt(</span><span style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow((p-r),</span><span style="font-family:'courier new',monospace">2</span><span style="font-family:'courier new',monospace">) + </span><span style="font-family:'courier new',monospace">Math</span><span style="font-family:'courier new',monospace">.pow((q-s),</span><span 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><font face="courier new, monospace"><span>for</span>(-<span>3</span> => <span>int</span> i; i<<span>4</span>; i++) {<br></font><span style="font-family:'courier new',monospace">    </span><span style="font-family:'courier new',monospace">for</span><span style="font-family:'courier new',monospace"> (-</span><span style="font-family:'courier new',monospace">3</span><span style="font-family:'courier new',monospace"> => </span><span style="font-family:'courier new',monospace">int</span><span style="font-family:'courier new',monospace"> j; j<</span><span 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 style="font-family:'courier new',monospace">if</span><span style="font-family:'courier new',monospace"> (i != </span><span style="font-family:'courier new',monospace">0</span><span style="font-family:'courier new',monospace"> && j != </span><span 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 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><span 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 style="font-family:'courier new',monospace">500</span><span style="font-family:'courier new',monospace">::</span><span style="font-family:'courier new',monospace">ms</span><span style="font-family:'courier new',monospace">=></span><span 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><span><font color="#888888"><div><br></div>-- <br>Philipp Blume<br>

</font></span></div></div></div>
<br>_______________________________________________<br>
chuck-users mailing list<br>
<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
<a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Release me, insect, or I will destroy the Cosmos!
</div>
<br>_______________________________________________<br>
chuck-users mailing list<br>
<a href="mailto:chuck-users@lists.cs.princeton.edu">chuck-users@lists.cs.princeton.edu</a><br>
<a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Philipp Blume<br>
</div>