Developer Spotlight: Composing the Q-SYS Ecosystem with Andrew Tomlin


Today, we highlight another influential figure of the Q-SYS community, Andrew Tomlin, who also impacts many areas of the Q-SYS Ecosystem through his professional work.

Andrew lives at the intersection of cool technology and massive events. He works with the largest entertainment companies in the world and has programmed a wide variety of Q-SYS systems including those for complex parades, museums, live productions, and the biggest halftime show on Earth. In between those projects, he develops utility plugins that make Q-SYS even easier to use. In 2021, Andrew founded Odd Harmonics, a programming firm which recently became a Q-SYS Developer Partner.

We hope you enjoy learning more about Andrew’s perspective as much as we did.


Tammy: Hi Andrew, thank you for meeting with us today! Can you tell us about your personal background and professional career, and tell us more about when you were first introduced to Q-SYS?

Andrew: I started programming Q-SYS back when it was in version 1. I got the chance to program the Q-SYS design for a new audio system in a couple small venues. My first real puzzle was to find a way for the bartenders to be able to change the input selection, but only when the technicians allowed them to. I was instantly hooked!

I started programming Q-SYS back when it was in version 1. I got the chance to program the Q-SYS design for a new audio system in a couple small venues. My first real puzzle was to find a way for the bartenders to be able to change the input selection, but only when the technicians allowed them to. I was instantly hooked!

Since then, I’ve been fortunate enough to program Q-SYS for the largest themed entertainment companies in the world, as well as for major stadiums, theaters, restaurants, and more conference rooms than I can count. I founded Odd Harmonics in 2021 to bring together all the various projects under one brand.

For formal education, I have a Bachelor’s of Science in Music Industry and a Master’s of Communication Management. While some of that knowledge and experience has proven valuable, I have learned far more on my own than I ever did in a classroom. No one has ever asked me what degrees I hold when considering me for a job.

Whenever I can get away from a screen, I enjoy hiking and backpacking. Even while I’m out in the wilderness, though, I’m still brainstorming and fleshing out new ideas for various projects. It’s hard to turn off! Some of my most creative ideas came while staring across a valley in the middle of nowhere.

Tammy: Can you tell us more about Nexus, your most known contribution to the Q-SYS Ecosystem, as well as what got you into developing such an extensive solution for Q-SYS users?

Andrew: I enjoy helping people grow and do things that they thought were beyond them. That’s what inspired me to write Nexus, a utility plugin that brings macros to Q-SYS. It gives a simple framework for programming complex tasks, allowing users to easily build sequences of actions, and trigger them in various ways. There’s a completely free version available for anyone to use in any way they see fit.

Nexus is applied in a wide variety of applications. I love hearing about how Nexus is being used to control the audio, lights, video, and effects for shows at themed entertainment parks around the world. Some folks write startup/shutdown sequences for museums, and others run their factory’s shift bells from Nexus. Nexus is also used for easily scheduling the entry and exit announcements at stadiums.

Nexus Brings Macros to Q-SYS

Tammy: Anything new that you are working on and that Q-SYS users should be excited about?

Andrew: Channel Library, a soon-to-be released utility plugin, offers a seamless way to store and recall processing presets, and share them between channels across the design. It’s the best elements of Channel Groups and Snapshots, rolled into one plugin.

The signal chain is totally customizable, so you can suit it to your needs. It also offers a beautiful customizable EQ response display (that includes High-Pass and Low-Pass Filters) which you can easily view and control on a UCI.

Customizable EQ Response Display

One great use case is a boardroom, where participants may sit in different seats for different meetings. The previous solution was to have a snapshot for each channel, each with settings stored for each of the participants. To update the EQ of one of the participants, you had to save the updated snapshot for each channel, sometimes dozens of times. Channel Library makes this process a breeze – just save each person’s preset once, and it’s instantly available to all channels, even across multiple instances of the plugin.

Channel Library Presets Simplify Boardroom Management

Another classic need for Channel Library is at a themed entertainment show, where various performers play different characters on different days. You can store EQ and compressor settings just once for each performer, then easily recall those settings to the channel of whichever character they are playing today. This saves a huge amount of time and headache compared to manually updating snapshots for each audio channel.

Tammy: How do you stay up to date with AV technology? What upcoming technologies excite you and how do you think Q-SYS could leverage them for a better user and developer experience?

Andrew: I keep current with the usual mix of conferences (InfoComm) and online forums (Q-SYS Communities), but my most useful updates tend to come from people around me. If you spend time in spaces (both physical and virtual) where people talk about the things you’re interested in, you’ll naturally hear about the latest developments.

I’m very excited about Q-SYS VisionSuite. It’s such a huge leap forward from the previous camera automation solutions available. The presenter tracking in it today is already mind-blowing, but what really gets my imagination going is its potential – there is so much more room to grow for artificially-intelligent camera/video presentation.

Tammy: What tools and resources do you think every Q-SYS Designer or Q-SYS plugin developer should have in their arsenal? 

Andrew: Build out a personal library of User Components that are individual components, but with minor modifications. They’ll save you a few seconds every time you use it, but more importantly, you won’t need to interrupt your flow to change a couple of Properties. Personally, my most-used User Component is called “Container 0 0”. It’s a container with the input and output pin count already set to 0.

If you’re going to be developing multiple plugins, the Basic Plugin Framework (available in the Resources section of Communities) is worth the effort to set up, but by no means is it required. You can use a regular text editor (my favorite is Sublime Text) to get a workable plugin, but it will be slow when you want to iterate changes. The Basic Plugin Framework’s build task to automatically compile and update the plugin is a huge time saver.

Tammy: Going back to education, what specific technological stack have you had to learn to become prolific with Q-SYS?  How might you do it differently if you had to relearn everything today?  

Andrew: Because I work with a variety of teams and organizations for various projects, I need to be ultra-flexible when it comes to collaborative technology. My laptop has more messaging, file sharing, and remote desktop software than I can count.

As such, I keep the tools I force upon myself as minimal as possible. Currently, I write code with VS Code by Microsoft. I use GitHub for version control of plugins. I keep track of my projects with Things by Cultured Code. Everything else is more overhead than I’m willing to take on.

If starting over today, I would make sure to integrate generative AI into my coding workflow more seamlessly. I’ve played with a few options, but I end up spending more time writing and refining the prompts than it would have taken to just write the code myself. I think that if I used it from the beginning, it would be more natural for me. I wonder if in ten years, I will be viewed the same way that touch-typers view hunt-and-peck typers today.

Tammy: What is your advice on creating scalable solutions with Q-SYS while ensuring a great user experience?

Andrew: The trick here is to anticipate what changes you’ll need to make in the future, and make them as quick to do as possible. Even during the commissioning phase, there’s bound to be some last-minute updates, and time then is especially precious.

Take the basic example of changing the name of an audio input. If you have the name individually typed in various places in the design, it will be difficult to update it. The new Global Find & Replace feature will help speed up that process, but even that requires you to take the file offline and doesn’t work with names stored in controls.

I often prefer to have a central location to store all the names in the design in a pair of linked Custom Controls components, with Text Edit and Text Display (one for back-end editing, and one for displaying on UCIs). Duplicate those controls everywhere in your design instead of individual text fields. It shortens a painful process of changing all the names to a matter of seconds, and you get to stay online with the Q-SYS Core processor.

Tammy: Any feedback to other programmers looking to grow as an independent programmer wanting to work with Q-SYS? 

Andrew: Never stop learning! If you look back on a project you did last year and say to yourself, “That was awful; I did a terrible job. I would do so much differently now” … that’s a fantastic sign! It means you spent the last year getting better. Now you’re approaching the situation with a more mature perspective.

Tammy: As an independent programmer working with Q-SYS, what is the value of a platform like Communities for Developers to you?  

Andrew: Communities is simply phenomenal. If you’re reading this and don’t have an account, stop everything and join now! It’s more than just a discussion forum; it’s a centralized collection of otherwise-scattered resources that have been passed around via email for a decade or more.

If there’s one thing I wish I could change, I would love to be able to contribute more to the discussions in the Communities Groups. Even though I’ve signed up for the email alerts, by the time I log on to write a reply, 98% of the time, someone has already posted a complete and really well-crafted response!

Tammy: What are your thoughts in regards to the future of the AV Industry and where it will be in the next couple years?  Where do you think breakthroughs in technology will come from?

Andrew: Obviously, AI is a huge topic these days. Similar to how technology has upset so many other fields, the work won’t disappear, but it will change. Programmers of the future won’t type as much code, but they’ll spend more energy translating their client’s requests into meaningful inputs to the technology.

Differentiating between what the client says and what the client wants is critical to success.  For example, a client demanding that “in this meeting room, everyone should be able to hear everyone” could be poorly interpreted by an AI. It might route every microphone to every speaker, and then everyone would have a bad day.

Tammy: Where can we find your work?

Andrew: Odd Harmonics has plugins available on Asset Manager and at

Tammy: Where can we find you on Communities for Developers?

Andrew: I’m most often in the Groups for “Scripting and Advanced Control” and “DSP Programming.” You can also follow my profile on Communities.