// MUSIC-220A Homework 4 - Jingjie Zhang // Ping-Pong Delay with Random Feedback gain adc.chan(0) => Gain Mix0 => NRev R0 => dac.chan(0); adc.chan(0) => Gain Mix1 => NRev R1 => dac.chan(1); adc.chan(0) => DelayA Dly0 => Gain Feedback0 => DelayA Dly1 => Mix1; adc.chan(0) => Dly1 => Gain Feedback1 => Dly0 => Mix0; 1000::ms => Dly0.max => Dly1.max; 540::ms => Dly0.delay; 270::ms => Dly1.delay; 0.3 => float FdbkGain; FdbkGain => Feedback0.gain => Feedback1.gain; 0.01 => R0.mix => R1.mix; 2 => Mix0.gain => Mix1.gain; Random Ran; Ran.set(0.2, 0.7); 540::ms => dur UpdateTime; // control loop while( true ) { Ran.tick() => float FdbkGain; FdbkGain => Feedback0.gain => Feedback1.gain; UpdateTime => now; } class Random { float _l, _h; false => int isSet; fun void set( float l, float h ) { l => _l; h => _h; true => isSet; } fun float tick( ) { if (!isSet) { <<<"Periodic not set, quitting">>>; me.exit(); } return Std.rand2f(_l, _h); } }