Batch Create Midi NRPR

377 views
Skip to first unread message

Ethan Livers

unread,
Jan 20, 2017, 6:39:38 PM1/20/17
to QLab

I have an Allen & Heath Qu-32. I recently started working on a personal project for next years’ sound person because I won't have enough time to teach everything I know before I leave for college, I'm basically making a Midi show control template for our board so the needed Midi cues can be copied and pasted into the show files in the future. The attached Qlab file has what I've done so far, what I’ve done so far has taken hours, I’ve gotten through 10 velocity changes and I would like to get through 127 so that each possible level is available for use, this isn’t going to work because for each velocity change I have to copy and paste the group, and then change the velocity of the 3rd Midi cue up by one. Is there a way to automate the process with an applescript or something? I’m not quite sure if this makes sense outside my head but it would be really awesome and a massive time saver if I could get some help with this. 

-Ethan Livers 

P.s. it seems like it would be a simple thing to figure out, but I cant figure out how to mute and un-mute mute groups

Qu-32 Midi show control template .qlab4

Rich Walsh

unread,
Jan 20, 2017, 9:14:16 PM1/20/17
to ql...@googlegroups.com
Looking once more with dismay at the truly awful MIDI “documentation”, it looks as if note numbers 80-83 ($50-$53) address the mute groups, just as 64-66 ($40-42) address the stereo channels.

I don’t know about your successor, but personally, presented with a file of a few thousand MIDI Cues to hunt through each time I wanted to do something on the desk I would ignore it completely and figure out how to make the cues I needed on the fly… Oh, and get a proper desk: life’s too short for this sort of nonsense.

I can’t find the fader law lookup table in that document: the mythical “table” it constantly refers to has just one section relating “dBu" to velocity for faders – which is clearly complete and utter twaddle as faders aren’t calibrated in dBu…

Anyway, if you scoped out what you actually want to cover it would be pretty trivial to make a script that would generate the note on / program change / NRPN cues you need for a given function on the fly – try the attached, which has taken a little over an hour to knock up.

I haven’t tested it much, and it’s a bit more sluggish than I’d like. I’ve stuck a couple of properties in to try to speed it up – they won’t be recalculated once the script’s been run once. I’d be inclined to make it into separate scripts and skip the first popup if you use it a lot. The dB lookup table is a bodge made by interpolating from the documentation – I don’t know what your plan was?

You can customise it as you need; I haven’t included your mute/unmute lines when setting -INF/0dB. I’ve used A&H’s value for 0dB (107); you had 98?

Rich
(* ### This is almost completely untested ### *)

set userMIDIChannel to 1 -- What channel is the desk listening to?
set userMinimumTimeBetweenCues to 0.01 -- How long to allow between MIDI Cues when sending NRPN clusters?

-- Declarations

global dialogTitle
set dialogTitle to "Go ahead Allen, make MIDI"

set availableFunctions to {"Scene recall", "Mute", "Unmute", "Set to 0dB", "Set to -INF", "Set level"}

-- Prepare some lists

set monoChannels to {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32"}

set stereoChannels to {"ST1", "ST2", "ST3"}

set muteGroups to {"Mute Group 1", "Mute Group 2", "Mute Group 3", "Mute Group 4"}

-- Ugly dB lookup table… ###FIXME### Feel free to adjust this (Allen & Heath's table appears essentially linear down to -45.0dB)

property dbLookup : ¬
"Velocity Level Source
127 +10.0 Allen & Heath
126 +9.5
125 +9.0
124 +8.5
123 +8.0
122 +7.5
121 +7.0
120 +6.5
119 +6.0
118 +5.5
117 +5.0
116 +4.5
115 +4.0
114 +3.5
113 +3.0
112 +2.5
111 +2.0
110 +1.5
109 +1.0
108 +0.5
107 0dB Allen & Heath
106 -0.5
105 -1.0
104 -1.5
103 -2.0
102 -2.5
101 -3.0
100 -3.5
99 -4.0
98 -4.5
97 -5.0 Allen & Heath
96 -5.5
95 -6.0
94 -6.5
93 -7.0
92 -7.5
91 -8.0
90 -8.5
89 -9.0
88 -9.5
87 -10.0 Allen & Heath
86 -10.5
85 -11.0
84 -11.5
83 -12.0
82 -12.5
81 -13.0
80 -13.5
79 -14.0
78 -14.5
77 -15.0 Allen & Heath
76 -15.5
75 -16.0
74 -16.5
73 -17.0
72 -17.5
71 -18.0
70 -18.5
69 -19.0
68 -19.5
67 -20.0 Allen & Heath
66 -20.5
65 -21.0
64 -21.5
63 -22.0
62 -22.5
61 -23.0
60 -23.5
59 -24.0
58 -24.5
57 -25.0 Allen & Heath
56 -25.5
55 -26.0
54 -26.5
53 -27.0
52 -27.5
51 -28.0
50 -28.5
49 -29.0
48 -29.5
47 -30.0 Allen & Heath
46 -30.5
45 -31.0
44 -31.5
43 -32.0
42 -32.5
41 -33.0
40 -33.5
39 -34.0
38 -34.5
37 -35.0 Allen & Heath
36 -35.5
35 -36.0
34 -36.5
33 -37.0
32 -37.5
31 -38.0
30 -38.5
29 -39.0
28 -39.5
27 -40.0 Allen & Heath
26 -40.5
25 -41.0
24 -41.5
23 -42.0
22 -42.5
21 -43.0
20 -43.5
19 -44.0
18 -44.5
17 -45.0 Allen & Heath
16 -45.5
15 -46.0
14 -46.5
13 -47.0
12 -47.5
11 -47.4
10 -47.3 Ethan Livers
9 -48.7 Ethan Livers
8 -50.0 Ethan Livers
7 -54.8 Ethan Livers
6 -59.5 Ethan Livers
5 -64.2 Ethan Livers
4 -69.0 Ethan Livers
3 -77.1 Ethan Livers
2 -85.3 Ethan Livers
1 -93.4 Ethan Livers
0 -INF Allen & Heath"

property faderLaw : null

if faderLaw is null then
set currentTIDs to AppleScript's text item delimiters
set AppleScript's text item delimiters to tab
set faderLaw to {}
repeat with eachPara in paragraphs 2 thru end of dbLookup
set end of faderLaw to text item 2 of eachPara
end repeat
set AppleScript's text item delimiters to currentTIDs
end if

-- Choose a function

set theFunction to my pickFromList(availableFunctions, "What kind of command would you like to make?")

-- Make the cues

if theFunction is "Scene recall" then


set theScene to my enterANumberWithRangeWithCustomButton("Recall which scene (1-100)?", "", 1, true, 100, true, true, {}, "OK")


my makeMIDI(userMIDIChannel, "Program Change", theScene - 1, null, " | Recall scene: " & theScene)


else if theFunction is "Mute" then


set muteWhat to my pickFromList(monoChannels & stereoChannels & muteGroups, "What would you like to mute?")


if muteWhat is in monoChannels then
set noteNumber to 31 + muteWhat
set theSuffix to " | Mute: channel " & muteWhat
else if muteWhat is in stereoChannels then
set noteNumber to 63 + (last character of muteWhat)
set theSuffix to " | Mute: channel " & muteWhat
else if muteWhat is in muteGroups then
set noteNumber to 79 + (last character of muteWhat)
set theSuffix to " | Mute: " & muteWhat
end if


my makeMIDI(userMIDIChannel, "Note On", noteNumber, 127, theSuffix)


else if theFunction is "Unmute" then


set unmuteWhat to my pickFromList(monoChannels & stereoChannels & muteGroups, "What would you like to unmute?")


if unmuteWhat is in monoChannels then
set noteNumber to 31 + unmuteWhat
set theSuffix to " | Unmute channel: " & unmuteWhat
else if unmuteWhat is in stereoChannels then
set noteNumber to 63 + (last character of unmuteWhat)
set theSuffix to " | Unmute channel: " & unmuteWhat
else if unmuteWhat is in muteGroups then
set noteNumber to 79 + (last character of unmuteWhat)
set theSuffix to " | Unmute: " & unmuteWhat
end if


my makeMIDI(userMIDIChannel, "Note On", noteNumber, 1, theSuffix)


else if theFunction is "Set to 0dB" then


set setWhat to my pickFromList(monoChannels & stereoChannels, "What would you like to set to 0dB?")


if setWhat is in monoChannels then
set theMSB to 31 + setWhat
else if setWhat is in stereoChannels then
set theMSB to 63 + (last character of setWhat)
end if


tell application id "com.figure53.QLab.4"
tell front workspace
make type "Group"
set groupCue to last item of (selected as list)
set q name of groupCue to "Set to 0dB: channel " & setWhat
set mode of groupCue to fire_all


my makeMIDI(userMIDIChannel, "Control Change", 99, theMSB, " | Channel: " & setWhat) -- CC99 to choose the "channel" (not the MIDI channel)


set newCue to last item of (selected as list)
set newCueID to uniqueID of newCue
move cue id newCueID of parent of newCue to end of groupCue


my makeMIDI(userMIDIChannel, "Control Change", 98, 23, " | Set level ") -- CC98 to specify the action (set level)


set newCue to last item of (selected as list)
set newCueID to uniqueID of newCue
move cue id newCueID of parent of newCue to end of groupCue
set pre wait of newCue to userMinimumTimeBetweenCues


my makeMIDI(userMIDIChannel, "Control Change", 6, 107, " | 0dB ") -- CC06 to specify the level ($6B = 107 = 0dB)


set newCue to last item of (selected as list)
set newCueID to uniqueID of newCue
move cue id newCueID of parent of newCue to end of groupCue
set pre wait of newCue to userMinimumTimeBetweenCues * 2


end tell
end tell


else if theFunction is "Set to -INF" then


set setWhat to my pickFromList(monoChannels & stereoChannels, "What would you like to set to -INF?")


if setWhat is in monoChannels then
set theMSB to 31 + setWhat
else if setWhat is in stereoChannels then
set theMSB to 63 + (last character of setWhat)
end if


tell application id "com.figure53.QLab.4"
tell front workspace
make type "Group"
set groupCue to last item of (selected as list)
set q name of groupCue to "Set to -INF: channel " & setWhat
set mode of groupCue to fire_all


my makeMIDI(userMIDIChannel, "Control Change", 99, theMSB, " | Channel: " & setWhat) -- CC99 to choose the "channel" (not the MIDI channel)


set newCue to last item of (selected as list)
set newCueID to uniqueID of newCue
move cue id newCueID of parent of newCue to end of groupCue


my makeMIDI(userMIDIChannel, "Control Change", 98, 23, " | Set level ") -- CC98 to specify the action (set level)


set newCue to last item of (selected as list)
set newCueID to uniqueID of newCue
move cue id newCueID of parent of newCue to end of groupCue
set pre wait of newCue to userMinimumTimeBetweenCues


my makeMIDI(userMIDIChannel, "Control Change", 6, 0, " | -INF ") -- CC06 to specify the level ($00 = 0 = -INF)


set newCue to last item of (selected as list)
set newCueID to uniqueID of newCue
move cue id newCueID of parent of newCue to end of groupCue
set pre wait of newCue to userMinimumTimeBetweenCues * 2


end tell
end tell


else if theFunction is "Set level" then


set setWhat to my pickFromList(monoChannels & stereoChannels, "What would you like to set the level for?")


if setWhat is in monoChannels then
set theMSB to 31 + setWhat
else if setWhat is in stereoChannels then
set theMSB to 63 + (last character of setWhat)
end if


set whatLevel to my pickFromList(faderLaw, "To what level?")


repeat with i from 1 to count faderLaw
if whatLevel is item i of faderLaw then
set dataValue to 128 - i
exit repeat
end if
end repeat


tell application id "com.figure53.QLab.4"
tell front workspace
make type "Group"
set groupCue to last item of (selected as list)
set q name of groupCue to "Set to " & whatLevel & ": channel " & setWhat
set mode of groupCue to fire_all


my makeMIDI(userMIDIChannel, "Control Change", 99, theMSB, " | Channel: " & setWhat) -- CC99 to choose the "channel" (not the MIDI channel)


set newCue to last item of (selected as list)
set newCueID to uniqueID of newCue
move cue id newCueID of parent of newCue to end of groupCue


my makeMIDI(userMIDIChannel, "Control Change", 98, 23, " | Set level ") -- CC98 to specify the action (set level)


set newCue to last item of (selected as list)
set newCueID to uniqueID of newCue
move cue id newCueID of parent of newCue to end of groupCue
set pre wait of newCue to userMinimumTimeBetweenCues


my makeMIDI(userMIDIChannel, "Control Change", 6, dataValue, " | " & whatLevel) -- CC06 to specify the level ($00 = 0 = -INF)


set newCue to last item of (selected as list)
set newCueID to uniqueID of newCue
move cue id newCueID of parent of newCue to end of groupCue
set pre wait of newCue to userMinimumTimeBetweenCues * 2


end tell
end tell


end if

-- Subroutines

(* === INPUT === *)

on pickFromList(theChoice, thePrompt) -- [Shared subroutine]
tell application id "com.figure53.QLab.4"
choose from list theChoice with prompt thePrompt with title dialogTitle default items item 1 of theChoice
if result is not false then
return item 1 of result
else
error number -128
end if
end tell
end pickFromList

on enterANumberWithRangeWithCustomButton(thePrompt, defaultAnswer, ¬
lowRange, acceptEqualsLowRange, highRange, acceptEqualsHighRange, integerOnly, customButton, defaultButton) -- [Shared subroutine]
tell application id "com.figure53.QLab.4"
set theQuestion to ""
repeat until theQuestion is not ""
set {theQuestion, theButton} to {text returned, button returned} of (display dialog thePrompt with title dialogTitle ¬
default answer defaultAnswer buttons (customButton as list) & {"Cancel", "OK"} default button defaultButton cancel button "Cancel")
if theButton is customButton then
set theAnswer to theButton
exit repeat
end if
try
if integerOnly is true then
set theAnswer to theQuestion as integer -- Detects non-numeric strings
if theAnswer as text is not theQuestion then -- Detects non-integer input
set theQuestion to ""
end if
else
set theAnswer to theQuestion as number -- Detects non-numeric strings
end if
if lowRange is not false then
if acceptEqualsLowRange is true then
if theAnswer < lowRange then
set theQuestion to ""
end if
else
if theAnswerlowRange then
set theQuestion to ""
end if
end if
end if
if highRange is not false then
if acceptEqualsHighRange is true then
if theAnswer > highRange then
set theQuestion to ""
end if
else
if theAnswerhighRange then
set theQuestion to ""
end if
end if
end if
on error
set theQuestion to ""
end try
end repeat
return theAnswer
end tell
end enterANumberWithRangeWithCustomButton

(* === MAKING === *)

on makeMIDI(theChannel, theCommand, byteOne, byteTwo, customSuffix) -- Not thoroughly tested!
tell application id "com.figure53.QLab.4"
tell front workspace
make type "MIDI"
set newCue to last item of (selected as list)
set channel of newCue to theChannel
set byte one of newCue to byteOne
set nameString to "MIDI Channel " & theChannel & " | " & theCommand & " | " & byteOne
if theCommand is "Note On" then
set command of newCue to note_on
set byte two of newCue to byteTwo
set nameString to nameString & " @ " & byteTwo
else if theCommand is "Control Change" then
set command of newCue to control_change
set byte two of newCue to byteTwo
set nameString to nameString & " @ " & byteTwo
else if theCommand is "Program Change" then
set command of newCue to program_change
end if
set q name of newCue to nameString & customSuffix
end tell
end tell
end makeMIDI

Go ahead Allen, make MIDI.qlab4

Tom Quinn

unread,
Jan 20, 2017, 9:34:25 PM1/20/17
to ql...@googlegroups.com
Just curious, what is your "proper desk"?
I mean... Digico can't even spell MIDI, that I'm aware of... And that is the console I see cruising around a ton in our world. At least a&h has it available. I'd imagine a large chunk of users use QLab to automate Behringer consoles as well, but I don't imagine that's what you're referring too is it?

I am genuinely curious...

 I do appreciate all of this as I often look to automate both of the above. Even if I have to sort through a ton of cues, I don't have to sit with the desk and figure them out again.

Thanks!

------------------------------------
Tom Quinn
--
--
Change your preferences or unsubscribe here:
http://groups.google.com/group/qlab
 
Follow Figure 53 on Twitter: http://twitter.com/Figure53
---
You received this message because you are subscribed to the Google Groups "QLab" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qlab+uns...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/qlab/435E6540-7E62-4CE0-B8E1-CCEC8572E04A%40mac.com.
For more options, visit https://groups.google.com/d/optout.
<Go ahead Allen, make MIDI.qlab4>

--
--
Change your preferences or unsubscribe here:
http://groups.google.com/group/qlab
 
Follow Figure 53 on Twitter: http://twitter.com/Figure53
---
You received this message because you are subscribed to the Google Groups "QLab" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qlab+uns...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/qlab/435E6540-7E62-4CE0-B8E1-CCEC8572E04A%40mac.com.
For more options, visit https://groups.google.com/d/optout.

Andy James

unread,
Jan 21, 2017, 8:27:01 AM1/21/17
to QLab
Sorry, this is not a helpful post to your issue, but I felt I should point out that Digico desks are very good at midi!


Andy

Tom Quinn

unread,
Jan 21, 2017, 10:01:05 AM1/21/17
to ql...@googlegroups.com
That's cool! I stand corrected then, must be the flagship desks that do that.
I can't find anything MIDI on the...I guess... Budget model s21. (For that matter, it's got a network port that seems to not have a function either)

Thank you!


------------------------------------
Tom Quinn

Rich Walsh

unread,
Jan 21, 2017, 2:48:40 PM1/21/17
to ql...@googlegroups.com
OK, to answer the desk question and also address where I think DiGiCo falls down on MIDI – having bought a D1 Live in 2008 and seen the 2 Cadacs at the NT become SD7s (with T software)…

On 95% of my shows I would always prefer a DiGiCo – and use that to manage outboard, keeping QLab and sound effects on a separate GO button. In my experience of mixing, it felt natural that VCA assignment recalls were done on a button on the desk and sound effects weren’t. I would defer to the operator’s wishes of course. If it is a simple show, I’d let QLab recall scenes on the desk, and manage the outboard. I believe the T software does what SAM used to do: track outboard so that if you jump in mid-show without firing all the program changes in order it will work out where you should be and get you there.

What the DiGiCo can not do is automate anything with MIDI – other than recalling scenes (snapshots), in a frustratingly perverse way of using 4 CCs rather than program changes. (I think; I’d need to check to be 100% sure.) What’s more, because you can insert a scene “1.5” it gets unnecessarily hard to correlate MIDI command with scene number. You work round it, but it’s not perfect.

On the other 5% of shows I would always go for a Yamaha desk because the only reason not to go for a DiGiCo (other than cost) is if you need to automate on a more granular level than just scene recall. Most of the time a big enough desk can get round it, but if you’re switching in and out of songs you may need to automate the reverb sends without having to recall entire scenes.

So, if you want to do MIDI get a Yamaha. If you don’t have a Yamaha, don’t try to automate it beyond scene recall. NRPN is a rubbish way of presenting parameters for adjustment as you can’t realistically adjust 2 things at the same time without running out of bandwidth.

Of course, if I have no choice of desk I do the best with what I get – and if I were looking to buy a new desk I would research the current state of the market before making a judgement based on nuggets cleaned from lists like this and the odd review, rather than any active attempt to stay on top of what everyone is making and what it can do…

So if my strong opinions are wrong or ill-informed then I’m sorry for that.

I would never buy Behringer.

Back to QLab now maybe?

Rich

Ethan Livers

unread,
Jan 21, 2017, 2:53:09 PM1/21/17
to QLab
Woah!! You have just saved me hours upon hours of work!!! Probably days actually! I guess its time for me to learn how to apple script...  I appreciate you so much!! Thank you!! 
The only reason we got this desk is because thats the only one the school system would support if it ever breaks or we want some additional hardware like a dSnake. We can get it pretty easy. We borrowed an X32 last year for one production and that was a BREEZE in comparison to this... OSC is so much more.... english..
The reason I had 98 as my value is because when I put in 107 the slider didn't actually go to 0 it went to +2.6, it still does that but I can fix all that. The NRPR cue needs the last cue to work, so how would I put that in there?

Tom Quinn

unread,
Jan 21, 2017, 5:16:27 PM1/21/17
to ql...@googlegroups.com
I appreciate this insight, thank you!

------------------------------------
Tom Quinn
T...@battle4heaven.com
877-793-5175
www.battle4heaven.com
--
--
Change your preferences or unsubscribe here:
http://groups.google.com/group/qlab
 
Follow Figure 53 on Twitter: http://twitter.com/Figure53
---
You received this message because you are subscribed to the Google Groups "QLab" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qlab+uns...@googlegroups.com.

Rich Walsh

unread,
Jan 21, 2017, 7:03:01 PM1/21/17
to ql...@googlegroups.com
On 21 Jan 2017, at 19:53, Ethan Livers <ethanp...@gmail.com> wrote:
>
> The reason I had 98 as my value is because when I put in 107 the slider didn't actually go to 0 it went to +2.6, it still does that but I can fix all that.

Why am I not surprised that the manual is wrong? I suggest you rather tediously try each value in turn to see what actually happens and then update the lookup table – and the one place where 0dB is referenced without lookup. I hope I’ve made it obvious how to do that…

> The NRPR cue needs the last cue to work, so how would I put that in there?

Sorry, I’d seen “Note on” in the cue name and not actually looked at the cues in detail: other discussions on the list have led me to understand only 3 CCs are needed for NRPN on these desks… New – slightly streamlined – version attached. It also allows you to select more than one channel and set a global MIDI patch – plus it’s a bit faster (although wait for it to finish as it may looks like it gets stuck). You can generate a custom level message for all 35 channels in just a few seconds.

Do you also need the 9N CH 00 after each note on to get the mute/unmute to work as the manual would lead you to believe (top of p4)? 9N CH 00 is NOT a “note off” (8N nn vv) but a “note on” with velocity 0 which is interpreted as a note off to maintain running status, but is not strictly a “note off” message…

You’d think a note on would unmute a channel and a note off would mute it, not a note on below velocity 40; maybe that’s too obvious?

Would this be useful to anyone else, ie: should I spin up a universal version to go in my template?

Rich

Go ahead Allen, make MIDI v2.qlab4

Ethan Livers

unread,
Jan 21, 2017, 9:22:50 PM1/21/17
to QLab

I have yet to look at your new script because I’ve been working on this file but thank you for doing that! You da bomb.com!!

I quickly figured out that A&H has provided very wrong midi number information and its not even linier so I went through every velocity number and recorded what the dB level is for each and changed that on the table in the apple script. The other thing I found completely ridiculous is that there isn’t a way to do +10, the closest it gets is +9.8. In the Attached file I have each velocity change for channel one because the file was too large to upload if I had each channel. I only had changed channel one anyways once I got past velocity 11 because it was simply too tedious to change the velocity for all 35 channels

In the AppleScript I also tried to change the way it names the cues so it only puts the action name and the channel number. Not sure if I did it correctly.

And, yes, the manual would leave me to believe that you would need two notes to complete a mute\unmute action but alas the way I have it works perfectly.

Qu-32 midi show small.qlab4

Rich Walsh

unread,
Jan 22, 2017, 9:16:31 PM1/22/17
to ql...@googlegroups.com
v3 attached, with updated lookup table from Ethan’s figures – and userSimpleCueNames parameter to override my preferred verbose system of naming MIDI Cues.

You’d had a good stab at changing the naming, but missed a couple – so I’ve built in a toggle.

It does pause a lot on my system: I don’t know why. I’ll probably file a bug report at some point as I think it’s QLab’s code not mine doing it.

Rich
Go ahead Allen, make MIDI v3.qlab4

Ethan Livers

unread,
Mar 14, 2017, 5:47:26 PM3/14/17
to QLab

Getting back into midi control for the board because we finally bought the license. Can anyone figure out what the midi control would be for the mix busses and the levels for it and what channels are on in it.

Rich Walsh

unread,
Mar 14, 2017, 6:42:05 PM3/14/17
to ql...@googlegroups.com
Well, yes, presumably Allen & Heath could figure it out – and given you’ve just paid them for something it wouldn’t be asking a lot to contact them and say “How does this work then as the documentation isn’t clear to me?”…

From the same table on p2 of their MIDI documentation that gave us 64-66 ($40-42) to address the stereo channels, 96-102 ($60-66) appear to address “Mix 1 to 10” – although there are only 7 numbers covered by $60-66, so that doesn’t make a lot of sense…

I don’t know what you mean by “the mix busses”, but the information seems to be there. For example, I believe the NRPN to set Main LR to 0 would be:

  • CC99 @ 103 ($67)
  • CC98 @ 23
  • CC06 @ 98
  • CC38 @ 7

From p4 I think I have this to assign ST1 to Main LR:

  • CC99 @ 64 (for example)
  • CC98 @ 24 ($18)
  • CC06 @ 1 (or @ 0 for unassign)
  • CC38 @ 7

To assign ST1 to a mix:

  • CC99 @ 64 (for example)
  • CC98 @ 85 ($15)
  • CC06 @ 1 (or @ 0 for unassign)
  • CC38 @
    • 0-10 ($00-0A) for Mix 1-10
    • 11 ($0B) for Main LR (?)
    • 16-19 ($10-13) for FX send 1-4
    • 8 ($08) for Grp 1-2 – although this contradicts the info for assigning to Mix 8 – so you REALLY need to contact them and ask for your money’s worth!
    • 9 ($09) for Grp 3-4 – contradiction
    • 10 ($0A) for Grp 5-6 – contradiction
    • 11 ($0B) for Grp 7-8 – contradiction
    • 12 ($0C) for Mtx 1-2
    • 13 ($0D) for Mtx 3-4

So there at least 5 mistakes in these 2 sections of the documentation…

Once you figure the commands out it wouldn’t take long to expand the script to include them.

Rich

Patrick Andrews

unread,
Mar 14, 2017, 11:34:46 PM3/14/17
to QLab
"96-102 ($60-66) appear to address “Mix 1 to 10” – although there are only 7 numbers covered by $60-66, so that doesn’t make a lot of sense…"

If you could see the board it would make more sense. Mixes 1-4 are mono mixes, the rest are stereo pairs (5-6, 7-8, 9-10). So in reality it is only 7 mixes. Maybe their documentation isn't as screwy as it first appears??

Just thought I would point that out, that's all I have to contribute to this ;)

Rich Walsh

unread,
Mar 15, 2017, 4:46:27 AM3/15/17
to ql...@googlegroups.com
First, my recurring plea: _please_ quote something about you are replying to. I don’t keep every email ever sent on this list on every device so I have to waste time trying to decode what’s going on – and one day I may just decide I can’t be bothered.

Given your useful information I think there is just a typo in the “Mix Assign” section on p4 – which is apparent when comparing with, say “Send Level” on p5. Therefore, to assign ST1 to a mix:

    • CC99 @ 64 (for example)
    • CC98 @ 85 ($15)
    • CC06 @ 1 (or @ 0 for unassign)
    • CC38 @
      • 0-3 ($00-03) for Mix 1-4
      • 4-6 ($04-06) for Mix 5+6, 7+8, 9+10
      • 7 ($07) for Main LR (?)
      • 8 ($08) for Grp 1-2
      • 9 ($09) for Grp 3-4
      • 10 ($0A) for Grp 5-6
      • 11 ($0B) for Grp 7-8
      • 12 ($0C) for Mtx 1-2
      • 13 ($0D) for Mtx 3-4
      • 16-19 ($10-13) for FX send 1-4

      Rich

      Ethan Livers

      unread,
      Apr 7, 2017, 2:10:06 PM4/7/17
      to QLab
      • CC99 @ 64 (for example)
      • CC98 @ 85 ($15)
      • CC06 @ 1 (or @ 0 for unassign)
      • CC38 @
        • 0-3 ($00-03) for Mix 1-4
        • 4-6 ($04-06) for Mix 5+6, 7+8, 9+10 
      I did this but nothing happened on the board. I would think it would be as easy as changing the 7 in this
      "From p4 I think I have this to assign ST1 to Main LR:

      • CC99 @ 64 (for example)
      • CC98 @ 24 ($18)
      • CC06 @ 1 (or @ 0 for unassign)
      • CC38 @ 7
      To just which mix i want so it would just be a simple change to 
        • CC99 @ 64 (for example)
        • CC98 @ 24 ($18)
        • CC06 @ 1 (or @ 0 for unassign)
        • CC38 @ 4
        but alas, that doesn't happen.

        I contacted A&H's distributer (http://www.americanmusicandsound.com/) and they just provided me with the UKs support tams email and they wont be able to get back to me until Monday so that kinda sucks.

        Rich Walsh

        unread,
        Apr 7, 2017, 3:39:53 PM4/7/17
        to ql...@googlegroups.com
        Well, no: the command for LR Assign uses CC98 @ 24 ($18) while that for Mix Assign uses CC98 @ 85 ($55 – made my own typo below!). Changing CC38 to anything other than 7 when using CC98 @ 24 is not going to work.

        However, the first bit should work if the manual’s accurate…

        Rich

        --
        Contact support anytime: sup...@figure53.com

        Follow Figure 53 on Twitter: http://twitter.com/Figure53
        ---
        You received this message because you are subscribed to the Google Groups "QLab" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to qlab+uns...@googlegroups.com.
        Reply all
        Reply to author
        Forward
        0 new messages