A framework for producing test MIDI files
See also:
Please run npm install
to make sure all dependencies are up to date.
node index.js <filename.mid> [<midi-out port> | print | inspect | base64]
e.g.:
node index.js midi/test-c-major-scale.mid
-- play MIDI file to the default MIDI-Out port.
node index.js midi/test-c-major-scale.mid "Microsoft GS Wavetable Synth"
-- play MIDI file to the specified MIDI-Out port.
node index.js midi/test-c-major-scale.mid print
-- print MIDI file contents.
node index.js midi/test-c-major-scale.mid inspect
-- same as print
, but also outputs the data offset within the MIDI file.
node index.js midi/test-c-major-scale.mid base64
-- output the MIDI file binary data in Base64
format.
Open index.html
Copy code/test-c-major-scale.js
or your favorite test in the code
directory.
Make changes using the API documented at https://jazz-soft.net/doc/JZZ/midifile.html to suit your test case.
Run node code/your-test-name.js
, it will create a MIDI file with the same name in the midi
directory.
If you believe your test will be useful for others, please don't hesitate to check it into this repository.
- test-c-major-scale.mid
- test-empty.mid
- test-all-gm-percussion.mid
- test-all-gm-sounds.mid
- test-all-gm2-sounds.mid
- test-all-gs-sounds.mid
- test-all-microsoft-gs-wavetable-synth-sounds.mid
- test-all-xg-sounds.mid
- test-gm2-doggy-78-00-38-4c.mid
- test-gm2-doggy-79-01-7b.mid
- test-gs-doggy-01-00-7b.mid
- test-xg-doggy-40-00-30.mid
- test-xg-doggy-7e-00-00-54.mid
- test-2-tracks-type-0.mid
- test-2-tracks-type-1.mid
- test-2-tracks-type-2.mid
- test-control-00-20-bank-select.mid
- test-control-40-damper.mid
- test-control-41-portamento.mid
- test-control-54-portamento-control.mid
- test-control-7c-omni-mode-off.mid
- test-control-7d-omni-mode-on.mid
- test-control-7e-mono-mode-on.mid
- test-control-7f-poly-mode-on.mid
- test-multichannel-chords-0.mid
- test-multichannel-chords-1.mid
- test-multichannel-chords-2.mid
- test-multichannel-chords-3.mid
- test-rpn-00-00-pitch-bend-range.mid
- test-rpn-00-01-fine-tuning.mid
- test-rpn-00-02-coarse-tuning.mid
- test-rpn-00-05-modulation-depth-range.mid
- test-smpte-offset.mid
- test-sysex-7e-06-01-id-request.mid
- test-sysex-7e-09-01-gm1-enable.mid
- test-sysex-7e-09-02-gm-disable.mid
- test-sysex-7e-09-03-gm2-enable.mid
- test-sysex-7f-04-03-master-fine-tuning.mid
- test-sysex-7f-04-04-master-coarse-tuning.mid
- test-sysex-7x-08-0x-scale-tuning.mid
- test-sysex-gs-40-1x-15-drum-part-change.mid
- test-sysex-gs-40-1x-4x-scale-tuning.mid
- test-track-length.mid
- test-karaoke-kar.mid
- test-non-midi-track.mid
- test-vlq-2-byte.mid
- test-vlq-3-byte.mid
- test-vlq-4-byte.mid
- test-corrupt-file-extra-byte.mid
- test-corrupt-file-missing-byte.mid
- test-illegal-message-all.mid
- test-illegal-message-f1-xx.mid
- test-illegal-message-f2-xx-xx.mid
- test-illegal-message-f3-xx.mid
- test-illegal-message-f4.mid
- test-illegal-message-f5.mid
- test-illegal-message-f6.mid
- test-illegal-message-f8.mid
- test-illegal-message-f9.mid
- test-illegal-message-fa.mid
- test-illegal-message-fb.mid
- test-illegal-message-fc.mid
- test-illegal-message-fd.mid
- test-illegal-message-fe.mid
- test-syx-7e-06-01-id-request.syx
NOTE: not every MIDI message is understood by every MIDI device!