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

  • destinationId or destinationName (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, optional noteLengthMs
  • Constraints / ranges: channel clamped to 1...16; noteNumber clamped to 0...127; velocity clamped to 0...127; noteLengthMs clamped to 0...60000 ms
  • Supported targets/options: any resolved MIDI destination from Core MIDI (destinationId preferred, then destinationName fallback); 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 noteLengthMs is invalid/non-numeric, it falls back to 0 (keeps note on until explicit Note Off)

Note Off

  • Required inputs: noteNumber, velocity
  • Constraints / ranges: channel clamped to 1...16; noteNumber clamped to 0...127; velocity clamped to 0...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: channel clamped to 1...16; controlNumber clamped to 0...127; controlValue clamped to 0...127
  • Supported targets/options: same destination resolution as all commands; sends status byte 0xB0 plus 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: channel clamped to 1...16; programNumber clamped to 0...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: channel clamped to 1...16; pitchBend clamped to 0...16383 and encoded as 14-bit LSB/MSB
  • Supported targets/options: same destination resolution as all commands; sends standard Pitch Bend status 0xE0 form
  • Unsupported combinations: non-14-bit values are clamped, and other message fields are ignored

results matching ""

    No results matching ""