1 // even more music for replicants
3 Wurley voc=> JCRev r => Echo a => Echo b => Echo c => dac;
9 1000::ms => a.max => b.max => c.max;
10 750::ms => a.delay => b.delay => c.delay;
11 .50 => a.mix => b.mix => c.mix;
13 // shred to modulate the mix
14 fun void vecho_shred( )
25 std.rand2f(0.0,1.0) => decider;
26 if( decider < .3 ) 0.0 => mix;
27 else if( decider < .6 ) .08 => mix;
28 else if( decider < .8 ) .5 => mix;
32 (mix-old)/1000.0 => inc;
37 old => a.mix => b.mix => c.mix;
41 std.rand2(2,6)::second => now;
46 spork ~ vecho_shred();
54 2 * std.rand2( 0, 4 ) => int freq;
55 if( freq == 4 ) 3 => freq;
56 if( freq == 6 ) 7 => freq;
57 if( freq == 2 ) 11 => freq;
58 std.mtof( (float)( 45 + std.rand2(0,1) * 12 + freq ) ) => voc.freq;
59 std.rand2f( 0.6, 0.8 ) => voc.noteOn;
61 if( std.randf() > 0.7 )
63 else if( std.randf() > .7 )
65 else if( std.randf() > -0.8 )
66 { .250::second => now; }
70 2 * std.rand2( 1, 3 ) => int pick;
74 for( ; i < pick; i++ )
76 std.rand2f(.4,.6) + (float)i*.035 => pluck;
77 pluck + 0.03 * (float)(i * pick_dir) => voc.noteOn;
78 !pick_dir => pick_dir;