@eugabrielsilva/capacitor-midi-device
v8.0.1
Published
connect midi devices to your app
Maintainers
Readme
@eugabrielsilva/capacitor-midi-device
Connect midi devices to your Capacitor app.
✅ Working on web, Android and iOS.
⚠️ Requires Capacitor 8
Install
npm install @eugabrielsilva/capacitor-midi-device
npx cap syncAPI
listMIDIDevices()openDevice(...)sendMIDIMessage(...)initConnectionListener()addListener('MIDI_MSG_EVENT', ...)addListener('MIDI_CON_EVENT', ...)- Interfaces
- Enums
listMIDIDevices()
listMIDIDevices() => Promise<{ value: string[]; }>List available MIDI input devices.
Returns: Promise<{ value: string[]; }>
openDevice(...)
openDevice(options: DeviceOptions) => Promise<void>Open a MIDI input device to receive MIDI_MSG_EVENT events.
| Param | Type |
| ------------- | ------------------------------------------------------- |
| options | DeviceOptions |
sendMIDIMessage(...)
sendMIDIMessage(options: SendMIDIMessageOptions) => Promise<void>Send a raw MIDI message to an output device.
| Param | Type |
| ------------- | ------------------------------------------------------------------------- |
| options | SendMIDIMessageOptions |
initConnectionListener()
initConnectionListener() => Promise<void>Start listening for device connection/disconnection updates.
addListener('MIDI_MSG_EVENT', ...)
addListener(eventName: 'MIDI_MSG_EVENT', listenerFunc: (message: MidiMessage) => void) => Promise<PluginListenerHandle>| Param | Type |
| ------------------ | ------------------------------------------------------------------------- |
| eventName | 'MIDI_MSG_EVENT' |
| listenerFunc | (message: MidiMessage) => void |
Returns: Promise<PluginListenerHandle>
addListener('MIDI_CON_EVENT', ...)
addListener(eventName: 'MIDI_CON_EVENT', listenerFunc: (devices: { value: string[]; }) => void) => Promise<PluginListenerHandle>| Param | Type |
| ------------------ | ------------------------------------------------------- |
| eventName | 'MIDI_CON_EVENT' |
| listenerFunc | (devices: { value: string[]; }) => void |
Returns: Promise<PluginListenerHandle>
Interfaces
DeviceOptions
Options used to select and open a MIDI input device for listening.
| Prop | Type |
| ------------------ | ------------------- |
| deviceNumber | number |
SendMIDIMessageOptions
Options used to send raw MIDI data to a MIDI output device.
| Prop | Type | Description |
| ------------------ | --------------------- | -------------------------------------------------------------------------------------------- |
| data | number[] | Raw MIDI bytes to send (0-255). |
| deviceNumber | number | Optional target output device index. If omitted, the currently active/opened device is used. |
PluginListenerHandle
| Prop | Type |
| ------------ | ----------------------------------------- |
| remove | () => Promise<void> |
MidiMessage
Parsed MIDI message emitted by the plugin.
The raw MIDI bytes are always available in data and semantic fields are
populated according to the MIDI message type.
| Prop | Type | Description |
| ---------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------- |
| type | MidiMessageType | Human-friendly message type like NoteOn, ControlChange, PitchBend, etc. |
| data | number[] | Raw MIDI bytes (0-255). |
| channel | number | MIDI channel in range 1..16. |
| note | number | Note number (0-127) for note-based messages. |
| velocity | number | Note velocity (0-127) for note on/off messages. |
| controller | number | Controller number (0-127) for Control Change messages. |
| value | number | Controller value (0-127) for Control Change messages. |
| program | number | Program number (0-127) for Program Change messages. |
| pressure | number | Pressure value (0-127) for aftertouch messages. |
| pitchBend | number | Pitch bend value normalized to -8192..8191. |
Enums
MidiMessageType
| Members | Value |
| ----------------------- | -------------------------------- |
| SystemMessage | 'SystemMessage' |
| NoteOff | 'NoteOff' |
| NoteOn | 'NoteOn' |
| PolyAftertouch | 'PolyAftertouch' |
| ControlChange | 'ControlChange' |
| ProgramChange | 'ProgramChange' |
| ChannelAftertouch | 'ChannelAftertouch' |
| PitchBend | 'PitchBend' |
