diff options
author | Nikolaus Gullotta <nik@harrisonconsoles.com> | 2020-04-15 13:38:33 -0500 |
---|---|---|
committer | Nikolaus Gullotta <nik@harrisonconsoles.com> | 2020-04-15 13:38:33 -0500 |
commit | 858bb4294da608f1cb548a911804b890b4049501 (patch) | |
tree | 780ec64a52c651b3ba490f7ff450da2c2f60af8a /share/scripts/mixer_settings_store.lua | |
parent | 250da353d4bb6c03d645a96431e2fc7cc1ae4406 (diff) |
Fix Mixer Store/Recall
Two main problems are addressed by this commit.
First, storage of
parameters was broken because the index for values was set by the
parameter count, not the control port count which set_processor_param()
expects.
Second, the value was not clamped to pd.upper and pd.lower causing some
parameters to fail when set.
This invalidates previous mixer store files.
Diffstat (limited to 'share/scripts/mixer_settings_store.lua')
-rw-r--r-- | share/scripts/mixer_settings_store.lua | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/share/scripts/mixer_settings_store.lua b/share/scripts/mixer_settings_store.lua index 1718a83ddd..e21624ed3c 100644 --- a/share/scripts/mixer_settings_store.lua +++ b/share/scripts/mixer_settings_store.lua @@ -301,17 +301,28 @@ function factory () return function () local id = proc:to_stateful():id():to_s() local plug = proc:to_insert ():plugin (0) local ptype = proc:to_insert():plugin(0):get_info().type - local n = 0 -- count control-ports - for j = 0, plug:parameter_count () - 1 do -- iterate over all plugin parameters - if plug:parameter_is_control (j) then - local label = plug:parameter_label (j) - if plug:parameter_is_input (j) and label ~= "hidden" and label:sub (1,1) ~= "#" then - --local _, _, pd = ARDOUR.LuaAPI.plugin_automation(proc, n) - local val = ARDOUR.LuaAPI.get_processor_param(proc, j, true) - print(r:name(), "->", proc:display_name(), label, val) - params[j] = val + + local n = 0 + for j = 0, plug:parameter_count() - 1 do -- Iterate over all plugin parameters + if plug:parameter_is_control(j) then + local label = plug:parameter_label(j) + if plug:parameter_is_input(j) and label ~= "hidden" and label:sub(1,1) ~= "#" then + local _, _, pd = ARDOUR.LuaAPI.plugin_automation(proc, n) + local val = ARDOUR.LuaAPI.get_processor_param(proc, n, true) + + -- Clamp values at plugin max and min + if val < pd.lower then + val = pd.lower + end + + if val > pd.upper then + val = pd.upper + end + + print(r:name(), "->", proc:display_name(), "(#".. n ..")", label, val) + params[n] = val end - n = n + 1 + n = n + 1 end end i = i + 1 |