SELECTIVE MIDI OVERRIDE

[Updated for QLab 4.1 13 JUL 17]

This workspace allows searching of data not included in the normal QLab3 find command. The example is intended to be used when QLab is controlling external equipment, LX board, mixers, external effects, etc and you want to stop sending MIDI to just one of these devices. For instance, you might want all your MIDI controlled audio equipment to continue working, but stop sending cues to the LX board.

If you want to stop all external MIDI data from QLab (or to QLab) there is a handy window, which a lot of people don’t seem to be aware of, in the windows menu. It’s called MIDI/OSC Override, and for Master control, it’s just what’s needed.

In QLab 4 it looks like this:

Overide window

In QLab 3 It looks like this:

MIDIOSC override

But for our purposes, what we need to do is find all cues that are sending to a specific device on a specific MIDI channel, and disarm them, when, for example,  we want to disable MIDI going to the lighting board, and arm them again when we want to resume control.

Here it is in action:

 

 

How it Works:

A cue containing a variation of the following script is triggered by a hot key.

tell application id “com.figure53.qlab.3” to tell front workspace
–set data to find below here———————-
set themessagetype to voice –types are voice/msc/sysex
set thepatch to 3
set thechannel to 15 — for voice MIDI only
set thecommand to note_on –for voice MIDI only valid commands are note_on/note_off/program_change/control_change/key_pressure/channel_pressure/pitch_bend
set theDeviceID to 17 — for MSConly
set foundCues to every cue whose (message type is themessagetype and patch is thepatch and command is thecommand and channel is thechannel)
–set data to find above here———————-
set foundCuesRef to a reference to foundCues
repeat with eachCue in foundCuesRef
set armed of eachCue to false
end repeat
end tell

The first thing to note is that the variables are set inside the tell block. It is often better for these to go above the tell block, however in this case they can’t. This is because in QLab 3  properties such as message type and command are set to constants, and these constants are only recognised within the QLab tell application block.

The variables are set to the required values, and then all the cues that match the values required by the set found cues statement are found. In this example we are looking for  note on MIDI cues (whose message type is voice), being sent to patch 3, on MIDI channel 15. Some of the variables listed are only required for certain types of cues. The variables that are used  are those found in the  statement that begins set found cues to……..

In the script example above we are looking for voice cues, so the DeviceID is not relevant, and is not included in the set found cues statement . Here is a script where we are looking for MSC cues. Here the Midi channel and the command are not relevant, but the DeviceID is and this is reflected in the statement that begins, set found cues to…

tell application id “com.figure53.qlab.3” to tell front workspace
–set data to find below here———————-
set themessagetype to msc –types are voice/msc/sysex
set thepatch to 2
set thechannel to 2 — for voice MIDI only
set thecommand to program_change –for voice MIDI only valid commands are note_on/note_off/program_change/control_change/key_pressure/?hannel_pressure/pitch_bend
set theDeviceID to 17 — for MSConly
set foundCues to every cue whose (message type is themessagetype and patch is thepatch and deviceID is theDeviceID)
—set data to find above here———————-
set foundCuesRef to a reference to foundCues
repeat with eachCue in foundCuesRef
set armed of eachCue to false
end repeat
end tell

Every found cue has its armed property set. In the   DISARM scripts above  the armed of each cue is set to false. In a script that ARMs found cues, the armed of each cue would be set to true.

You can download the example workspace here

MenuGraphic

Cover Image ©Mic Pool 2014 All rights reserved.