MIDIFile
MIDIFile is a project intended to read/write standard MIDI files with
JavaScript. MIDIFile is fully tested with the 3 existing MIDI formats.
MIDIFile can be used either in modern browsers
(pick the last bundle)
or with NodeJS by installing the following
NPM module :
npm install midifile
What it does
- Read MIDI files
- Check MIDI file structure (using strictMode)
- Write MIDI files (still experimental)
What it doesn't do
You can also find a Karaoke MIDI player based on
MIDIFile and a very trivial MIDI player
in the test folder.
Usage
var anyBuffer;
var midiFile= new MIDIFile(anyBuffer);
midiFile.header.getFormat();
midiFile.header.getTracksCount();
if(midiFile.header.getTimeDivision()===MIDIFileHeader.TICKS_PER_BEAT) {
midiFile.header.getTicksPerBit();
} else {
midiFile.header.getSMPTEFrames();
midiFile.header.getTicksPerFrame();
}
var events=midiFile.getMidiEvents();
events[0].subtype;
events[0].playTime;
events[0].param1;
events[0].param2;
var lyrics=midiFile.getLyrics();
lyrics[0].playTime;
lyrics[0].text;
var trackEventsChunk=midiFile.tracks[0].getTrackEvents(),
events=new MIDIEvents.createParser(trackEventsChunk),
event;
while(event=events.next()) {
if(event.type===MIDIEvents.EVENT_META&&event.text) {
console.log('Text meta: '+event.text);
}
}
Testing
Unit tests are using mocha and NodeJS. Install them and run the following command :
mocha tests/*.mocha.js
Why ArrayBuffers ?
ArrayBuffer instances ar the best way to manage binary datas like MIDI files.
Requirements
- ArrayBuffer, DataView or their polyfills
Contributing
- Feel free to PR
- If you find a MIDI File the library can't read an if it's under a free, PR
the file in the sounds folder and add tests for him. I'll work on it asap.
License
Copyright Nicolas Froidure 2013. MIT licence.