Structure of OSC commands sent to QLC+
Posted: Wed Nov 18, 2020 7:55 pm
I have previously used QLC+ to do some visualization with robotic lighting in Capture 2020. Once I learned how to use it, setting up the scenes I wanted was pretty easy, and so now I’ve come back to it for my next project.
In my current project I want to use a Raspberry Pi to send OSC messages to QLC+ so that it can trigger scenes which will then be translated to a robotic light with an Enttec Design Spot 300 Pro. I’ve created a fixture definition successfully, but now that I want to control QLC+ with OSC, I’ve hit a bit of a snag:
I don’t know how to structure my OSC message and how to create a working OSC profile in the Inputs/Outputs window.
Since I’m controlling QLC+ with a Raspberry Pi, I’ve been using a very minimalistic command line utility based on node js to send OSC commands called oscurl (https://github.com/russellmcc/oscurl). I tested it earlier this year and got the utility to trigger QLab cues successfully.
I did that on a Mac and now for testing purposes I’m running the utility (which seems to require the use of a unix system) on Windows under WSL and sending the OSC commands through the loopback address to QLC+. I can confirm that the packets are arriving to QLC+, as the packets received counter increments each time I send a message.
I’ve sent messages like the following:
to see if it messes with the simple desk sliders
to see if it can auto detect the osc input
When I run
Wireshark displays that the following data is sent:
Is the issue here that the type information (I assume that the “s” means string) means that QLC+ ignores the command because it isn’t receiving a numeric value?
Even when I send an empty string with it appends the type information:
What OSC commands do I need to send to QLC+ to get it to work? Will the string type information break all types of OSC commands, or only one that control sliders / things with numeric values? For instance, would a button ignore this type info?
Any help is appreciated.
Edit: I took some captures a couple days ago of the traffic generated by toggling buttons with Touch OSC's automat5 configuration in QLC+. The packets to toggle it on/off are structured as such (I'm not nsure which capture is on and which is off though). Note that the type information seems to be "f" for what I assume is floating point
In my current project I want to use a Raspberry Pi to send OSC messages to QLC+ so that it can trigger scenes which will then be translated to a robotic light with an Enttec Design Spot 300 Pro. I’ve created a fixture definition successfully, but now that I want to control QLC+ with OSC, I’ve hit a bit of a snag:
I don’t know how to structure my OSC message and how to create a working OSC profile in the Inputs/Outputs window.
Since I’m controlling QLC+ with a Raspberry Pi, I’ve been using a very minimalistic command line utility based on node js to send OSC commands called oscurl (https://github.com/russellmcc/oscurl). I tested it earlier this year and got the utility to trigger QLab cues successfully.
I did that on a Mac and now for testing purposes I’m running the utility (which seems to require the use of a unix system) on Windows under WSL and sending the OSC commands through the loopback address to QLC+. I can confirm that the packets are arriving to QLC+, as the packets received counter increments each time I send a message.
I’ve sent messages like the following:
Code: Select all
oscurl 127.0.0.1:7700 /0/dmx/2 255
oscurl 127.0.0.1:7700 /0/dmx/2 0
Code: Select all
oscurl 127.0.0.1:7700 /hi/0 28
When I run
Code: Select all
oscurl 127.0.0.1:7700 /0/dmx/2 255
Code: Select all
/0/dmx/2,s255
Even when I send an empty string with
Code: Select all
oscurl 127.0.0.1:7700 /0/dmx/2 ""
Code: Select all
/0/dmx/2,s
Any help is appreciated.
Edit: I took some captures a couple days ago of the traffic generated by toggling buttons with Touch OSC's automat5 configuration in QLC+. The packets to toggle it on/off are structured as such (I'm not nsure which capture is on and which is off though). Note that the type information seems to be "f" for what I assume is floating point
Code: Select all
/toggleC_1,f?
/toggleC_1,f