X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=scripts%2Fmixer_settings_recall.lua;h=080ecaef3a8e9495c01f2a1e602961665684bfab;hb=4c2e801b5f24bd435f31a71183f89d26bf21838f;hp=d560a62b3fe21d58b7abc0ab65915280cd3008b0;hpb=857be477280d1dcbd972df136b4a6dc4a508dd17;p=ardour.git diff --git a/scripts/mixer_settings_recall.lua b/scripts/mixer_settings_recall.lua index d560a62b3f..080ecaef3a 100644 --- a/scripts/mixer_settings_recall.lua +++ b/scripts/mixer_settings_recall.lua @@ -13,7 +13,11 @@ ardour { ]] } -function factory () return function () +function factory () + + local acoraida_monicas_last_used_recall_file + + return function () local user_cfg = ARDOUR.user_config_directory(-1) local local_path = ARDOUR.LuaAPI.build_filename(Session:path(), 'mixer_settings') @@ -60,11 +64,9 @@ function factory () return function () 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) @@ -187,9 +189,11 @@ function factory () return function () 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) @@ -221,7 +225,7 @@ function factory () return function () 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 @@ -253,6 +257,7 @@ function factory () return function () 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 @@ -361,9 +366,9 @@ function factory () return function () { type = "radio", col=0, colspan=20, align="left", key = "recall-dir", title = "", values = { - ['Pick from Global Settings'] = 1, ['Pick from Local Settings'] = 2 + ['Pick from Global Settings'] = 1, ['Pick from Local Settings'] = 2, ['Last Used Recall File'] = 3, }, - default = 'Pick from Local Settings' + default = 'Last Used Recall File' }, { type = "label", col=0, colspan=20, align="left", title = ""}, } @@ -389,6 +394,7 @@ function factory () return function () if not(rv) then return end local dry_return = LuaDialog.Dialog("Recall Mixer Settings:", dry_run(false, rv['file'])):run() if dry_return then + acoraida_monicas_last_used_recall_file = rv['file'] recall(false, rv['file'], dry_return) else return @@ -410,6 +416,7 @@ function factory () return function () if not(rv) then return end local dry_return = LuaDialog.Dialog("Recall Mixer Settings:", dry_run(false, rv['file'])):run() if dry_return then + acoraida_monicas_last_used_recall_file = rv['file'] recall(true, rv['file'], dry_return) else return @@ -420,6 +427,21 @@ function factory () return function () LuaDialog.MessageType.Info, LuaDialog.ButtonType.Close):run() end end + + if gvld['recall-dir'] == 3 then + if acoraida_monicas_last_used_recall_file then + local dry_return = LuaDialog.Dialog("Recall Mixer Settings:", dry_run(false, acoraida_monicas_last_used_recall_file)):run() + if dry_return then + recall(true, acoraida_monicas_last_used_recall_file, dry_return) + else + return + end + else + LuaDialog.Message ("Script has no record of last used file:", + 'Please pick a recall file and then this option will be available', + LuaDialog.MessageType.Info, LuaDialog.ButtonType.Close):run() + end + end end end end