♬ MidiPlayerJS
MidiPlayerJS 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.
Forked & modified by Tim Mensch to be easier to include into an ES6 or TypeScript project. Includes TypeScript types.
Additional post-fork improvements include:
- Older Safari browser compatibility: There were several places where the code would fail on Safari on iOS 9. Fixed/polyfilled.
- Optimized: Was using
Uint8Array.slice
previously, which creates a copy of the slice. Changed tosubarray
which links to the original data. - Use a gulpfile to enable building cross-platform. Previously it wouldn't build on Windows.
- Improved the packaging to use
require
, and correctly usebrowserify
to package both browser and node versions. - Add a
yarn.lock
file for consistent builds. - Fix Program Change message to work as expected
Demos
- Neopixel Music by robertvorthman @robertvorthman
- Autocomposer by RJ Salvador @rjsalvadorr
- Simple Browser Player by Garrett Grimm @grimmdude
Getting Started
Using MidiWriterJS is pretty simple. Create a new player by instantiating MidiPlayer.Player
with an event handler to be called for every MIDI event. Then you can load and play a MIDI file.
var MidiPlayer = ; // Initialize player and register event handlervar Player = { console;}; // Load a MIDI filePlayer;Player;
Player Events
There are a handful of events on the Player
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:
Player;Player;Player;Player;