OSC support for Behringer X-Air mixers

Ask a generic question about the usage of QLC+, not related to a particular operating system
kenm
Posts: 10
Joined: Thu Jan 26, 2017 11:47 pm
Location: San Jose, CA, USA
Real Name: Ken Mitchell

Hi All,

I just recently discovered QLC+ while researching the integration of an XR18 with lighting control as well as a DAW (Reaper). My research is for a theater renovation project I'll be working on over the summer. While I'm new to QLC+ I'm very familiar with the OSC protocol used by the X-Air mixers. I've ported several utilities from the X32 series as well as developed a few of my own utilities. Two-way OSC communication with an X-Air mixer is not as straight forward as it is for other OSC devices. The X-Air uses a unique method of responding to OSC messages in that it always responds to the IP address and 'source' port of the sender. What this means is that QLC+ (and TouchOSC and Lemur) cannot carry on a two-way conversation with an X-Air mixer because they listen on a pre-defined Input port not the port they used to send the OSC message. In addition, the only way to get async parameter updates from an X-Air mixer (i.e. parameters changed via X-Air-Edit or another client) is to periodically send an "/xremote" OSC message to the X-Air once every 10 seconds.

To facilitate the two-way communication between an OSC controller (such as TouchOSC and Lemur) and an X-Air mixer I developed a utility called XAirRemote. What XAirRemote does is listens for OSC messages coming from an OSC controller such as TouchOSC, translates the messages into a format that the X-Air can understand, and then sends the messages off to the X-Air. Conversely it listens for OSC messages coming from the X-Air mixer, translates then into a format an OSC controller can understand, and then sends those messages back to the OSC controller.

I'm investigating adding support for QLC+ in XAirRemote but first I need to learn how QLC+ plugins and input profiles work.

Stay tuned,
Ken
kenm
Posts: 10
Joined: Thu Jan 26, 2017 11:47 pm
Location: San Jose, CA, USA
Real Name: Ken Mitchell

Made some progress.

Here's the log of a button press to Mute Channel 01.

R->, 24 B: /track/1/mute~~~,f~~[1.0000]
->X, 24 B: /ch/01/mix/on~~~,i~~[ 0]
X->, 24 B: /ch/01/mix/on~~~,i~~[ 0]
->R, 24 B: /track/1/mute~~~,f~~[1.0000]
R->, 24 B: /track/1/mute~~~,f~~[0.0000]
->X, 24 B: /ch/01/mix/on~~~,i~~[ 1]
X->, 24 B: /ch/01/mix/on~~~,i~~[ 1]
->R, 24 B: /track/1/mute~~~,f~~[0.0000]

If I knew what I was doing with QLC+ I could probably figure out why a toggle is acting like a press and release pushbutton.

BTW, "/track/1/mute" is the message I'm sending from QLC+ to XAirRemote. As you can see Mute On translates to /ch/01/mix/on ,i 0 and vice versa.

I also need to figure out how to get QLC+ to send integers instead of floats but for now I modified the XAirRemote code to handle it.

--Ken
kenm
Posts: 10
Joined: Thu Jan 26, 2017 11:47 pm
Location: San Jose, CA, USA
Real Name: Ken Mitchell

To Moderators:

Can we either move this thread back to General->Community since it's active again or should I start a new thread?

Thanks,
Ken
kenm
Posts: 10
Joined: Thu Jan 26, 2017 11:47 pm
Location: San Jose, CA, USA
Real Name: Ken Mitchell

To Mods: Thanks for the move (although it took me a minute to find the thread again :) )

I have a basic working channel strip that controls mute, level, solo, and pan. (See attached)

I still don't know what I'm doing when it comes to QLC+ but I've followed some old instructions from @gmint that told me to create a dummy fixture and dummy scene for each widget.

I've also attached the input profile for the X-Air channel strip so you can see the OSC messages. Remember I'm not talking directly to the X-Air mixer but to a program called XAirRemote which does the to/from translation.

Also, I think i found a bug in the OSC input handling for buttons but I need to do some more testing before I know for sure.

Finally, I can't seem to figure out how to get the pan knob any bigger. I have to make the widget huge just to get a usable size knob.

--Ken
Attachments
snap.jpg
snap1.jpg
siegmund
Posts: 703
Joined: Mon Nov 02, 2015 11:03 am
Location: Germany
Real Name: Lukas

kenm wrote:I still don't know what I'm doing when it comes to QLC+ but I've followed some old instructions from @gmint that told me to create a dummy fixture and dummy scene for each widget.
That is absolutely right.
kenm wrote:Finally, I can't seem to figure out how to get the pan knob any bigger. I have to make the widget huge just to get a usable size knob.
This is normal. You cannot size the encoder itself, you have to enlarge the whole knob widget.
chrissi
Posts: 14
Joined: Fri Jan 27, 2017 7:57 am
Real Name: Christoph

kenm wrote:I've also attached the input profile for the X-Air channel strip so you can see the OSC messages. Remember I'm not talking directly to the X-Air mixer but to a program called XAirRemote which does the to/from translation.
Hi ken, looks great - where to find this programm XAirRemote? No google results...
Anything special to set up? Qlc Input/output channels?

Also can you make a Screenshot of the fixture / scene /any settings ?

Since it is a fixture, can you also use it outside the virtual console? Programm solo/mute/volume into scenes/shows?

How reliable is the Osc connection with your setup?

Many questions, really interested in this thing :-)
Thanks a lot
kenm
Posts: 10
Joined: Thu Jan 26, 2017 11:47 pm
Location: San Jose, CA, USA
Real Name: Ken Mitchell

Hi Christoph,

XAirRemote is still very new so it probably isn't in any search results. I had to make a change to the program to support the way QLC+ handles OSC inputs so as soon as I get that change tested I'll build some binary packages and post the links. The program will also be open-sourced so you can view the code to see how it functions. It takes less than 5 minutes to create a configuration file and get the program up and running.

Also, since I'm very new to QLC+ I can only provide a simple explanation of what I have working. Right now I'm using a dummy fixture (generic dimmer) controlled by one dummy scene per widget. I've created an Input Profile that defines all of the possible OSC messages for XAirRemote. The OSC plugin is set to Input + Feedback with its settings matching the configuration settings of XAirRemote and the Input Profile selected. What I need to do now is go read about the Fixture Definition Editor to see if I can create a fixture to define an XAir channel strip. Please allow me a few days to figure this part out and build a well-documented sample setup.

As far as reliability goes I ran 17 theater performances in December with TouchOSC and Lemur controlling an XAir XR18 using XAirRemote. I know of a 5 member band who's using XAirRemote with an XR18 to control individual monitor mixes + FOH Mains and they haven't had any problems.

What operating system are you running? PM me and I'll send you a binary and some instructions to get it setup.

--Ken
bix
Posts: 10
Joined: Tue Jan 03, 2017 5:45 pm
Real Name: Enrico

Hi Ken,
Thank you for sharing your experience.
I'm interested in XAR too..please keep us updated.
kenm
Posts: 10
Joined: Thu Jan 26, 2017 11:47 pm
Location: San Jose, CA, USA
Real Name: Ken Mitchell

Hi Bix,

I'll certainly keep everyone posted as I progress. I had to make a change to XAirRemote in the way it requested updates from the X-Air mixer. I was originally using "/xremote" to request updates but needed to change it to "/xremotenfb" to avoid a software feedback loop. the "nfb" stands for "no feedback" so the X-Air mixer doesn't acknowledge messages sent to it. Those acknowledgements were causing QLC+ problems in an OSC Input+Feedback setup.

I've sent Christoph a binary of XAirRemote along with an Input Profile, Fixture Definition, and sample workspace to try out.

Send me a PM telling me what OS you are running along with how I can send you some files and you can join in the fun.

--Ken
janosvitok
Posts: 1276
Joined: Mon Apr 13, 2015 7:05 am
Location: Bratislava, Slovakia
Real Name: Jano Svitok
Contact:

Chrissi,
janosvitok wrote:You've asked wrong question, the answer is correct. :-P
I have to admit that I indeed understood your question wrong way. I am sorry. I didn't imagine that you want to control XAir from QLC+. I thought you want the other direction.
I hope you have sorted it in the mean time.

Jano
kenm
Posts: 10
Joined: Thu Jan 26, 2017 11:47 pm
Location: San Jose, CA, USA
Real Name: Ken Mitchell

Hi All,

Sorry for the delay between posts but I've been very busy at work and didn't have as much time as I expected to work on this. Attached please find an input profile, fixture definition, and example workspace for controlling an X-Air mixer using XAirRemote. The workspace is set up assuming XAirRemote is running on the same computer as QLC+ (i.e. 127.0.0.1). The fixture definition has six modes that represent the six types of controls for a mixer. The example workspace implements all possible controls for Channel 01.

You'll need version 1.2 of XAirRemote and it can be downloaded from the link below:

https://sites.google.com/site/xairutilities/

I don't have a Windows binary package yet since I don't have access to a Windows system. I normally develop on OS X and Linux (Ubuntu).

There are a couple of issues I ran into with using QLC+ to control a mixer.

When QLC+ is switched from design mode to operate mode the values of the QLC+ virtual console widgets are sent to the mixer which is not good. Normally the mixer settings are sync'd TO the controller not FROM the controller. For example, by default all "mute scenes" will unmute all channels when entering operate mode.

Fixture definitions assume the fixture is DMX controlled. Controlling an OSC device requires virtual console widgets tied to DMX channels.

HTP/LTP rules are good for lighting but not so much for audio. Maybe I just don't understand how to use them properly.

Hopefully others who are more familiar with QLC+ can develop this further.

--Ken
Attachments
XAirRemote-Example.qxw
(15.12 KiB) Downloaded 227 times
Behringer-XAirRemote.qxf
(6.42 KiB) Downloaded 189 times
Behringer-XAirRemote.qxi
(40.69 KiB) Downloaded 193 times
Post Reply