Noiseless Peaceful Morning

    web-midi-api

    2.1.5 • Public • Published

    Web MIDI API for Node.js

    nodejs windows macos linux raspberry pi
    npm npm

    This package is deprecated and kept here for the old projects compatibility. It redirects to jzz:

    // index.js:
    module.exports = require('jzz');

    If you are starting a new project, please consider using jzz directly.

    Other versions

    Usage

    npm install web-midi-api

    var navigator = require('web-midi-api');
    // consider using var navigator = require('jzz');
    
    var midi;
    var inputs;
    var outputs;
    
    function onMIDIFailure(msg) {
      console.log('Failed to get MIDI access - ' + msg);
      process.exit(1);
    }
    
    function onMIDISuccess(midiAccess) {
      midi = midiAccess;
      inputs = midi.inputs;
      outputs = midi.outputs;
      setTimeout(testOutputs, 500);
    }
    
    function testOutputs() {
      console.log('Testing MIDI-Out ports...');
      outputs.forEach(function(port) {
        console.log('id:', port.id, 'manufacturer:', port.manufacturer, 'name:', port.name, 'version:', port.version);
        port.open();
        port.send([0x90, 60, 0x7f]);
      });
      setTimeout(stopOutputs, 1000);
    }
    
    function stopOutputs() {
      outputs.forEach(function(port) {
        port.send([0x80, 60, 0]);
      });
      testInputs();
    }
    
    function onMidiIn(ev) {
      var arr = [];
      for(var i = 0; i < ev.data.length; i++) {
        arr.push((ev.data[i] < 16 ? '0' : '') + ev.data[i].toString(16));
      }
      console.log('MIDI:', arr.join(' '));
    }
    
    function testInputs() {
      console.log('Testing MIDI-In ports...');
      inputs.forEach(function(port) {
        console.log('id:', port.id, 'manufacturer:', port.manufacturer, 'name:', port.name, 'version:', port.version);
        port.onmidimessage = onMidiIn;
      });
      setTimeout(stopInputs, 5000);
    }
    
    function stopInputs() {
      console.log('Thank you!');
      navigator.close(); // This will close MIDI inputs, otherwise Node.js will wait for MIDI input forever.
      process.exit(0);
    }
    
    navigator.requestMIDIAccess().then(onMIDISuccess, onMIDIFailure);

    Install

    npm i web-midi-api

    DownloadsWeekly Downloads

    119

    Version

    2.1.5

    License

    MIT

    Unpacked Size

    5.46 kB

    Total Files

    4

    Last publish

    Collaborators

    • jazz-soft