13
0
livetrax/share/scripts/list_plugins.lua

72 lines
2.4 KiB
Lua
Raw Normal View History

ardour { ["type"] = "EditorAction", name = "List Plugins",
license = "MIT",
author = "Ardour Team",
description = [[List and count plugins used in this session]]
}
function factory () return function ()
2020-07-31 19:15:57 -04:00
local rv = "Plugins used in this session:\n\n"
local all_plugs = {}
for r in Session:get_routes ():iter () do
if r:is_monitor () or r:is_auditioner () then goto nextroute end -- skip special routes
local i = 0
while true do
local proc = r:nth_plugin (i)
if proc:isnil () then break end
local pi = proc:to_insert () -- we know it's a plugin-insert (we asked for nth_plugin)
local pp = pi:plugin (0)
local id = pi:type() .. "-" .. pp:unique_id()
local cnt = 0
2020-07-31 19:15:57 -04:00
if pi:is_channelstrip () then goto nextproc end
if all_plugs[id] then cnt = all_plugs[id]['cnt'] end
all_plugs[id] = { name = proc:name(), ["type"] = pi:type(), id = pp:unique_id(), cnt = (cnt + 1) }
2020-07-31 19:15:57 -04:00
::nextproc::
i = i + 1
end
::nextroute::
end
function plugintypestr (t)
if (t == ARDOUR.PluginType.LADSPA) then return "LADSPA" end
if (t == ARDOUR.PluginType.LV2) then return "LV2" end
if (t == ARDOUR.PluginType.AudioUnit) then return "AU" end
if (t == ARDOUR.PluginType.Windows_VST) then return "VST" end
if (t == ARDOUR.PluginType.LXVST) then return "VST" end
if (t == ARDOUR.PluginType.MacVST) then return "VST" end
if (t == ARDOUR.PluginType.Lua) then return "Lua" end
return "??"
end
2020-07-31 19:15:57 -04:00
if next(all_plugs) == nil then
rv = rv .. " -- NONE --"
else
rv = rv .. "<span face=\"mono\">CNT | TYPE | NAME</span>"
end
for k,v in pairs (all_plugs) do
print (string.format ("%2d * %-6s %-30s (%s)", v['cnt'], plugintypestr(v['type']), v['name'], v['id']))
2020-07-31 19:15:57 -04:00
rv = rv .. "\n<span face=\"mono\">" .. string.format ("%3d * %-6s %s", v['cnt'], plugintypestr(v['type']), v['name']) .. "</span>"
end
2020-07-31 19:15:57 -04:00
LuaDialog.Message ("All Plugins",rv , LuaDialog.MessageType.Info, LuaDialog.ButtonType.Close):run()
end end
function icon (params) return function (ctx, width, height, fg)
local wh = math.min (width, height)
ctx:set_source_rgba (ARDOUR.LuaAPI.color_to_rgba (fg))
ctx:rectangle (wh * .2, wh * .35, wh * .4, wh * .3)
ctx:fill ()
ctx:rectangle (wh * .65, wh * .35, wh * .1, wh * .3)
ctx:fill ()
ctx:set_line_join (Cairo.LineJoin.Bevel)
ctx:set_line_width (.5)
ctx:move_to (wh * 0.85, wh * .35)
ctx:line_to (wh, wh * .5)
ctx:line_to (wh * 0.85, wh * .65)
ctx:close_path ()
ctx:fill_preserve ()
ctx:stroke ()
end end