node package manager



MIDIEvents is a module intended to help working with MIDI events.

MIDIEvents is the base project for MIDIFile and MIDIPlayer. You can also check this Karaoke Player built on top of those libraries.

NPM version Build status Dependency Status devDependency Status Coverage Status

MIDIEvents can be used either in modern browsers (pick the last bundle) or with NodeJS by installing the following NPM module :

npm install midievents

Browser support

Build Status

What it does

  • Decode MIDI events
  • Check MIDI events (using strictMode)
  • Calculate needed buffer to encode MIDI events
  • Encode MIDI events

What it doesn't do


// Your variable with an ArrayBuffer instance containing your MIDI events 
var anyBuffer;
// Parse MIDI events 
var events = [];
var parser = new MIDIEvents.createParser(new DataView(anyBuffer), 0, false);
var event =;
do {
  event =;
} while(event);
// Check bufffer size before encoding 
if(anyBuffer.length >= MIDIEvents.getRequiredBufferLength(events)) {
// Encode MIDI events 
var destination = new Uint8Array(anyBuffer);
MIDIEvents.writeToTrack(events, destination);

Contributing / Testing

Install them and run the following command :

npm install --dev
su npm install grunt-cli -g
grunt test


  • Feel free to PR
  • If you find MIDI events the library can't read, create a test an do a pull request. I'll work on it asap.
  • Run npm run to get a list of useful development commands.


Copyright Nicolas Froidure. MIT licence.