A simple MIDI player which sends MIDI messages to connected devices.
This module provides a player which sends MIDI messages to connected devices. It schedules the messages with a look ahead of about 500 milliseconds. It does not directly rely on the Web MIDI API but expects a MIDIOutput to be passed as constructor argument. But theoretically that could be anything which implements the same interface.
midi-player is published on npm and can be installed as usual.
npm install midi-player
The only exported function is a factory method to create new player instances.
;// This is a JSON object which represents a MIDI file.const json =division: 480format: 1tracks:channel: 0 delta: 0 noteOn: noteNumber: 36 velocity: 100channel: 0 delta: 240 noteOff: noteNumber: 36 velocity: 64delta: 0 endOfTrack: true;// This is a quick & dirty approach to grab the first known MIDI output.const midiAccess = await navigator;const midiOutput = Array0;const midiPlayer = ;// All MIDI messages have been sent when the promise returned by play() resolves.await midiPlayer;
If you want to play a binary MIDI file you can use the midi-json-parser package to transform it into a compatible JSON representation.