// HID Hid hi; HidMsg msg; // which keyboard 0 => int device; // get from command line if( me.args() ) me.arg(0) => Std.atoi => device; // open keyboard (get device number from command line) if( !hi.openKeyboard( device ) ) me.exit(); <<< "keyboard '" + hi.name() + "' ready", "" >>>; // patch Mandolin tone => JCRev r => Echo e => Echo e2 => dac; r => dac; // set delays 240::ms => e.max => e.delay; 480::ms => e2.max => e2.delay; // set gains 0.3 => e.gain; //0.6 0.3 => e2.gain; 0.03 => r.mix; 0 => tone.gain; // infinite event loop while( true ) { // wait for event hi => now; // get message while( hi.recv( msg ) ) { // check if( msg.isButtonDown() ) { <<< "down:", msg.which, "(code)", msg.key, "(usb key)", msg.ascii, "(ascii)" >>>; Std.mtof( msg.which + 45 ) => float freq; if( freq > 20000 ) continue; //check for pitches if ( 26 == msg.key ) { 40 => Std.mtof => tone.freq; } else if ( 4 == msg.key ) { 41 => Std.mtof => tone.freq; } else if ( 22 == msg.key ) { 43 => Std.mtof => tone.freq; } else if ( 7 == msg.key ) { 45 => Std.mtof => tone.freq; } else if ( 9 == msg.key ) { 47 => Std.mtof => tone.freq; } else if ( 10 == msg.key ) { 48 => Std.mtof => tone.freq; } else if ( 82 == msg.key ) { 50 => Std.mtof => tone.freq; } else if ( 79 == msg.key ) { 52 => Std.mtof => tone.freq; } else if ( 81 == msg.key ) { 53 => Std.mtof => tone.freq; } else if ( 80 == msg.key ) { 55 => Std.mtof => tone.freq; } else if ( 44 == msg.key ) { 57 => Std.mtof => tone.freq; } .5 => tone.gain; 1 => tone.noteOn; 80::ms => now; } else { 0 => tone.noteOff; } } }