node package manager

midi.io

receive input from MIDI devices in the browser

midi.io

a midi library for the web browser built on nodejs.

$ npm install midi.io

example app contained for reference.

midi.io is a connect middleware. it requires a socket.io instance as it's first argument.

var connect = require('connect'),
	socketio = require('socket.io'),
	midi = require('midi.io');

var server = connect.createServer(),
	io = socketio.listen(server);

server.use(midi(io));
server.listen(9000);

the server above will create the following resources:

GET /midi/devices - show all midi devices
GET /midi/devices/:id - get a specific midi device by port number
WS /midi/devices/:id - creates a websocket subscription to midi events from a specific device

a backbone client library is also provided. it creates two classes:

MidiDevice - this is a backbone model which emits midi events
MidiDevices - this is a collection to manage multiple devices

<script src="/midi.io/midi.io.js"></script>
<script>

	var devices = new MidiDevices();

	// show all midi devices
	devices.fetch({
		success: function() {
			console.log('found devices', devices.models);
		}
	});

	// tie a midi event to a specific function
	devices.learn(function() {
		console.log('the next midi button pressed will always log me!');
	});

	// log all midi events for all devices
	devices.on('midi', function(msg) {
		console.log('got midi', msg);
	});

</script>