It has always been our goal to lower the barrier of entry for control programming within Q-SYS, and as the platform evolves, that principle remains. Q-SYS offers three programming methodologies that can enable programmers (or non-programmers) of all skill levels.
No-Code
All native Q-SYS Products enable ‘drag-and-drop’ control programming. This means you can add control functionality to a Q-SYS user control interface (UCI) without typing a line of code. Simply drag the intended control from the component in the schematic to the UCI layout. Additionally, Q-SYS has a growing library of third-party device plugins that follow that exact paradigm, letting you easily add control for a wide range of devices.
A third method is to utilize Control Components. This approach lets you assemble control logic and functions the same way you would connect audio processing components in an open architecture DSP. This will appeal to those with prior experience in developing signal flows, DSP audio programming or have used other control programming platforms that have a similar visual layout.
Here’s an example in which the programmer added a single toggle button to power a display on or off, while moving the window shades up or down based on the state of the display. Like the other no-code options, the toggle switch can then be “dragged” into your Q-SYS UCI.
Low-Code
There could certainly be instances where you do need some customization that requires some programming. Q-SYS offers a Block Controller Component, which uses visual blocks that stack together to assemble control programming code. This method provides the power and flexibility of text-based programming without the requirement of learning a programming language or syntax. This is useful for someone that has experience with similar programming styles or can be a gateway into learning code for a novice programmer.
The example shown here uses Block Controller to enable volume control of a display’s loudspeakers via a serial connection. Since a display’s volume level could be a range of hundreds of values, we wouldn’t want to manually create and somehow select a specific volume level command for each possible value. Instead, we would rather be able to build a properly formatted volume level command based on a fader control’s position on a UCI.
Here, we’ve created a Volume Command variable and will send the proper command string when the Level Value fader position changes. Once these blocks have been assembled inside Block Controller, another benefit is that these blocks can then be converted to expose the code contained inside. This code can often act as a reference or starting point for those new to programming.
Full-Code
Q-SYS has a full scripting environment that allows programmers to work in the Lua programming language. Lua is similar to Python and well suited for programmers with experience in other languages. It’s also an accessible programming language with a number of free online resources, including the Q-SYS Help File, where you can find documentation and examples.
To get started with this approach, you can add the Text Controller component to your schematic and start customizing the automation and control in any space.
An added benefit of Q-SYS is Emulation Mode, which lets you develop and test control programming without being connected to a Q-SYS Core processor.
You’ve Got Options!
It wouldn’t be simple if you had to use just one method. You can take advantage of the no-code functionality of Q-SYS Products while using the Scripting Environment to automate processes for a better user experience.
Here’s a simple example: A user presses the mute button on a Q-SYS NM-T1 microphone and the status LED changes to red on all Q-SYS microphones in the room (no-code), but the users want an audio status indicator as well. Using the programming method of your choice, you can program it to automatically playback a pre-recorded “Audio Muted” message so that all users are aware of the change.
Q-SYS supports a variety of control methodologies that can provide a relatively easy path for those new to the platform. There is an onramp for just about anyone, whether you are an audio DSP veteran looking to add some control functionality to a project, a computer science graduate with years of programming experience or if you fall somewhere in between.
For more technical resources, programming examples and helpful answers to specific questions, join Q-SYS Communities for Developers.
Thank you!