<br><br><div class="gmail_quote">2008/5/24 thor &lt;<a href="mailto:th.list@gmail.com">th.list@gmail.com</a>&gt;:<br><div>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Thanks. It was a rather difficult performance. </blockquote><div><br>Maybe it&#39;s just me but I felt that got across in the music. I got a feeling the music kept being pulled between &quot;horror film drones&quot; and something that sounds quite jazz-like to me. I feel your difficulties are audible and only enhance that contrast.<br>
&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I was using the ixiQuarks,<br>
trying to use only the live-coding possibilities of them and ignore the<br>
GUI elements and all this with a projected screen. Not what I normally do,<br>
but the context was such. Temporality or formal structures I find subtly<br>
difficult in live-coding. Live-coding is for the brave! Graham used ChucK<br>
in a great performance that night.<div class="Ih2E3d"></div></blockquote><div><br>Formal structures I find hard as well, mainly because they mean you have to plan ahead to a larger degree then I&#39;m happy with. Still, with more practice and perhaps more detailed facilities for updating structures in the future I think that will be fine. Temporality (assuming you mean by that what I think you mean) is one of ChucK&#39;s strong points, I don&#39;t have too much trouble with it though those too can require a bit of planning.<br>
<br>Graham&#39;s piece is lovely as well, I still wonder how he did his edits that cleanly, maybe he just has a great sense of timing in pressing the &quot;update&quot; button.<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
But surely there must be some ways of creating good loops that result in an elegant crash?<br>
</blockquote><div><br>There are plenty of ways to crash ChucK and in case of emergency you can always call &quot;Machine.crash()&quot; which literally crashes the VM. I was just having fun with the &quot;crashing is cool&quot; idea.<br>
&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
In SC this would crash my computer in ca 30 secs:<br>
<br>
{ inf.do({ {Saw.ar(999.rand, 0.01)}.play }) }.fork<br>
<br>
How would the ChucK crash loop look?<br><font color="#888888">
</font></blockquote><div><br>This looks to me like it just keeps creating saw oscillators and so eventually bogs down the CPU, right? Your&#39;re not (that I can see) connecting them to the output and Ugens not connected to a output in ChucK won&#39;t take any CPU so in ChucK this&#39;ll get stuck on running out of memory. You could do that like this;<br>
====================8&lt;==========<br>//don&#39;t run this; it&#39;ll likely get your memory and available swap-space full<br>//this may crash your computer resulting in data loss.<br>while(true)<br>&nbsp; {<br>&nbsp; //this will define a osc each iteration<br>
&nbsp; SawOsc s;<br>&nbsp; <br>&nbsp; //not sure how &quot;999.rand&quot; works exactly<br>&nbsp; Std.rand2f(200, 2000) =&gt; s.freq;<br>&nbsp; <br>&nbsp; //this bit is easy<br>&nbsp; 0.01 =&gt; s.gain;<br>&nbsp; } <br></div></div>=====================8&lt;=============<br>
<br>I think that might be a port of your program. Not sure how soon it&#39;ll crash, this will likely depend on how quickly your system can asign swap-space and when it will say the process has alocated the maximum amount of memory it can have. If that&#39;s less then what&#39;s available it might not crash the whole computer at all.<br>
<br>It&#39;s not unlikely that ChucK&#39;s &quot;watchdog&quot; would complain about this being a shred that endlessly loops without advancing time and would give you a option to terminate it.<br><br>If you&#39;d write it like this;<br>
==============<br>while(true)<br>
&nbsp; {<br>&nbsp; //note that now the osc has to calculate samples<br>
&nbsp; SawOsc s =&gt; dac;<br>
&nbsp; Std.rand2f(200, 2000) =&gt; s.freq;<br>
&nbsp; 0.01 =&gt; s.gain;<br>&nbsp; //try to fool the watchdog<br>&nbsp; samp =&gt; now;<br>
&nbsp; } <br>
===========<br><br>It will without any doubt be the CPU where it gets stuck, likely in less then&nbsp; 30 seconds; ChucK is a lot less eficient than SC with with CPU time. Of course allocating memory and/or CPU in a tight endless loop will get anything stuck.<br>
<br>Amusingly, when I performed/compted in Marcel&#39;s event I rigged ChucK to crash using Machine.crash() at the end of the alocated time but in the final seconds I overloaded the VM so badly it didn&#39;t got round to running the instruction to crash. Poor thing.<br>
<br>Yours,<br>Kas.<br>