MIDI
The MIDI action sends raw MIDI channel voice messages to a selected Core MIDI destination, letting you trigger notes, control data, program changes, and pitch bends from voice workflows without manual sequencing. Each command resolves templates and clamps values to MIDI-safe ranges before dispatching bytes, with channel-aware status bytes and automatic note-off handling for timed Note On commands, giving you deterministic output behavior even with imperfect input.
Required Parameters
destinationIdordestinationName(MIDI destination selection; required for output to actually send)messageType(noteOn,noteOff,controlChange,programChange,pitchBend)channel(required by all MIDI commands, converted to 0-based internal channel)
Commands
Note On
- Required inputs:
noteNumber,velocity, optionalnoteLengthMs - Constraints / ranges:
channelclamped to1...16;noteNumberclamped to0...127;velocityclamped to0...127;noteLengthMsclamped to0...60000ms - Supported targets/options: any resolved MIDI destination from Core MIDI (
destinationIdpreferred, thendestinationNamefallback); non-empty duration sends a paired auto Note Off after the specified delay - Unsupported combinations: if no destination resolves, the action sends nothing silently; if
noteLengthMsis invalid/non-numeric, it falls back to0(keeps note on until explicit Note Off)
Note Off
- Required inputs:
noteNumber,velocity - Constraints / ranges:
channelclamped to1...16;noteNumberclamped to0...127;velocityclamped to0...127 - Supported targets/options: same destination resolution as all commands (
destinationId/destinationName) - Unsupported combinations: velocity and note are required for this command path; other numeric fields are ignored and not sent
Control Change
- Required inputs:
controlNumber,controlValue - Constraints / ranges:
channelclamped to1...16;controlNumberclamped to0...127;controlValueclamped to0...127 - Supported targets/options: same destination resolution as all commands; sends status byte
0xB0plus controller and value - Unsupported combinations: no multi-byte/range checks beyond 7-bit MIDI limits, and other command fields are not sent
Program Change
- Required inputs:
programNumber - Constraints / ranges:
channelclamped to1...16;programNumberclamped to0...127 - Supported targets/options: same destination resolution as all commands; sends compact 2-byte Program Change message
- Unsupported combinations: running control/velocity/note values are ignored and cannot be sent in this command
Pitch Bend
- Required inputs:
pitchBend - Constraints / ranges:
channelclamped to1...16;pitchBendclamped to0...16383and encoded as 14-bit LSB/MSB - Supported targets/options: same destination resolution as all commands; sends standard Pitch Bend status
0xE0form - Unsupported combinations: non-14-bit values are clamped, and other message fields are ignored