V16Pro & Q-SYS Product File.
QSys and V16Pro integration is available in V16Pro, V16X and V4X version 2.0 and above.
Part I – Single Core
Adding our V16Pro show controller into a QSC Q-SYS Eco system does not have to be difficult. Our Engineering Team has created a Product file specifically for this purpose. In this article I will explain how our V16Pro can display the current audio player file name of QSYS audio player.
We first need to understand Q-SYS is designed to allow a third-party system to control and monitor different aspects of the system. You can create up to 4 change groups where each group is able to handle 512 named controls. Per QSC, it is recommended that you use smaller numbers to reduce network traffic.
Our show controller will act as a client and the Q-SYS core will be the server connecting to each other via a TCP/IP connection.
Launch Q-SYS designer and add an Audio Player into your Q-SYS designer page. Double click the audio player then drag and drop the File bar into Named Controls. (You can also add a custom name as well, but I would keep this simple for easy explanation).
Next is to Extract Named Controls so that they can be used by our Show Controller. Click on Tools and choose Extract Named Controls…
Save the file in your preferred location. WinScript Live will need this file in order to Import all the Named Controls as a Variable.
WinScriptLive Device Setup
Launch WinScript Live, select your Show Controller, and add a new Device. In this example my Q-SYS Core will be named AlcornCore-1 and I am using the latest Product file version. Once you have done this hit next.
You now need to set up the connection. Set the Ethernet type, IP address of your QSYS Core, and destination Port. Once finished hit next. (On this example my Q-SYS Core is connected to the B port of my V16Pro).
The next window is an overview of all the variables that our Product File has to offer. You can add or remove any variables using our application Product File Creator. Hit Next once everything looks good.
Browse for your .xlm file and check all the names that you would like to Import as variables. Once complete hit the Finish button.
Your new Device will be shown and be ready to use.
You will also have access to a new set of device variables added to your script. These variables will match the QSys Named controls that you checked in the import of the device wizard screen.
Part II – Monitoring Named Control Variables
Keep Alive Command
The external control client must communicate with Q-SYS core at least every 60 seconds or the socket connection will be closed by the core. To keep this connection alive the event “Keep Alive” must be used on your script. Ideally some users prefer a separate sequence that will Auto start and loop approximately every 50 seconds. Name this sequence as Main Core heartbeat with 2 (two) events on it.
Monitor Variables: Control 1 Add
The idea is to add our “AudioPlayerFileName” into a control group so that is filled in automatically by QSYS. To do so your device must use the event Control 1 Add and the control name under Parameter 1. Parameter 2 is the interval of information will be sent from QSYSexpressed in milliseconds. The minimum polling period is 30 ms. As soon as this sequence is executed the QSYS will broadcas cahnges to the controller as the QSYS Named Control changes.
Create a new sequence called Control 1 Add that will run only once.
Pro Tip: By adding a trigger for "TCPStatus="Connected"" This sequence will run when the TCP connection is established. QSYS requires a re-send of "Control 1 Add" if the connection is dropped for any reason.
Add an Event to the sequence.
Run an error check and save your Script file before sending your file to the Show Controller.
Part III - Redundant Mode
Your QSYS design should have Redundant Mode enabled under Core Properties.
Go ahead and add extra components under named controls in your QSYS design like a Blinking LED, Primary Active indicator and the Backup Active indicator.
Add your redundant core as a device in WinScript Live and Import your new QSC Named Controls as Variables.
Create your Redundant Core Heartbeat sequence with the following 2 events.
In order to keep a linear order our next sequence will be called Redundant Core Control 2 Add where AudioPlayerFileName and a BlinkingLED will be monitored. This sequence will be triggered by the AlcornCore-2TCPStatus change.
Now we must create 2 User variables ,like “PrimaryActive” and “BackupActive” these will be filled after the sequence determines which QSYS Core is functional and reporting correct data.
The following 2 sequences are created to monitor the Primary and Backup Active Named Controls from QSYS Core 1 and 2.
The following sequence will update the local variable “PrimaryActive” once QSYS reports back to the Show Controller triggered by the TCPStatus of each Core. If we are active, and connected, then we are confident that the value is correct and can save it to our custom User variable. Waiting 1 second after TCP connection allows enough time for QSYS to broadcast the state of the variables, and for the Device Variables to be filled in.
Reporting from each Core
Each custom User variable, like "BlinkingLED" must be updated with the correct Core. This sequence will run automatically upon restart and will be looped for constant monitoring of the Cores.
The if statement will allow you to compare the information that we need between the two Cores. Two similar sequences must be made an AcornCore-1 and AlcornCore-2 Variable Update. Both sequences will have the same named controls.
At this point your script is ready to be tested. As always perform a Save and Error Check before sending your script file into the Show Controller.