I've made it in this way:<br><br>SinOsc s1 => g => dac;<br>220.0 => s1.freq;<br>spork ~ loop1();<br><br>SinOsc s2 => g ;<br>spork ~ loop2();<br>0.4 => g.gain ;<br>0.01 => g.mix;<br><br>spork ~ loop3();<br>
<br><<<"waiting on main shred">>>;<br>2::minute => now;<br><br>fun void loop3()<br><br>{    <br>    for (0 => int ca; ca < 10; ca++)<br>    { 0.2 => g.gain;<br>    10::second => now;<br>
    0.0 => g.gain;<br>    1::second => now;<br>    0.2 => g.gain;<br>    10::second => now;<br>    0.0 => g.gain;<br>    1::second => now;<br>    <br>}<br>}<br><br>fun void loop1()<br>{<br>    <<<"sporked loop1">>>;<br>
    for (0 => int i; i < 21; i++)<br>    {<br>        Std.rand2f(130.0, 440.0) => s1.freq;<br>        0.2 => s1.gain;<br>     0.5::second => now;<br>        0.0 => s1.gain;<br>        0.5::second => now;<br>
    }<br>    <<<"loop1 done">>>;<br>}<br><br>fun void loop2()<br>{<br>    <<<"sporked loop2">>>;<br>    for (0 => int i; i < 21; i++)<br>    {<br>        Std.rand2f(130.0, 440.0) => s2.freq;<br>
        0.2 => s2.gain;<br>        0.5::second => now;<br>        0.0 => s2.gain;<br>        0.5::second => now;<br>    }<br>}<br><br><br>Is it a good way, or are there other ways more elegant and simpler?<br>
<br><br><br><br><br><br><br><br><br><br>