{"id":20796431,"url":"https://github.com/jazz-soft/test-midi-files","last_synced_at":"2025-05-06T07:54:45.677Z","repository":{"id":48450817,"uuid":"311556772","full_name":"jazz-soft/test-midi-files","owner":"jazz-soft","description":"A framework for producing test MIDI files","archived":false,"fork":false,"pushed_at":"2025-04-29T00:24:11.000Z","size":205,"stargazers_count":29,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-29T01:32:58.128Z","etag":null,"topics":["midi","midi-clip","midi-file","midi-files","midi2","smf","test"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jazz-soft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"jazz-soft","custom":"https://paypal.me/jazzsoft"}},"created_at":"2020-11-10T05:36:41.000Z","updated_at":"2025-04-29T00:24:15.000Z","dependencies_parsed_at":"2024-03-22T04:26:16.545Z","dependency_job_id":"d147ad36-aa19-419f-99ac-ddd9db18f809","html_url":"https://github.com/jazz-soft/test-midi-files","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazz-soft%2Ftest-midi-files","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazz-soft%2Ftest-midi-files/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazz-soft%2Ftest-midi-files/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazz-soft%2Ftest-midi-files/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jazz-soft","download_url":"https://codeload.github.com/jazz-soft/test-midi-files/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252643853,"owners_count":21781592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["midi","midi-clip","midi-file","midi-files","midi2","smf","test"],"created_at":"2024-11-17T16:27:14.476Z","updated_at":"2025-05-06T07:54:45.624Z","avatar_url":"https://github.com/jazz-soft.png","language":"JavaScript","funding_links":["https://github.com/sponsors/jazz-soft","https://paypal.me/jazzsoft"],"categories":[],"sub_categories":[],"readme":"# test-midi-files\nA framework for producing test MIDI files\n\n[![npm](https://img.shields.io/npm/v/test-midi-files.svg)](https://www.npmjs.com/package/test-midi-files)\n[![npm](https://img.shields.io/npm/dt/test-midi-files.svg)](https://www.npmjs.com/package/test-midi-files)\n[![build](https://github.com/jazz-soft/test-midi-files/actions/workflows/build.yml/badge.svg)](https://github.com/jazz-soft/test-midi-files/actions)\n[![Coverage Status](https://coveralls.io/repos/github/jazz-soft/test-midi-files/badge.svg?branch=main)](https://coveralls.io/github/jazz-soft/test-midi-files?branch=main)\n\nSee also:\n- [**midi-test**](https://github.com/jazz-soft/midi-test)\n- [**web-midi-test**](https://github.com/jazz-soft/web-midi-test)\n- [**official MIDI specifications**](https://www.midi.org/specifications)\n\n## Before use\nPlease run `npm install` to make sure all dependencies are up to date.\n\n## Playing/viewing MIDI files\n`node index.js \u003cfilename.mid\u003e [\u003cmidi-out port\u003e | print | inspect | base64]`\n\ne.g.:  \n`node index.js midi/test-c-major-scale.mid`  \n-- play MIDI file to the default MIDI-Out port.  \n`node index.js midi/test-c-major-scale.mid \"Microsoft GS Wavetable Synth\"`  \n-- play MIDI file to the specified MIDI-Out port.  \n`node index.js midi/test-c-major-scale.mid print`  \n-- print MIDI file contents.  \n`node index.js midi/test-c-major-scale.mid inspect`  \n-- same as `print`, but also outputs the data offset within the MIDI file.  \n`node index.js midi/test-c-major-scale.mid base64`  \n-- output the MIDI file binary data in `Base64` format.\n\n## Playing MIDI files in browser\nOpen `index.html`\n\n## Creating your own test\nCopy `code/test-c-major-scale.js` or your favorite test in the `code` directory.  \nMake changes using the API documented at https://jazz-soft.net/doc/JZZ/midifile.html to suit your test case.  \nRun `node code/your-test-name.js`, it will create a MIDI file with the same name in the `midi` directory.\n\nIf you believe your test will be useful for others, please check it into this repository!\n\n## MIDI 2.0 files\nExperimental support.\nSee the `code2` and `midi2` directories.\n\n## Using as library in your own project\n`npm install test-midi-files --save`  \n```js\nconst TEST = require('test-midi-files');\n//...\n```\n\n## Test files\n- [**test-c-major-scale.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-c-major-scale.mid)\n- [**test-empty.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-empty.mid)\n- [**test-silence-all-notes-off.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-silence-all-notes-off.mid)\n- [**test-silence-end-of-track.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-silence-end-of-track.mid)\n- [**test-silence-text-metaevent.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-silence-text-metaevent.mid)\n- [**test-all-gm-percussion.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-all-gm-percussion.mid)\n- [**test-all-gm-sounds.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-all-gm-sounds.mid)\n- [**test-all-gm2-sounds.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-all-gm2-sounds.mid)\n- [**test-all-gs-sounds.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-all-gs-sounds.mid)\n- [**test-all-microsoft-gs-wavetable-synth-sounds.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-all-microsoft-gs-wavetable-synth-sounds.mid)\n- [**test-all-xg-sounds.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-all-xg-sounds.mid)\n- [**test-gm2-doggy-78-00-38-4c.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-gm2-doggy-78-00-38-4c.mid)\n- [**test-gm2-doggy-79-01-7b.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-gm2-doggy-79-01-7b.mid)\n- [**test-gs-doggy-01-00-7b.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-gs-doggy-01-00-7b.mid)\n- [**test-xg-doggy-40-00-30.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-xg-doggy-40-00-30.mid)\n- [**test-xg-doggy-7e-00-00-54.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-xg-doggy-7e-00-00-54.mid)\n- [**test-2-tracks-type-0.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-2-tracks-type-0.mid)\n- [**test-2-tracks-type-1.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-2-tracks-type-1.mid)\n- [**test-2-tracks-type-2.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-2-tracks-type-2.mid)\n- [**test-control-00-20-bank-select.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-control-00-20-bank-select.mid)\n- [**test-control-40-damper.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-control-40-damper.mid)\n- [**test-control-41-portamento.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-control-41-portamento.mid)\n- [**test-control-54-portamento-control.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-control-54-portamento-control.mid)\n- [**test-control-7c-omni-mode-off.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-control-7c-omni-mode-off.mid)\n- [**test-control-7d-omni-mode-on.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-control-7d-omni-mode-on.mid)\n- [**test-control-7e-mono-mode-on.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-control-7e-mono-mode-on.mid)\n- [**test-control-7f-poly-mode-on.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-control-7f-poly-mode-on.mid)\n- [**test-multichannel-chords-0.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-multichannel-chords-0.mid)\n- [**test-multichannel-chords-1.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-multichannel-chords-1.mid)\n- [**test-multichannel-chords-2.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-multichannel-chords-2.mid)\n- [**test-multichannel-chords-3.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-multichannel-chords-3.mid)\n- [**test-note-on-velocity.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-note-on-velocity.mid)\n- [**test-rpn-00-00-pitch-bend-range.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-rpn-00-00-pitch-bend-range.mid)\n- [**test-rpn-00-01-fine-tuning.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-rpn-00-01-fine-tuning.mid)\n- [**test-rpn-00-02-coarse-tuning.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-rpn-00-02-coarse-tuning.mid)\n- [**test-rpn-00-05-modulation-depth-range.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-rpn-00-05-modulation-depth-range.mid)\n- [**test-running-status-metaevent.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-running-status-metaevent.mid)\n- [**test-running-status-sysex.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-running-status-sysex.mid)\n- [**test-smpte-offset.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-smpte-offset.mid)\n- [**test-sysex-7e-06-01-id-request.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-sysex-7e-06-01-id-request.mid)\n- [**test-sysex-7e-09-01-gm1-enable.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-sysex-7e-09-01-gm1-enable.mid)\n- [**test-sysex-7e-09-02-gm-disable.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-sysex-7e-09-02-gm-disable.mid)\n- [**test-sysex-7e-09-03-gm2-enable.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-sysex-7e-09-03-gm2-enable.mid)\n- [**test-sysex-7f-04-03-master-fine-tuning.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-sysex-7f-04-03-master-fine-tuning.mid)\n- [**test-sysex-7f-04-04-master-coarse-tuning.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-sysex-7f-04-04-master-coarse-tuning.mid)\n- [**test-sysex-7x-08-0x-scale-tuning.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-sysex-7x-08-0x-scale-tuning.mid)\n- [**test-sysex-gs-40-1x-15-drum-part-change.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-sysex-gs-40-1x-15-drum-part-change.mid)\n- [**test-sysex-gs-40-1x-4x-scale-tuning.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-sysex-gs-40-1x-4x-scale-tuning.mid)\n- [**test-track-length.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-track-length.mid)\n- [**test-karaoke-kar.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-karaoke-kar.mid)\n- [**test-non-midi-track.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-non-midi-track.mid)\n- [**test-vlq-2-byte.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-vlq-2-byte.mid)\n- [**test-vlq-3-byte.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-vlq-3-byte.mid)\n- [**test-vlq-4-byte.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-vlq-4-byte.mid)\n- [**test-corrupt-file-extra-byte.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-corrupt-file-extra-byte.mid)\n- [**test-corrupt-file-missing-byte.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-corrupt-file-missing-byte.mid)\n- [**test-illegal-message-all.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-all.mid)\n- [**test-illegal-message-f1-xx.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-f1-xx.mid)\n- [**test-illegal-message-f2-xx-xx.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-f2-xx-xx.mid)\n- [**test-illegal-message-f3-xx.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-f3-xx.mid)\n- [**test-illegal-message-f4.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-f4.mid)\n- [**test-illegal-message-f5.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-f5.mid)\n- [**test-illegal-message-f6.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-f6.mid)\n- [**test-illegal-message-f8.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-f8.mid)\n- [**test-illegal-message-f9.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-f9.mid)\n- [**test-illegal-message-fa.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-fa.mid)\n- [**test-illegal-message-fb.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-fb.mid)\n- [**test-illegal-message-fc.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-fc.mid)\n- [**test-illegal-message-fd.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-fd.mid)\n- [**test-illegal-message-fe.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-illegal-message-fe.mid)\n- [**test-empty-file.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-empty-file.mid)\n- [**test-not-a-midi-file.mid**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-not-a-midi-file.mid)\n- [**test-syx-7e-06-01-id-request.syx**](https://github.com/jazz-soft/test-midi-files/raw/main/midi/test-syx-7e-06-01-id-request.syx)\n- [**test-c-major-scale-m1-g0.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-c-major-scale-m1-g0.midi2)\n- [**test-c-major-scale-m1-g1.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-c-major-scale-m1-g1.midi2)\n- [**test-c-major-scale-m2-g0.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-c-major-scale-m2-g0.midi2)\n- [**test-c-major-scale-m2-g1.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-c-major-scale-m2-g1.midi2)\n- [**test-data.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-data.midi2)\n- [**test-empty.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-empty.midi2)\n- [**test-minimal.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-minimal.midi2)\n- [**test-no-header.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-no-header.midi2)\n- [**test-out-of-order-data.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-out-of-order-data.midi2)\n- [**test-out-of-order-sysex.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-out-of-order-sysex.midi2)\n- [**test-out-of-order-text.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-out-of-order-text.midi2)\n- [**test-text-message.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-text-message.midi2)\n- [**test-gm2-doggy-78-00-38-4c.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-gm2-doggy-78-00-38-4c.midi2)\n- [**test-gm2-doggy-79-01-7b.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-gm2-doggy-79-01-7b.midi2)\n- [**test-gs-doggy-01-00-7b.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-gs-doggy-01-00-7b.midi2)\n- [**test-xg-doggy-40-00-30.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-xg-doggy-40-00-30.midi2)\n- [**test-xg-doggy-7e-00-00-54.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-xg-doggy-7e-00-00-54.midi2)\n- [**test-empty-file.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-empty-file.midi2)\n- [**test-not-a-midi-file.midi2**](https://github.com/jazz-soft/test-midi-files/raw/main/midi2/test-not-a-midi-file.midi2)\n## More to come...\n*NOTE:* not every MIDI message is understood by every MIDI device!\n\n## Thanks for your support!\n[![Stargazers for @jazz-soft/test-midi-files](https://reporoster.com/stars/jazz-soft/test-midi-files)](https://github.com/jazz-soft/test-midi-files/stargazers)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjazz-soft%2Ftest-midi-files","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjazz-soft%2Ftest-midi-files","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjazz-soft%2Ftest-midi-files/lists"}