Introduction to Programming

Site: QSC
Course: Q-SYS Control 101 Training
Book: Introduction to Programming
Printed by: Guest user
Date: Tuesday, 14 October 2025, 9:41 AM

Description

Lesson Description

Begin by (re)meeting your instructor for this series and discover the variety of ways you can program your Q-SYS design to perform custom tasks.

Video Transcript

00:08
Welcome to the Q-SYS Control Training course.
00:10
My name is Nate Makaryk, and I will be your instructor for this series in which we'll dive down the rabbit hole of using Q-SYS as a robust control platform.
00:19
If you're watching, I expect that you are already very familiar with the Q-SYS designer software because i'm not going to bother explaining any basic navigation concepts as we go along.
00:30
I also expect that you're comfortable with building audio system architecture and processing,
00:35
but now we're gonna leave the audio side of things behind and focus on control.
00:40
This course is intended to be an online prerequisite for an in-class Q-SYS control training session.
00:46
However, you can absolutely learn a lot from this series, even if you aren't planning on attending one of our classroom sessions at the end of it.
00:53
The goal of this series is to get you fluent in the various ways.
00:57
Q-SYS can be used for programming so that you can hit the ground running in class and can start connecting to real third party devices.
01:04
But with these online videos, you probably don't have any hardware, so we can only go as far as emulation mode will allow us.
01:11
Fortunately, that's still pretty far to help you out, we've created an accompanying worksheets that includes exercises for you to follow after certain lessons.
01:20
You'll download this worksheet in this section that immediately follows this video, or you can visit the download and links tab from any of the videos in this course.
01:31
Control is a wide subject that covers a lot of things.
01:35
By now, you should be familiar with building a user control interface and adding elements from your design onto a touchscreen,
01:41
to give your user control of the system on the great big spectrum of control within Q-SYS.
01:46
This is easy peasy.
01:48
Using the controls inside a component control panel to make it do what is designed to do is simple and it actually gets you pretty far.
01:56
But what if you want your buttons to interact with each other?
01:59
Or to potentially do different things depending on the settings of other controls.
02:03
To accomplish this, you'll need to explore the world of programming.
02:07
There are actually several routes you can follow in Q-SYS Designer in regard to programming, and we'll walk through each of these discussing the pros and cons of each.
02:16
More complicated topics on the control spectrum include using Q-SYS to control other devices outside of the Q-SYS architecture.
02:24
There are endless types of devices that can either send or receive control data.
02:28
This might be simple connections to analog buttons or potentiometers,
02:32
unidirectional commands sent to a third party lighting controller or bidirectional communications between video matrices, televisions, security systems, you name it.
02:41
If it's controllable Q-SYS can control it.
02:44
At an extremely high level, all programming has some universal commonalities, and once you learn them, you'll start to see them playing out in your everyday life as well.
02:53
Programming is the process that happens in between a thought and an action.
02:58
For instance, here's an experiment I'd like you to do with me.
03:01
Would you kindly clap your hands?
03:05
Did you do it?
03:07
Let's take a look at what just happened.
03:08
I delivered a request to your brain.
03:11
Clap your hands.
03:12
Your brain made a series of split second decisions, and the end result was that you either clapped your hands or you didn't.
03:19
My command was the input, something that has entered the system, which requires a reaction.
03:25
The output is a command to your hand.
03:27
In between, the decision making process is full of conditional statements, functions, and references to external parameters, which you may have not even been aware of.
03:36
For instance, do you want to follow the instructions or not?
03:41
Are you in an environment in which you would be acceptable to suddenly clap your hands or not?
03:46
Let's reference an external variable that states whether or not there is currently something in your hands that would prevent you from clapping.
03:53
Then a comparative function would decide whether your desire to comply with the command is greater than the inconvenience of putting the thing in your hand down.
04:01
The desire to do it may be overwritten by a global variable of how many hands you actually have.
04:07
The desire to not do it may be overwritten by my subliminal reference to the video game BioShock, which could force you to perform any command that contains the words.
04:17
Would you kindly?
04:19
All of these types of conditional statements happen in the blink of an eye, and the end result is an output.
04:25
In this case, either a function is launched that tells your hands to clap, or if the conditions of satisfaction have not been met, then the system remains unchanged.
04:33
Understanding the flow of all these conditional statements, references to variables, parameters, and functions.
04:39
What we mean by input and outputs, this is the skeleton of programming.
04:44
Our brains do it automatically so it might seem like common sense to spell it out like this, but in order to program a computer, you have to consider every possibility and logically plan for it.
04:55
The good news is that no matter which method you use to program these fundamental concepts are gonna be true for every task you want to accomplish.
05:03
You just need to be able to break it down into small identifiable pieces, and we're gonna teach you what each of those pieces look like.
05:10
In this course, we're gonna show three different methods that you could use for programming.
05:14
Control components, lua scripting and the block controller each have their own advantages and disadvantages,
05:21
and we're gonna constantly jump back and forth between all three of these methods throughout this course so that you can compare their methods to each other.
05:28
Control components allow you to manipulate simple ways for controls within Q-SYS to interact with each other and apply some basic functions that compare the states of multiple controls,
05:38
affect different options based on the particular inputs, and gate logic paths on or off.
05:43
Control components are great for simple interactions or for deciding between two choices.
05:49
You can certainly get clever with them to make more complicated scenarios, but eventually you're gonna hit a wall where you need a more robust tool.
05:55
Scripting is the other end of the spectrum.
05:58
With scripting, you can accomplish almost anything, but you have to know how to write script in that particular language to make it happen.
06:05
The control script editor in Q-SYS will take you to an empty black workspace where you can type code, specifically the coding language, lua.
06:13
You'll need to understand the syntax rules of Lua, as well as the Q-SYS specific additions we've made to the Lua database in order to properly accomplish anything.
06:22
There's no way this course could teach you all of Lua from scratch, but we will show you some basics.
06:28
If you learn how to write in Lua, you could program complicated interactions with third party devices that are connected via the network or serial ports.
06:35
You can make arrays and timers.
06:38
You have the ability to parse complex strings.
06:40
You're really limited only by your expertise in coding.
06:44
Now that may seem like a big jump between control components and the control script components, which is where our third option comes into play.
06:52
The block controller.
06:54
The Block Controller is a visual coding tool.
06:57
It is designed to let you use interlocking blocks, which will transform the end result into usable script.
07:03
This means you can accomplish a lot of things Lua can do without knowing its exact language protocols, and without making any syntax errors.
07:11
You do need to understand some of the basic principles of how coding languages work in order to build in the block controller, and we'll show you how to apply that knowledge.
07:19
Once again, there's no way we can make you an expert on all three of these methods just by watching these videos.
07:25
Our goal is to get you comfortable with each method.
07:28
We'll show you how some common actions can be accomplished across all three of them, and hopefully inspire you to start exploring on your own.
07:35
After many of the videos, we'll ask you to go to your control training worksheet and complete an exercise.
07:40
But feel free to spend even more time than that pushing the limits of each process that we talk about.
07:46
Some of the tools we'll be using, such as the block controller and the scripting components are found here in the schematic library.
07:52
Alright, we'll start off by exploring the first method, the control components.
07:56
Scripting and block controller obviously have a lot in common, so we'll look at those together a little later on.
08:01
But first, we can spend some time on control components all by themselves.
08:05
So take a quick break, take a deep breath, and get ready to dive into this Q-SYS control training course.
08:13
Move on to the next video whenever you're ready.