summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-03-15 01:38:49 +0100
committerRobin Gareus <robin@gareus.org>2019-03-15 01:38:49 +0100
commit76559998893901fc70900d0c439f8a433f1b7742 (patch)
tree8bcc5d9328ef3a84b5a0d0e057ec801549c9e224 /scripts
parent12fd04835868aadedb7f5e0a5f11a3cc5c2eaf0f (diff)
Add example script to save instrument plugins on save
Diffstat (limited to 'scripts')
-rw-r--r--scripts/_export_plugins_on_save.lua44
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/_export_plugins_on_save.lua b/scripts/_export_plugins_on_save.lua
new file mode 100644
index 0000000000..c732717bd8
--- /dev/null
+++ b/scripts/_export_plugins_on_save.lua
@@ -0,0 +1,44 @@
+ardour {
+ ["type"] = "EditorHook",
+ name = "Save Extra Data (instruments)",
+ author = "Ardour Lua Task Force",
+ description = "Export custom data when the session is saved",
+}
+
+-- subscribe to signals
+-- http://manual.ardour.org/lua-scripting/class_reference/#LuaSignal.LuaSignal
+function signals ()
+ s = LuaSignal.Set()
+ s:add ({[LuaSignal.StateSaved] = true})
+ return s
+end
+
+-- create callback functions
+function factory () return function (signal, ...)
+ assert (signal == LuaSignal.StateSaved)
+
+ local all_instruments = {}
+
+ -- iterate over all routes
+ for r in Session:get_routes():iter() do
+ local proc = r:the_instrument() -- get instrument processor (if any)
+ if proc:isnil() then goto nextroute end -- skip tracks/busses without instrument
+ local pi = proc:to_insert() -- check if it's a plugin-insert
+ if pi:isnil() then goto nextroute end
+
+ local pp = pi:plugin (0) -- get first instance
+ all_instruments[r:name()] = string.format ("%s (%s)", proc:name(), pp:unique_id())
+
+ ::nextroute::
+ end
+
+ if next (all_instruments) ~= nil then -- check if table is not empty
+ -- write to a file in the session-folder
+ file = io.open (ARDOUR.LuaAPI.build_filename (Session:path(), Session:name () .. ".instruments.txt"), "w")
+ for nme, nfo in pairs (all_instruments) do
+ file:write (nme .. ": " .. nfo)
+ end
+ file:close()
+ end
+
+end end