Example Lua script to perform action at specific wallclock time
authorRobin Gareus <robin@gareus.org>
Sun, 18 Mar 2018 14:56:06 +0000 (15:56 +0100)
committerRobin Gareus <robin@gareus.org>
Sun, 18 Mar 2018 14:56:28 +0000 (15:56 +0100)
scripts/_cron.lua [new file with mode: 0644]

diff --git a/scripts/_cron.lua b/scripts/_cron.lua
new file mode 100644 (file)
index 0000000..8ec1cd7
--- /dev/null
@@ -0,0 +1,37 @@
+ardour {
+       ["type"]    = "EditorHook",
+       name        = "Timed Event Example",
+       author      = "Ardour Lua Task Force",
+       description = "Perform actions at specific wallclock time, example record",
+}
+
+function signals ()
+       return LuaSignal.Set():add ({[LuaSignal.LuaTimerDS] = true})
+end
+
+function factory ()
+       local _last_time = 0
+       return function (signal, ref, ...)
+
+               -- calculate seconds since midnight
+               function hhmmss (hh, mm, ss) return hh * 3600 + mm * 60 + ss end
+
+               -- current seconds since midnight UTC
+               -- (unix-time is UTC, no leap seconds, a day always has 86400 sec)
+               local now = os.time () % 86400
+
+               -- event at 09:30:00 UTC (here: rec-arm + roll)
+               if (now >= hhmmss (09, 30, 00) and _last_time < hhmmss (09, 30, 00)) then
+                       Session:maybe_enable_record (false)
+                       Session:request_transport_speed (1.0, true)
+               end
+
+               -- event at 09:32:00 UTC (here: rec-stop)
+               if (now >= hhmmss (09, 32, 00) and _last_time < hhmmss (09, 32, 00)) then
+                       Session:disable_record (false, false)
+                       Session:request_transport_speed (0.0, true)
+               end
+
+               _last_time = now
+       end
+end