MIDI

Stage Traxx has extensive MIDI support build in. You can control external MIDI devices with Stage Traxx and also control Stage Traxx by external midi devices.

Send MIDI

It is possible to send MIDI commands to connected devices. MIDI commands have to be embedded into song lyrics. You can define MIDI commands anywhere in the lyrics. Each MIDI block has to be defined in a single line with no other text in that line.

Stage Traxx can send MIDI commands when specific events or actions occur or at specified timestamps within a song.

  1. To send a command when a song has been loaded into the player, add the following tag to an empty line in your lyrics:

    [midi: ...]
    
  2. To send a command when you press play, add the following tag to an empty line in your lyrics:

    [midi@play: ...]
    

    You can also define midi commands to be sent for all songs when pressing play in the playback settings.

  3. To send a command when you press stop, add the following tag to an empty line in your lyrics:

    [midi@stop: ...]
    

    You can also define midi commands to be sent for all songs when pressing play in the playback settings.

  4. To send a command at a specific timestamp during the running playback, you need to specify the timestamp in the midi tag. The following example will send a command at 1 minute 34 seconds and 100 milliseconds:

    [midi@01:34.10: ...]
    

You can have as many midi tags embedded as you like. You can add multiple tags for the same timestamp or event and all midi commands will be aggregated and sent when the specific event occurs.

Each tag can contain multiple MIDI commands. Each command is separated by a comma or semicolon. Each MIDI command has the following format:

<Prefix><Value>.<Subvalue>@<Channel>

The following table describes the format of all supported MIDI commands:

Description Prefix Example Value Sub-value Channel
Program Change PC PC125@10 PC1.5@1 Program change number 0 - 127 Optional bank number 0 - 127. Will send bank select messages CC0 and CC32 before program change. 1 - 16
Control Change CC CC7.90@2 Controller number 0 - 127 Controller value 0 - 127 1 - 16
Note On / Off N N83@1 N83.0@1 Note number 0 - 127 Optional velocity 0 - 127 with 0 equals note off. If omitted, 127 will be sent. 1 - 16
Song Select SS SS87 Song number 0 - 127 - -
Start START START - - -
Stop STOP STOP - - -
Continue CONTINUE CONTINUE - - -

You always need to specify all values described in the above table except for table cells marked with '-' and optional values.

Let’s take a look at a real world example. When the song loads, we want to send song select with the number 10, change the patch on channel 1 to 30 and switch channel 2 to bank 2 and program 20. When the song starts (at the time 00:00.00), we want to send midi start. Then when the chorus begins at 01:20.00, we want to switch the program on channel 1 to 5. After the chorus at 01:50.00, the program on channel 1 should be switched back to 30. To achieve this, you need to add the following midi tags to your song:

[midi: SS10,PC30@1,PC20.2@2]
[midi@play: CONTINUE]
[midi@stop: STOP]
[midi@01:20.00: PC5@1]
[midi@01:50.00: PC30@1]

Bank Select and Program Changes

With MIDI program change commands you can only address 128 patches. However, most MIDI gear has more patches than can be accessed with a single program change message. To access these additional patches, MIDI uses bank select messages. These are special controller messages that specify which bank of patches should be active on a given channel.

There are two types of bank select messages - Most Significant Byte (MSB) and Least Significant Byte (LSB). These are often referred to as "coarse" and "fine" bank select. The MSB (controller number 0) allows you to select among 128 different banks, and the LSB (controller number 32) provides further refinement within each of those banks.

To select a specific patch, you first send the bank select messages (MSB and LSB) to choose the bank. Then, you send a program change message to select the specific patch within that bank.

Example: Suppose you want to select patch 101 in a bank addressed by MSB 2 and LSB 4 on channel 1. You would send the following 3 MIDI commands:

CC0.2@1,CC32.4@1,PC101@1

Most MIDI gear only uses the LSB part to address banks as that already allows to address up to 16384 patches. The MSB part is always 0. Stage Traxx has a shortcut to address these banks. You only need to add the LSB part to the program change number after a dot.

Example: Suppose you want to select patch 101 in bank addressed by MSB 0 and LSB 4 on channel 1. You only need to send 1 MIDI command:

PC101.4@1

Receive MIDI

You can control Stage Traxx via MIDI commands.

Each song can be triggered by a program change or song select message. You can define the MIDI message to load a song into the player in the Edit Song Details screen.

Most actions in Stage Traxx can also be triggered by MIDI commands. To assign MIDI commands to actions, see the section Remote Control.

Synchronizing MIDI devices

Stage Traxx can send MIDI timecode information or MIDI clock during song playback. You can choose whether Stage Traxx should send timecode or clock information in the sync settings.

Note

As both MIDI timecode and clock produce lots of very time sensitive MIDI messages, it is not possible to send timecode and clock at the same time.

MIDI timecode

MIDI timecode sends the current playback time continuously via MIDI. The clock signal is a 24 hour timestamp with segments for hours, minutes, seconds and frames.

Example: 01:02:03:10 (1 hour, 2 minutes, 3 seconds and 10 frames).

The number of frames per second depends on what option you have selected in the sync settings. It is either 25 or 30 frames per second.

Each song has a setting where you can specify a timecode offset. This is a timestamp that will always be added to the playback time. It can be used to identify certain songs on the receiving device by assigning each song a unique time offset.

Whenever you select a new song or seek to a new position within a song, Stage Traxx will send the current timestamp (including offset).

When playback is running, Stage Traxx will send a continuous timestamp signal via MIDI.

Warning

MIDI Timecode usually runs in realtime. If you change the speed of your songs, the playback time in Stage Traxx will progress slower or faster than real time and this leads to jumps in the timecode signal. It depends on the receiving device if this will cause problems or not.

MIDI clock

You can synchronize timed effects like delay effects via MIDI clock to the speed of the song playing in Stage Traxx. This is done by activating the clock sync option in sync settings.

Each song contains a setting to specify the song speed in beats per minute (bpm).

When playback is running Stage Traxx will sent the clock information with the speed of the currently playing song.