//---------------| // shake-o-matic! // by: Ge Wang (gewang@cs.princeton.edu) // Perry R. Cook (prc@cs.princeton.edu) //------------------| // our patch Shakers shake => JCRev r => dac; // set the gain //.95 => r.gain; // set the reverb mix .025 => r.mix; // our main loop while( true ) { // frequency.. // note: Math.randomf() returns value between 0 and 1 if( Math.randomf() > 0.625 ) { Math.random2( 0, 22 ) => shake.which; Std.mtof( Math.random2f( 0.0, 128.0 ) ) => shake.freq; Math.random2f( 0, 128 ) => shake.objects; <<< "instrument #:", shake.which(), shake.freq(), shake.objects() >>>; } // shake it! Math.random2f( 0.8, 1.3 ) => shake.noteOn; // note: Math.randomf() returns value between 0 and 1 if( Math.randomf() > 0.9 ) { 500::ms => now; } else if( Math.randomf() > .925 ) { 250::ms => now; } else if( Math.randomf() > .05 ) { .125::second => now; } else { 1 => int i => int pick_dir; // how many times 4 * Math.random2( 1, 5 ) => int pick; 0.0 => float pluck; 0.7 / pick => float inc; // time loop for( ; i < pick; i++ ) { 75::ms => now; Math.random2f(.2,.3) + i*inc => pluck; pluck + -.2 * pick_dir => shake.noteOn; // simulate pluck direction !pick_dir => pick_dir; } // let time pass for final shake 75::ms => now; } }