useMidi
is a low-level custom React Hook to access the Web MIDI API. It provides access to incoming MIDIMessageEvent
s and helpers to request and observe the user's permission.
yarn add @mkaradeniz/use-midi
or
npm install @mkaradeniz/use-midi
const [midiMessages, { isSupported, isRequested, isAllowed }, requestMidiAccess, midiAccess] = useMidi()
Type |
Default |
Options |
{ automaticallyRequestPermission: false, debug: false, suppressActiveSensing: true, sysex: false } |
Property |
Type |
Description |
commandCode |
number |
Recieved command code. |
note |
`number |
undefined` |
timestamp |
DOMHighResTimeStamp |
High-resolution time of when the event was received. |
rawEvent |
WebMidi.MIDIMessageEvent |
The raw WebMidi.MIDIMessageEvent . |
velocity |
`number |
undefined` |
Option |
Type |
Description |
Default |
automaticallyRequestPermission |
boolean |
If set to true , useMidi will automatically ask for the user's permission to access the MIDI devices, instead of waiting for the consumer to call requestAccess . |
false |
callback |
(midiMessage: MidiMessage) => void |
If provided, the callback will be called on every received MidiMessage . |
undefined |
messagesHistoryCount |
number |
midiMessages will always contain the last messagesHistoryCount elements. |
256 |
debug |
boolean |
If set to true , useMidi will log every event to the console. |
false |
suppressActiveSensing |
boolean |
If set to true , useMidi will ignore the Active Sensing event. |
true |
sysex |
boolean |
If set to true , useMidi use the sysex option when requesting MIDI access. |
false |
Index |
Variable |
Type |
Description |
Default |
0 |
midiMessages |
MidiMessage[] |
An array of all MidiMessage s, from oldest (index 0 ) to newest. |
[] |
1 |
status |
Status |
Object with all statuses. |
{isAllowed: false, isRequested: False, isSupported: false} |
2 |
requestAccess |
() => void |
Function to request the user's permission to access MIDI devices. |
() => void |
3 |
midiAccess |
MIDIAccess |
The MIDIAccess interface. |
undefined |
Status |
Type |
Description |
Default |
isAllowed |
boolean |
Whether the user gave permission to access MIDI devices. |
false |
isRequested |
boolean |
Whether we requested the user to grant permission to access MIDI devices. |
false |
isSupported |
boolean |
Whether the Web MIDI API is supported by the browser. |
false |
This project is written in TypeScript and setup as a monorepo managed by Yarn-Workspaces & Lerna.
⚠️ Only release through yarn release
in root. Do not npm publish
individual packages.