Guest User

MIDI

a guest
Aug 25th, 2013
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <html>
  2.     <head>
  3.         <title>MIDI Monitor</title>
  4.         <script type="text/javascript">
  5.             var m = null;   // MIDIAccess object
  6.             navigator.requestMIDIAccess().then( onsuccesscallback, onerrorcallback );
  7.  
  8.             function onsuccesscallback( access ) {
  9.                 m = access;
  10.  
  11.                 var inputs = m.inputs();
  12.                 var outputs = m.outputs();
  13.                 if (inputs.length > 0) {
  14.                     inputs[0].onmidimessage = onMidiMessage;
  15.                 }
  16.                
  17.                 // var o = outputs[0];
  18.                 // o.send( [ 0x90, 0x45, 0x50 ] ); // Full velocity (0x7f) note on A4 (0x45 = midi 69 = key 49) on channel zero
  19.                 // o.send( [ 0x80, 0x45, 0x40 ], window.performance.now() + 1000 );  // full velocity A4 note off in one second.
  20.             };
  21.  
  22.             function onerrorcallback( err ) {
  23.                 console.log(err.code );
  24.             }
  25.            
  26.             function onMidiMessage(event) {
  27.                
  28.                 // event.receivedTime - seconds since the page loaded
  29.                 // event.data - [message_code, data, data]
  30.                 // message_code
  31.                 //     176 = control change
  32.                 //     144 - note on
  33.                 //     128 - note off
  34.                 var data = event.data;
  35.                 var velocity = 0;
  36.                 var noteNumber = 0;
  37.                 switch(parseInt(data[0])) {
  38.                     case 144: // ON
  39.                         noteNumber = data[1] - 20;
  40.                         velocity = data[2];
  41.                         console.log("ON " + noteNumber + " V: " + velocity);
  42.                         break;
  43.                     case 128: // OFF
  44.                         noteNumber = data[1] - 20;
  45.                         console.log("OFF " + noteNumber);
  46.                         break;
  47.                     default:
  48.                         break;
  49.                 }
  50.             }
  51.         </script>
  52.     </head>
  53.     <body>
  54.     </body>
  55. </html>
Advertisement
Add Comment
Please, Sign In to add comment