MIDI
Stage Traxx provides comprehensive MIDI support, allowing you to control external MIDI devices and be controlled by them. You can embed MIDI commands directly into song lyrics for precise timing control, trigger songs via incoming MIDI messages, and synchronize external devices using MIDI Timecode or MIDI Clock.
Sending MIDI Commands
MIDI commands can be embedded in your song lyrics to trigger external devices at specific moments during playback.
Info
Each MIDI tag must be placed on its own dedicated line. Do not mix MIDI tags with lyrics text or other tags on the same line.
Tip
Network clients send embedded MIDI commands to connected MIDI gear from both lyrics received from the host and local lyrics. This allows you to add custom MIDI commands to songs selected by a host without modifying the host's song files.
Trigger Types
Commands are placed in square brackets with different prefixes to control when they execute:
- Song Load
[midi: ...]: Executes when the song loads. - Play Action
[midi@play: ...]: Executes when the play action is triggered. - Stop Action
[midi@stop: ...]: Executes when the stop action is triggered. - Timestamp
[midi@01:34.50: ...]: Executes at a specific playback time. Timestamps use the formatMM:SSorMM:SS.xxx. Minutes and seconds must always be two digits (e.g.,01:05not1:5). The fractional seconds are optional and can be one to three digits, where.5equals 500ms and.55equals 550ms.
Command Syntax
Commands follow the format: <Prefix><Value>.<Subvalue>@<Channel>
The channel is specified using @ followed by the channel number (1–16). System messages do not use a channel.
Note
Stage Traxx uses value ranges of 0–127 for program numbers, controller values, notes, and velocities. Some devices use 1–128 in their documentation. If your device uses 1–128, subtract 1 from the values shown in your device's manual.
Multiple commands can be chained in a single tag, separated by a comma and optional whitespace. Commands are sent in the order they are written:
[midi@play: PC5@1, CC7.100@1,CC10.64@1]
Using Macros
A MIDI macro is a named command sequence you define once in Settings > MIDI Macros and then reference with a $ prefix followed by the macro code. Macros can be used anywhere a MIDI command is accepted, and can be mixed freely with regular commands:
[midi: $FX-OFF]
[midi@play: PC1@5, $PATCH_1]
[midi@stop: $FX-OFF, CC123.0@1]
Macro references are expanded to their commands immediately before sending, so a change to a macro takes effect everywhere it is used without editing any songs.
Note
Macros are also expanded before commands are sent to network clients, so clients don't need to have the same macros defined.
Program Change
Sends a MIDI program change message to switch patches or presets on external devices.
Format: PC<program>@<channel> or PC<program>.<bank>@<channel>
<program>: Program number (0–127)<bank>: Optional bank number (0–127)<channel>: MIDI channel (1–16)
Example
[midi: PC5@1]— Switch to program 5 on channel 1[midi@play: PC0@10]— Switch to program 0 on channel 10 when play is triggered
Bank Select:
Most MIDI devices use bank select messages (CC0 for MSB, CC32 for LSB) before program changes to access patches beyond the standard 128.
When you specify a bank number, Stage Traxx sends a bank select LSB (CC32) before the program change. For example, PC101.4@1 sends CC32 with value 4, followed by program change 101 on channel 1.
If your device requires a custom MSB value, send it explicitly using a Control Change command:
[midi: CC0.2@1, PC101.4@1]
This sends CC0 (bank select MSB) with value 2, then CC32 (bank select LSB) with value 4, then program change 101.
Control Change
Sends a MIDI control change (CC) message to adjust parameters like volume, pan, or expression on external devices.
Format: CC<controller>.<value>@<channel>
<controller>: Controller number (0–127)<value>: Controller value (0–127)<channel>: MIDI channel (1–16)
Example
[midi: CC7.100@1]— Set volume (CC7) to 100 on channel 1[midi: CC10.64@2]— Set pan (CC10) to center (64) on channel 2[midi@stop: CC123.0@1]— Send all notes off (CC123) on channel 1 when stop is triggered
Note On/Off
Sends a MIDI note message to trigger sounds on external devices.
Format: N<note>@<channel> or N<note>.<velocity>@<channel>
<note>: Note number (0–127, where 60 is middle C)<velocity>: Optional velocity (0–127). A velocity of 0 sends a Note Off message; any other value sends a Note On message. If omitted, defaults to 127.<channel>: MIDI channel (1–16)
Example
[midi@play: N60@1]— Play middle C on channel 1 when play is triggered[midi@stop: N60.0@1]— Send Note Off for middle C on channel 1 when stop is triggered[midi@00:05.00: N72.127@1]— Play C5 at full velocity 5 seconds into the song
Sysex
Sends a MIDI System Exclusive message for device-specific commands that aren't covered by standard MIDI messages.
Format: SX <bytes> or SX<bytes>
<bytes>: Hex-coded bytes of the message, optionally separated by spaces
The leading F0 and trailing F7 bytes that frame a sysex message should be included in the byte sequence.
Example
[midi: SX F0 43 10 4C 00 00 7F F7]— Bytes separated by spaces[midi: SXF043104C00007FF7]— Bytes without spaces[midi@play: SX F0 7E 7F 09 01 F7]— Send GM System On when play is triggered
Song Select
Sends a MIDI song select message to select a song on external sequencers or drum machines.
Format: SS<song>
<song>: Song number (0–127)
This is a system message and does not use a channel.
Example
[midi: SS12] — Select song 12 when the song loads
Start, Stop, Continue
Sends MIDI system real-time messages to control transport on external sequencers and drum machines.
Format: START, STOP, or CONTINUE
These are system messages and do not use a channel.
Example
[midi@play: START]— Send MIDI Start when play is triggered[midi@stop: STOP]— Send MIDI Stop when stop is triggered[midi@play: CONTINUE]— Send MIDI Continue to resume external playback
Receiving MIDI
Songs can be triggered via incoming program change or song select messages. Configure this in the Edit Song Details screen for each song. Most Stage Traxx actions can be mapped to incoming MIDI commands through the Remote Control dialog.
MIDI Learn
Every MIDI command field in Stage Traxx has a Learn button that captures commands from a connected device instead of typing them by hand.
Most fields capture a single command and then stop listening. When defining a MIDI macro, learn mode instead keeps listening and appends each incoming command, letting you record a complete sequence in one pass — for example by stepping through the patch and controller changes on your device in the order you want them sent.
Device Synchronization
Stage Traxx can synchronize external devices using two mutually exclusive sync modes.
MIDI Timecode
Sends a continuous 24-hour timestamp in the format HH:MM:SS:FF. Supports 25 or 30 frames per second with optional per-song offset.
Note
Speed changes during playback cause timecode jumps. If you need smooth synchronization during speed changes, use MIDI Clock instead.
MIDI Clock
Synchronizes external devices to the song tempo. Each song requires a BPM setting for clock sync to work. This is useful for synchronizing delay effects, arpeggiators, and other time-dependent features on external devices.
When MIDI Clock is enabled, Stage Traxx automatically sends a START message when playback begins and a STOP message when playback ends, so connected devices start and stop in sync without any additional setup.
Warning
Do not send START or STOP commands yourself while MIDI Clock is enabled. Stage Traxx already sends them, and a duplicate message can double-trigger your device. Remove any [midi@play: START] or [midi@stop: STOP] tags you added for this purpose in earlier versions — and check the global Play, Stop, and Playback Ends commands in MIDI settings too, since a START or STOP set up there applies to every song and is easy to overlook.