OSC Control of X32 / M32

2,070 views
Skip to first unread message

Drew Schmidt

unread,
Aug 8, 2019, 12:07:27 PM8/8/19
to QLab
Hi Everyone

Anyone with a lot of experience controlling a Behringer X32 or Midas M32 with OSC, specifically using OSC Fade cues? Here's the deal. 

  • We have 4 different DCAs that we're turning up / down using Cue Cart buttons (so 8 buttons, up / down for each one)
  • The OSC Cue looks like /DCA/5/fader #v#     - With the values going from 0 to 0.75 (going up) or 0.75 to 0 (going down)
  • I'd like to be able to make a button for one of the DCAs also take down the other three, which might be up or might be down, don't know what might happen live. 
  • The problem: If one of the DCAs is all the way down, its fade down OSC Cue from QLab will first make the fader snap up from 0 to 0.75, then fade back down to 0.75
I'm going to avoid asking particular "how-to's" in order to allow for creative solutions; so here's my vague question ... How can I fade down faders without them first snapping all the way up? 


(And no, the X32 and M32 doesn't have an internal fading / scene system)

Thanks!

-Drew

Corbin White

unread,
Aug 8, 2019, 12:15:01 PM8/8/19
to ql...@googlegroups.com
Not familiar with using OSC with an X32, but if i were coding something like this, i would first get the position of the fader, then do the fade.
--
Contact support anytime: sup...@figure53.com
Follow Figure 53 on Twitter: https://twitter.com/Figure53
User Group Code of Conduct: https://figure53.com/help/code-of-conduct/
---
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+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/qlab/afd3f678-6a0b-4111-8d7e-33fd3f8a73d6%40googlegroups.com.

Salvador Garza

unread,
Aug 8, 2019, 2:36:35 PM8/8/19
to QLab
You'll need to know the current position/value of the fader and for fade downs you'll need to invert the fade line/curve, turn on fade over time 

Drew Schmidt

unread,
Aug 8, 2019, 2:40:15 PM8/8/19
to QLab
Yes. We need to know the current position. That's not a known number at any given moment therefore we can't simply hard-code it. 

Thoughts would be polling the OSC with a reply back to QLab, but then we need to interpret JSON strings etc, which doesn't seem terribly elegant. Community, can you think of a slick solution? 

Drew Schmidt

unread,
Aug 11, 2019, 8:14:37 AM8/11/19
to QLab
For anyone curious, playing along at home ... we never figured out how to elegantly poll the current location of the fader, but found a solution that works for us. 

  • Our board op never touches the DCAs, only the individual channels connected to the DCAs (in order to finesse live volume)
  • We then setup in QLab a group for every action (DCA1 fade up, DCA1 fade down, etc)
  • Each group then 1) disarms itself and 2) arms the inverse action
This way we can repeat calls to a fade up / fade down command, but it only operates if it hasn't already been performed prior. 
Not perfect, but clean and reliable. 

TMS

unread,
Apr 25, 2022, 4:42:37 PM4/25/22
to QLab
I was thinking about a related idea -  folks had asked how to get a dca fader to respond inversely to another dca fader and while I have misgivings about whether one would want this behavior all the time... or throughout the full travel of both faders... I can imagine times when I would like turning up the horns to turn down the keys, a little.

Because of the limitations of (subscribing and receiving) osc data from an x32 , I came up with a folder of midi cues whose triggers are the inverse midi position of their outputs. And I wrote a script that creates that folder of commands:


tell application id "com.figure53.QLab.4" to tell front workspace
 --   start cue "CloseForSpeed"
   -- delay 10
   
    --Set names for group & in & out things
    display dialog "Name of this Group" default answer "New Name" buttons {"OK", "Cancel"} default button "OK"
    set groupname to text returned of result
    display dialog "Name input controller" default answer "New Name" buttons {"OK", "Cancel"} default button "OK"
    set incontroller to text returned of result
    display dialog "Name output contoller" default answer "New Name" buttons {"OK", "Cancel"} default button "OK"
    set outcontroller to text returned of result
   
    set increasingvar to "0" as number
    set decreasingvar to "127" as number
   
   
    set triggerchannel to 1
    set triggerCCnumber to 1
   
 
    set outputpatchnumber to 1
  set outputchannel to 2 
  set outputCCnumber to 2
   
    make type "group"
    set newgroup to last item of the (selected as list)
    set q name of newgroup to groupname
   
   
    repeat 128 times
       
        make type "MIDI"
        --cue level items
        set selectedCues to selected as list
        set newCue to last item of the (selected as list)
        set q number of newCue to ""
        set q name of newCue to incontroller & " " & increasingvar & " sends " & outcontroller & " " & decreasingvar
        set command of newCue to control_change
       
        --message output settings
        set channel of newCue to outputchannel
        set byte one of newCue to outputCCnumber
        set byte two of newCue to increasingvar
       
        --trigger settings
        set patch of newCue to outputpatchnumber
        set midi trigger of newCue to enabled
        set midi command of newCue to control_change
        set midi byte one of newCue to triggerCCnumber
        set midi byte two of newCue to decreasingvar
       
        set increasingvar to (increasingvar + 1) as number
        set decreasingvar to (decreasingvar - 1) as number
        --move cue to group
        repeat with each in selectedCues
            set eachCueID to uniqueID of each
            move cue id eachCueID of parent of each to end of newgroup
        end repeat
    end repeat
end tell



----- the CloseForSpeed cue is a script that will offer to close inspector/lists to make the process happen faster:
tell application id "com.figure53.QLab.4" to tell front workspace
    set closeoptions to {"Neither", "Both", "Inspector Only", "Lists Only"}
    set whattoclose to {choose from list closeoptions with title "Windows to Close for Increased Speed"} as text
    if whattoclose is "Both" then
        tell application "System Events"
            key code 34 using command down
            delay 0.05
            key code 37 using command down
        end tell
    end if
    if whattoclose is "Inspector only" then
        tell application "System Events"
            key code 34 using command down
        end tell
    end if
    if whattoclose is "Lists Only" then
        tell application "System Events"
            key code 37 using command down
        end tell
    end if
end tell

Eóin Murphy

unread,
Feb 20, 2026, 2:04:47 PM (4 days ago) Feb 20
to QLab
wouldn't it be easier to just use 2 fingers
Reply all
Reply to author
Forward
0 new messages