AU: mark preset dirty when parameter changes
[ardour.git] / scripts / periodic_backup.lua
1 ardour {
2         ["type"]    = "EditorHook",
3         name        = "Periodically Save Snapshot",
4         author      = "Ardour Lua Task Force",
5         description = "Save a session-snapshot peridocally (every 15mins) named after the current date-time",
6 }
7
8 -- subscribe to signals
9 -- http://manual.ardour.org/lua-scripting/class_reference/#LuaSignal.LuaSignal
10 function signals ()
11         return LuaSignal.Set():add ({[LuaSignal.LuaTimerS] = true})
12 end
13
14 -- create callback function
15 function factory ()
16         local _last_snapshot_time = 0 -- persistent variable
17         local _snapshot_interval = 60 * 15 -- 15 minutes
18
19         -- callback function which invoked when signal is emitted, every 100ms
20         return function (signal, ref, ...)
21
22                 local now = os.time (); -- unix-time, seconds since 1970
23
24                 -- skip initial save when script is loaded
25                 if (_last_snapshot_time == 0) then
26                         _last_snapshot_time = now;
27                 end
28
29                 -- every 15 mins
30                 if (now > _last_snapshot_time + _snapshot_interval) then
31
32                         -- don't save while recording, may interfere with recording
33                         if Session:actively_recording() then
34                                 -- queue 30 sec after rec-stop
35                                 _last_snapshot_time = now - _snapshot_interval + 30
36                                 return
37                         end
38
39                         _last_snapshot_time = now
40                         -- format date-time (avoid colon)
41                         local snapshot_name = os.date ("%Y-%m-%d %H.%M.%S", now)
42                         -- save session -- http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:Session
43                         Session:save_state ("backup " .. snapshot_name, false, false, false)
44                 end
45
46         end
47 end