summaryrefslogtreecommitdiff
path: root/scripts/_cron.lua
blob: 8ec1cd797c4b6f111591c1fb39a17f83cab34187 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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