add_filters lua script by Phillip Smith
authorBen Loftis <ben@harrisonconsoles.com>
Mon, 5 Dec 2016 18:20:42 +0000 (12:20 -0600)
committerBen Loftis <ben@harrisonconsoles.com>
Tue, 6 Dec 2016 21:34:08 +0000 (15:34 -0600)
scripts/add_filters.lua [new file with mode: 0644]

diff --git a/scripts/add_filters.lua b/scripts/add_filters.lua
new file mode 100644 (file)
index 0000000..77b41c1
--- /dev/null
@@ -0,0 +1,54 @@
+ardour {
+       ["type"]    = "EditorAction",
+       name        = "Add Filters",
+       license     = "MIT",
+       author      = "PSmith",
+       description = [[Add 'HPF/LPF' Lua Processor to all Tracks]]
+}
+
+function action_params ()
+       return
+       {
+               ["unique"]   = { title = "Only add HPF/LPF if not already present (yes/no)", default = "yes"},
+               ["position"] = { title = "Insert Position from top (0,..)",                   default = "0"},
+       }
+end
+
+
+function factory (params)
+       return function ()
+               -- get configuration
+               local p = params or {}
+               local uniq = p["unique"] or "yes"
+               local pos = p["position"] or 0
+
+               -- loop over all tracks
+               for t in Session:get_tracks():iter() do
+                       local insert = true;
+
+                       -- check if filters are present
+                       if uniq ~= "no" then
+                               local proc;
+                               local i = 0;
+                               repeat
+                                       -- get Nth Ardour::Processor
+                                       proc = t:nth_plugin (i)
+                                       -- check if it's a filter
+                                       if (not proc:isnil() and proc:display_name () == "a-High/Low Pass Filter") then
+                                               insert = false;
+                                       end
+                                       i = i + 1
+                               until proc:isnil() or insert == false
+                       end
+
+                       -- create a new processor and insert it
+                       if insert then
+                               local a = ARDOUR.LuaAPI.new_luaproc(Session, "a-High/Low Pass Filter");
+                               if (not a:isnil()) then
+                                       t:add_processor_by_index(a, pos, nil, true)
+                                       a = nil -- explicitly drop shared-ptr reference
+                               end
+                       end
+               end
+       end
+end