Midi parser & player engine for browser or Node. Works well with single or multitrack MIDI files.
npm install midi-player-jsMidiPlayerJS is a JavaScript library which reads standard MIDI files and emits JSON events in real time. This player does not generate any audio, but by attaching a handler to the event emitter you can trigger any code you like which could play audio, control visualizations, feed into a MIDI interface, etc.
MidiPlayer.Player with an event handler to be called for every MIDI event. Then you can load and play a MIDI file.``js
var MidiPlayer = require('midi-player-js');
// Initialize player and register event handler
var Player = new MidiPlayer.Player(function(event) {
console.log(event);
});
// Load a MIDI file
Player.loadFile('./test.mid');
Player.play();
`PlayerPlayer Events
There are a handful of events on the object which you can subscribe to using the Player.on() method. Some events pass data as the first argument of the callback as described below:
`js
Player.on('fileLoaded', function() {
// Do something when file is loaded
});
Player.on('playing', function(currentTick) {
// Do something while player is playing
// (this is repeatedly triggered within the play loop)
});
Player.on('midiEvent', function(event) {
// Do something when a MIDI event is fired.
// (this is the same as passing a function to MidiPlayer.Player() when instantiating.
});
Player.on('endOfFile', function() {
// Do something when end of the file has been reached.
});
`
Note that because of a common practice called "running status" many MIDI files may use Note on events with 0 velocity in place of Note off` events.