How To | Scripting a delay in Q-SYS

Learn how to script a delay in Q-SYS.

Updated at October 9th, 2024

Procedure


The Timer object built into Lua in Q-SYS has a CallAfter function. This is known as a "simple timer" and is described in the Q-SYS Help here.

The concept is as follows:

Timer.CallAfter(function() --[[the stuff to do after the TimeInSeconds value is complete]] end, TimeInSeconds)

For example, if you have a momentary button that needs to be toggled without a user button press:

TimeInSeconds = 3.5             --Define the amount of time to wait to do the function
Controls.Button[1].Value = 1    --Sets the first Control named Button to a high position

Timer.CallAfter(function()      --The Simple Timer function that will be delayed
  Controls.Button[1].Value = 0  --Sets the first Control named Button to a low position
  end, TimeInSeconds)           --Ends the instructions nested in the Simple Timer with the Delay Defined