until proc:isnil()
end
- function new_plugin(name)
- for x = 0, 6 do
- local plugin = ARDOUR.LuaAPI.new_plugin(Session, name, x, "")
- if not(plugin:isnil()) then return plugin end
- end
+ function new_plugin(name, type)
+ local plugin = ARDOUR.LuaAPI.new_plugin(Session, name, type, "")
+ if not(plugin:isnil()) then return plugin end
end
function group_by_id(id)
if rt_group then rt_group:add(rt) end
well_known = {'PRE', 'Trim', 'EQ', 'Comp', 'Fader', 'POST'}
-
+ protected_instrument = false
for k, v in pairs(order) do
local proc = Session:processor_by_id(PBD.ID(1))
if not(was_subbed) then
proc = Session:processor_by_id(PBD.ID(v))
end
if proc:isnil() then
- for id, name in pairs(cache) do
+ for id, sub_tbl in pairs(cache) do
+ local name = sub_tbl[1]
+ local type = sub_tbl[2]
if v == id then
- proc = new_plugin(name)
+ proc = new_plugin(name, type)
for _, control in pairs(well_known) do
if name == control then
proc = get_processor_by_name(rt, control)
end
::nextproc::
if proc and not(proc:isnil()) then old_order:push_back(proc) end
+ if not(old_order:empty()) and not(protected_instrument) then
+ if not(rt:to_track():to_midi_track():isnil()) then
+ if not(rt:the_instrument():isnil()) then
+ protected_instrument = true
+ old_order:push_back(rt:the_instrument())
+ end
+ end
+ end
end
rt:reorder_processors(old_order, nil)
if muted then rt:mute_control():set_value(1, 1) else rt:mute_control():set_value(0, 1) end
if soloed then rt:solo_control():set_value(1, 1) else rt:solo_control():set_value(0, 1) end
rt:gain_control():set_value(gc, 1)
rt:trim_control():set_value(tc, 1)
- if pc ~= false then rt:pan_azimuth_control():set_value(pc, 1) end
+ if pc ~= false and not(rt:is_master()) then rt:pan_azimuth_control():set_value(pc, 1) end
end
if plugin then
if string.find(label, "Assign") or string.find(label, "Enable") then --@ToDo: Check Plugin type == LADSPA or VST?
enable[k] = v --queue any assignments/enables for after the initial parameter recalling to duck the 'in-on-change' feature
end
+ print(string.format("%s (Port: %s) -> %s", label, k, v))
ARDOUR.LuaAPI.set_processor_param(proc, k, v)
end
recall_options[2]['path'] = global_default_path
local rv = LuaDialog.Dialog("Recall Mixer Settings:", recall_options):run()
if not(rv) then return end
- local dry_return = LuaDialog.Dialog("Mixer Store:", dry_run(false, rv['file'])):run()
+ local dry_return = LuaDialog.Dialog("Recall Mixer Settings:", dry_run(false, rv['file'])):run()
if dry_return then
recall(false, rv['file'], dry_return)
else
recall_options[2]['path'] = local_default_path
local rv = LuaDialog.Dialog("Recall Mixer Settings:", recall_options):run()
if not(rv) then return end
- local dry_return = LuaDialog.Dialog("Mixer Store:", dry_run(false, rv['file'])):run()
+ local dry_return = LuaDialog.Dialog("Recall Mixer Settings:", dry_run(false, rv['file'])):run()
if dry_return then
recall(true, rv['file'], dry_return)
else