Chapter 37. MIDI

MagicQ MQ50, MQ60, MQ70, MQ80, MQ100 Pro 2014 and MQ500 consoles have inbuilt support for MIDI.

The MQ70, MQ80 and MQ500 support both MIDI notes, MIDI timecode and MIDI Show Control. The MQ50 and MQ60 only supports MIDI notes, not MIDI timecode or MIDI Show Control.


If MagicQ PC is connected to a wing or interface, MIDI timecode and beat clock can be received from a USB or virtual device. Receiving MIDI notes and show control this way is not supported, unless you have a rack mount dongle or MagicQ timecode interface connected.


MagicQ can generate and receive MIDI notes commands and can also receive MIDI show control and MIDI beat clock. MIDI is configured in the Setup Window, View Settings view, MIDI/Timecode tab.


37.1. MIDI Notes Receive

To receive MIDI notes, first set the MIDI In Type in the Setup Window. You can choose between “None”, “Any chan” and “Requested Chan”. When set to “Requested Chan” the requested channel is configured in the MIDI IN Chan field.

When using the MagicQ MIDI/SMPTE interface for MIDI only the Timecode options can be set to none and then the last received MIDI command will be shown in the Status Display.


37.1.1. MIDI Autom events

MagicQ supports triggering of automated events via MIDI in the Macro Window, View Autom.

Autom events can be set to trigger Playbacks, Cue Stacks, Cues and other events when MIDI notes are received.


37.1.2. MIDI mapping file

MagicQ supports a custom MIDI mapping file for use instead of the Autom events - this enables greater flexibility and control. If any Autom events are set to respond to MIDI then the MIDI mapping file is ignored.

MagicQ uses the text mapping file miditable.txt stored in the MagicQ folder to convert from MIDI commands to MagicQ serial commands.

An example file miditable.txt is included which maps midi notes to the playbacks PB1 to PB34. Each line in the file specifies a received MIDI command and then the mapping to the serial command in inverted comments “”.

For example, the first to lines in the default file are:



MagicQ checks the received MIDI note byes to see whether they match the values. So if the MIDI message matches 144 36 then it executes the remote command 1t (Test Playback 1). Similarly if it matches 128 36 then executes the remote command 1u (UnTest Playback 1).

Note that Test and Untest are like Activate and Release except they force the Playback level to be 100% and 0% respectively.

Note that for security reasons MagicQ limits the number of playbacks that can be controlled using MIDI and the remote protocols. On MagicQ consoles PB1 to PB34 can be controlled. On MagicQ PC, playbacks PB1 to PB10 can be controlled.

Users may use their own MIDI conversion file “usermidimap.txt” rather than the in-built “miditable.txt”. This avoids user midi tables being overwritten when new software versions are loaded, since only the “miditable.txt” is updated on software updates.

37.1.3. Advanced MIDI mapping

It is possible to match all 3 MIDI message bytes including the velocity. So for example:



This would execute the Test Playback 1 when Note On for note 36 at velocity 100 was received and Untest Playback 1 when Note On for note 36 at velocity 101 was received.

To jump within a Cue Stack instead of testing / untesting a Playback just change the remote command in the inverted comments.

144,36”1,10j” // Jump to Cue Id 10 on Playback 1

It is also possible to map the note or velocity directly into the remote command using the %01 for the note and %02 for the velocity.

So the following command would look for Note On, Note 36 and then use the Velocity to jump to a specific step on the Playback.



The %02 is replaced with the velocity received, so that if MagicQ receives

144 36 50

then it will execute the remote command


Which jumps to Cue Id 50 on Playback 1

For the latest list of remote commands check the section on ChamSys Remote Protocol Commands.

37.1.4. Default miditable.txt file


It is possible to test how MagicQ responds to Midi commands by typing in the Midi message on the keyboard. This is only supported when connected to a MagicQ Wing or Interface. For example to test the command

144,36,127 Note On, note 36, velocity 127

Type testmidi followed by the message on the keyboard with no spaces between the MIDI values.

testmidi 144,36,127

37.2. MIDI Notes Transmit

Midi notes transmit is supported on MagicQ consoles with in built midi interfaces only. Midi notes transmit is not supported on MagicQ PC System’s via 3rd party or virtual interfaces.

To transmit a MIDI Note command, first set the MIDI Out Type in the Setup Window. You can choose between “None”, “Any chan” and “Requested Chan”. When set to “Requested Chan” the requested channel is configured in the MIDI Out Chan field.

When set to “Any chan” MagicQ will send out any MIDI commands specified in the Cue Stack macro field regardless of the channel specified. When set to “Requested Chan” MagicQ will always change the MIDI commands before transmission to be sent on the requested MIDI channel

MIDI commands are entered in decimal in the Macro field of the Cue Stack Window (page right) using the ‘N’ macro command. It is possible to over-ride the channel specified in the MIDI commands using the MIDI Out Channel in the Setup Window.


MIDI note commands are 3 bytes long, consisting of the command (note on / note off) byte, followed by the note and then the velocity

<note on/off> <note> <velocity>

For example, to send a note for middle C set the macro field to the following:

N144,60,127 // Note 60 on velocity 127

N128,60,0 // Note 60 off

MagicQ accepts both ‘N’ and ‘n’ to specify MIDI commands.

37.2.1. Patching MIDI channels

Since MagicQ, a special MIDI head can be patched that transmits MIDI data whenever the value of its channels change.

You can find the personality the PATCH - CHOOSE HEAD window under Generic - mqmidi. MIDI heads contain three channels: Status, Data 1, Data 2, allowing you to send any MIDI command. These channels can be found on encoders A B C on page 5 of the beam window.

The value of the status channel determines which data channels are sent.

No data will be sent if the status channel is lower than 128 or the data channels are larger than 127, in accordance with the MIDI specification. For more information on the values you can transmit, see

MIDI will only be sent when the channels change, therefore setting the status to 0 and back can be done for retransmission. Alternatively you can record a playback with the status channel set to 0 and keep it activated permenantly.

If you need to send multiple messages in one cue, you can patch multiple mqmidi heads; heads with lower head numbers will always be processed first. This way, for example, you can set one to a Note On command and another to a Note Off command.


Sending MIDI messages with more than 2 data bytes is not supported via this method. Consider using the cue stack macro column.

37.3. MIDI problems

The MagicQ MIDI/Timecode interface can be easily tested using the test show This show simply runs a 2 step chase on Playback 1 which sends out MIDI commands corresponding to activation and release of Playback 2.

  • Connect the MIDI interface to MagicQ
  • Connect a MIDI cable from the Out to the In on the Interface
  • Set MIDI In Type to “Any chan”
  • Set MIDI Out Type to “Any chan”
  • Load the midilooptest.shw
  • Raise Playback 1
  • If MIDI is working then Playback 2 should activate and release every 1 second.

If the loopback test works but connection to external equipment is failing, then try to insert active splitters or IN/THRU links into the system.

Note that we have experienced some problems with the signal level transmitted from low cost PC MIDI dongles operating at 3.3V. From July 08 our interfaces have been improved to boost the signal received from these devices.

37.4. MIDI Show Control

MagicQ supports MIDI show control when connected to a ChamSys 2010 MIDI/Timecode Interface.

MagicQ responds to the GO, STOP, RESUME and TIMED GO commands.

The effect of the MIDI show control commands is determined by the MIDI show control type. This is configured in Setup Window, View Settings, MIDI/Timecode, Show Control Type. The options are Normal, Cue Stack 1 and Playback 1. This is useful for integration with (e.g.) Strand consoles which only have 1 Cue Stack and which do not allow the show Control commands to be configured.

When set to Normal then MIDI show control commands trigger Cues in the Cue Store or Cue Stacks in the Cue Stack Store. MSC commands with two parameters (Q number, Q list) will trigger Cue Stacks in the Cue Stack Store. MSC commands with one parameter (Q number) will trigger Cues in the Cue Store.

When set to Cue Stack 1 or Playback 1 then the commands will affect Cue Stack 1 or the Cue Stack stored on Playback 1 respectively.

MagicQ ignores the times in the TIMED GO command and uses the programmed times. GO and RESUME have the same effect.

MagicQ MIDI/Timecode interfaces manufactured prior to October 2009 must be upgraded to latest firmware by ChamSys to support MIDI show control messages. Please contact your dealer/distributor for more info.

37.4.1. MIDI Show Control Command Format

For more details on MIDI Show Control protocols see

MIDI Show Control Commands are of the format

F0 7F <device_ID> 02 <command_format> <command> <data> F7

<device_ID> is 7F for “all call” ID for system wide broadcasts

<command_format> is 01 for “Lighting”

MagicQ supports the following commands in the <command>

  • 01 GO
  • 02 STOP
  • 03 RESUME
  • 04 TIMED_GO

For example:

F0 7F 7F 02 01 01 31 F7 // Go Cue 1 in the Cue Store

F0 7F 7F 02 01 01 32 30 F7 // Go Cue 20 in the Cue Store

F0 7F 7F 02 01 02 31 F7 // Stop Cue 1 in the Cue Store

F0 7F 7F 02 01 01 00 31 30 F7 // Go Cue Stack 10 in the Stack Store

F0 7F 7F 02 01 01 32 00 31 30 F7 // Go Cue 2 on Cue Stack 10 in the Stack Store

It is possible to test how MagicQ responds to Midi Show Control messages by typing in the Midi message on the keyboard. This is only supported when connected to a MagicQ Wing or Interface. For example to test the command

F0 7F 7F 02 01 01 31 F7

Type testsysex followed by the message on the keyboard without the initial F0 and with no spaces between the MIDI values

testsysex 7F7F02010137F7

37.5. MIDI Beat Clock

MIDI Beat Clock support requires a MIDI/SMPTE interface with version 4 firmware. Pro 2014s, MQ60s, MQ70s, MQ80s and MQ500s have inbuilt MIDI Beat Clock support.

When MagicQ receives a MIDI Beat Clock message it toggles the remote trigger input as if the remote trigger input had been pressed or released.

Set Remote Trigger Type to "MIDI Beat" to get a remote trigger every MIDI beat or "MIDI Beat Half" or "MIDI Beat Qtr" to get triggers for half and quarter notes.

Remote input can be used in multiple ways by setting Setup, View Settings, Ports, Remote Trigger Action including "Audio Bump" and "Tap to Time Sel PB".

37.6. MagicQ MIDI/Timecode firmware versions


Fixed SMPTE drop frames


Added MIDI beat clock support


Fixed incorrect timecode config


Fixed MIDI notes input channel filtering


Fixed MIDI timecode generate flags


Fixed LTC decode after LTC generate