// power up!
// - philipd, stereo gewang
0.0 => float t;
Noise n;
// timer shred
fun void timer() {
while ( true ) {
t + 0.01 => t;
10::ms => now;
}
}
// spork the timer
spork ~ timer();
// sweep shred
fun void sweep( float st, float inc, float end, int c )
{
n => TwoPole z => Pan2 p => dac;
1 => z.norm;
0.1 => z.gain;
t => float dt;
st => float frq;
Math.random2f( -1, 1 ) => float s;
Math.random2f( -1, 1 ) => float e;
( e - s ) / ( end - t ) * .01 => float i;
s => p.pan;
Math.random2f( 0.94, 0.99 ) => z.radius;
while( t < end ) {
Math.max( ( t - dt ) * 4.0, 1.0 ) * 0.1 => z.gain;
frq + inc * -0.02 => frq;
frq => z.freq;
p.pan() + i => p.pan;
10::ms => now;
}
n =< z;
z =< p;
p =< dac;
}
0 => int c;
// 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 ),
t + Math.random2f( 1.0, 3.0 ) , c);
1 + c => c;
d => now;
}