SndBuf buffy => TwoZero t => TwoZero t2 => OnePole p; "/Users/phunter/CCRMA-Coursework/winter_11/220b/hw2/BjornSines.wav" => buffy.read; p => TwoPole f1 => gain g; p => TwoPole f2 => g; p => TwoPole f3 => g; g => JCRev r => dac; g => JCRev rL => dac.left; g => JCRev rR => dac.right; g => Delay d1 => gain g1 => r; g => Delay d2 => gain g2 => rL; g => Delay d3 => gain g3 => rR; g1 => d1; g2 => d2; g3 => d3; 1.0 => t.b0; 0.0 => t.b1; -1.0 => t.b2; 1.0 => t2.b0; 0.0 => t2.b1; 1.0 => t2.b2; 0.1 => g1.gain; .1 => g2.gain; 0.1 => g3.gain; 0.1 => float masterGain; 0.05 => r.mix; 1.5 :: second => d1.max; 2.0 :: second => d2.max; 2.8 :: second => d3.max; 1.41459 :: second => d1.delay; 1.97511 :: second => d2.delay; 2.71793 :: second => d3.delay; 0.997 => f1.radius; 0.997 => f2.radius; 0.997 => f3.radius; .5 => f1.gain; 0.5 => f2.gain; 0.4 => f3.gain; std.rand2f(230.0,660.0) => f1.freq; std.rand2f(800.0,2300.0) => f2.freq; std.rand2f(1700.0,3000.0) => f3.freq; 400.0 => float f1freq; 1000.0 => float f2freq; 2800.0 => float f3freq; 400.0 => float target_f1freq; 1000.0 => float target_f2freq; 2800.0 => float target_f3freq; 0.99 => p.pole; 0.2 => p.gain; 0.0013 => float period; 0.0013 => float target_period; 0.0 => float modphase; [0, 1, 5, 7, 8, 11, 8, 7, 11, 12, 14, 15, 19, 17, 20, 24] @=> int scale[]; ["ut0", "ra0", "fa0", "ut0", "ra0", "mi0", "ra1", "ut1", "mi0", "ut1", "re1", "mi1", "ut1", "fa1", "re1", "ut2"] @=> string names[]; 9 => int scalepoint; spork ~ ramp_stuff(); // interpolate pitch and formants int dir; float freq; float temp; while( true ) { // set formant targets std.rand2f(230.0,660.0) => target_f1freq; std.rand2f(800.0,2300.0) => target_f2freq; std.rand2f(1700.0,3000.0) => target_f3freq; // random walk the scale std.rand2(-1,1) + scalepoint => scalepoint; if (scalepoint < 0) 0 => scalepoint; if (scalepoint > 15) 15 => scalepoint; 55.0 * math.pow(1.059,scale[scalepoint]) => freq; <<< names[scalepoint], freq >>>; // set target period 1.0 / freq => target_period; // wait until next note std.rand2f(0.2,1.9) :: second => now; } fun void ramp_stuff() { 0.1 => float slew; while (1) { (target_period - period) * slew + period => period; (target_f1freq - f1freq) * slew + f1freq => f1freq => f1.freq; (target_f2freq - f2freq) * slew + f2freq => f2freq => f2.freq; (target_f3freq - f3freq) * slew + f3freq => f3freq => f3.freq; 0.10 :: second => now; } }