// power up!
// - philipd
// global noise source
Noise n;
// sweep shred
fun void sweep( float st, float inc, time end)
{
//set up the audio chain
n => TwoPole z => dac;
1 => z.norm;
0.1 => z.gain;
st => z.freq;
//store the time we entered the thread
now => time my_start;
0.0 => float my_seconds;
Math.random2f( 0.94, 0.99 ) => z.radius;
// keep going until we've passed the end time sent in by the control thread.
while( now < end )
{
( now - my_start ) / 1.0::second => my_seconds;
Math.max( my_seconds * 4.0, 1.0 ) * 0.1 => z.gain;
z.freq() + inc * -0.02 => z.freq;
10::ms => now;
}
n =< z;
z =< dac;
}
// time loop
while( true )
{
500::ms => dur d;
if( Math.random2( 0, 10 ) > 3 ) d * 2.0 => d;
if( Math.random2( 0, 10 ) > 6 ) d * 3.0 => d;
spork ~ sweep( 220.0 * Math.random2(1,8),
880.0 + Math.random2f(100.0, 880.0),
now + Math.random2f(1.0, 3.0)::second );
d => now;
}