Tame the Web MIDI API. Send and receive MIDI messages with ease. Control instruments with user-friendly functions (playNote, sendPitchBend, etc.). React to MIDI input with simple event listeners (noteon, pitchbend, controlchange, etc.).
APACHE-2.0 License
Bot releases are visible (Hide)
Published by djipco 3 months ago
Published by djipco 6 months ago
WebMidi.supported
not necessarily returning boolean
(#417)Published by djipco 10 months ago
This is a maintenance release with a few fixes and clarifications.
Output.channelAfterTouch()
(#401) (19faf782b)Output.clear()
method (43b6285e1)sendAllNotesOff()
(dd91df456)Published by djipco 11 months ago
This version is a minor release that fixes an issue that appeared in Node.js v21+
Published by djipco over 1 year ago
Fixes minor bug when calling WebMidi.disable()
(issue #361)
Published by djipco over 1 year ago
playNote()
method nows correctly sends noteoff messages when the notes are specified as an array. Thanks to @tobyhede for the fix!Published by djipco over 1 year ago
OutputChannel.playNote()
now properly sends a note off when the duration is specified via the Note
object (issue #337).
Published by djipco over 1 year ago
This is a minor release that fixes a type issue with the new Utilities.getCcNumberByName()
method. Thanks to @tobyhede for submitting PR #335.
Published by djipco almost 2 years ago
Published by djipco almost 2 years ago
Published by djipco almost 2 years ago
This version updates the control change message infrastructure. It is now possible to listen to specific control change messages by using the form controlchange-volumecoarse
.
There is now a Enumerations.CONTROL_CHANGE_MESSAGES
array that contains more information than before about control change messages. Here's what the array looks like:
[
{
number: 0,
name: "bankselectcoarse",
description: "Bank Select (Coarse)",
position: "msb"
},
{
number: 1,
name: "modulationwheelcoarse",
description: "Modulation Wheel (Coarse)",
position: "msb"
},
// etc.
]
Note that if your code references the Enumerations.MIDI_CONTROL_CHANGE_MESSAGES
enum, you will get a deprecation warning in the console, but it will continue to work until version 4. From now on, you should use the Enumerations.CONTROL_CHANGE_MESSAGES
array.
In some edge cases, it is possible that this version will demand an update to your code. Here are the potential problem areas:
If you are using the Utilities.getCcNameByNumber()
method you may get different controller names than before for the following controllers: 16, 17, 18, 19, 39, 64, 66, 69, 72, 73, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 88, 91, 92, 93, 94, 95, 96, 97.
Controller names have been updated to reflect the current state of the MIDI specification. If you are listening to the general rpn
or nrpn
events, the subtype
property of the event may have changed.
Some control change messages (98, 99, 100 and 101) were incorrectly identified (see issue #325). They are now properly labeled as:
nonregisteredparameterfine
nonregisteredparametercoarse
registeredparameterfine
registeredparametercoarse
Published by djipco almost 2 years ago
flavour
property to WebMidi
object (a9870ad3f)Published by djipco almost 2 years ago
jzz
module to fix Apple M1 support in Node.js (6414f5e2d & 04622d3ee)djipevents
(71ee5923e)Published by djipco almost 2 years ago
This release fixes an issue with TypeScript projects that use "type": "module"
and "moduleResolution": "nodenext"
(thanks to Torgeir Hovden for catching and fixing the problem).
Published by djipco almost 2 years ago
This is a minor release that now exports the EventEmitter
and Listener
objects in the TypeScript type declarations. It also includes a bunch of third-party security updates.
Published by djipco over 2 years ago
This release removes code triggering the 'unsafe-eval' context which fixes a problem when using WEBMIDI.js inside an Electron application. See issue #277 for details.
Published by djipco over 2 years ago
This release fixes a regression issue causing Node.js to fail to correctly identify the proper flavour of module to load (ESM vs CJS).
Published by djipco over 2 years ago
Published by djipco over 2 years ago