Skip to content
Web MIDI API stream based wrapper
JavaScript
Branch: master
Clone or download
Latest commit 36533e7 Nov 2, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md clean up option handling and lint Nov 28, 2015
index.js accept midi timestamps on write Nov 2, 2017
package.json 2.1.0 Nov 2, 2017

README.md

web-midi

This module wraps the Web MIDI API into a stream interface.

Web MIDI is currently only available in Chrome, but this module can potentially be used in older browsers with the WebMIDIAPIShim.

For a serverside (Node) based version of the same API check out midi-stream.

Install

$ npm install web-midi

Example

var midi = require('web-midi')
var inStream = midi.openInput('Launchpad')
var outStream = midi.openOutput('Launchpad')

inStream.on('data', function(data){
  // => [146, 32, 127]
})

// send on note
outStream.write([146, 38, 127])

setTimeout(function(){
  // off note
  outStream.write([146, 38, 0])
}, 1000)

// or use pipes
var anotherStream = midi.openOutput('IAC')
inStream.pipe(anotherStream)

Or create a duplex stream (assumes input and output ports are named the same thing)

var midi = require('web-midi')
var duplexStream = midi('Launchpad')

duplexStream.on('data', function(data){
  // => [146, 32, 127]
})

// send on note
duplexStream.write([146, 38, 127])

setTimeout(function(){
  // send off note
  duplexStream.write([146, 38, 0])
}, 1000)

// or use pipes
var anotherStream = midi('IAC')
duplexStream.pipe(anotherStream)
You can’t perform that action at this time.