ardour {\r
- ["type"] = "EditorAction",\r
- name = "Reset Mixer",\r
- license = "MIT",\r
- author = "Ben Loftis, Nikolaus Gullotta, Maxime Lecoq",\r
- description = [[Resets key Mixer settings after user-prompt (warning: this cannot be undone)]]\r
+ ["type"] = "EditorAction",\r
+ name = "Reset Mixer",\r
+ license = "MIT",\r
+ author = "Ben Loftis, Nikolaus Gullotta, Maxime Lecoq",\r
+ description = [[Resets key Mixer settings after user-prompt (warning: this cannot be undone)]]\r
}\r
\r
function factory() return function()\r
- local sp_radio_buttons = {Bypass="bypass", Remove="remove", Nothing=false}\r
- local dlg = {\r
- {type="label", align="left", colspan="3", title="Please select below the items you want to reset:" },\r
- {type="label", align="left", colspan="3", title="(Warning: this cannot be undone!)\n" },\r
-\r
- {type="heading", align ="center", colspan="3", title = "Common Controls:" },\r
- {type="checkbox", key="fader", default=true, title="Fader" },\r
- {type="checkbox", key="mute", default=true, title="Mute" },\r
- {type="checkbox", key="solo", default=true, title="Solo" },\r
- {type="checkbox", key="trim", default=true, title="Trim" },\r
- {type="checkbox", key="pan", default=true, title="Pan (All)" },\r
- {type="checkbox", key="phase", default=true, title="Phase" },\r
- {type="checkbox", key="sends", default=true, title="Sends" },\r
- {type="checkbox", key="eq", default=true, title="EQ" },\r
- {type="checkbox", key="comp", default=true, title="Compressor" },\r
- \r
- {type="heading", align="center", colspan="3", title="Processors:" },\r
- {type="radio", key="plugins", title="Plug-ins", values=sp_radio_buttons, default="Bypass" },\r
- {type="radio", key="io", title="Sends/Inserts", values=sp_radio_buttons, default="Bypass" },\r
-\r
- {type="hseparator", title=""},\r
- \r
- {type="heading", align="center", colspan="3", title="Misc." },\r
- {type="checkbox", key="auto", colspan="3", title = "Automation (switch to manual mode)" },\r
- {type="checkbox", key="groups", colspan="3", title = "Groups" },\r
- }\r
-\r
- function reset(ctrl, disp, auto)\r
- local disp = disp or PBD.GroupControlDisposition.NoGroup\r
-\r
- if not(ctrl:isnil()) then\r
- local pd = ctrl:desc()\r
- ctrl:set_value(pd.normal, disp)\r
-\r
- if auto then\r
- ctrl:set_automation_state(auto)\r
- end\r
- end\r
- end\r
-\r
- function reset_eq_controls(route, disp, auto)\r
- if route:isnil() then\r
- return\r
- end\r
- \r
- local disp = disp or PBD.GroupControlDisposition.NoGroup\r
-\r
- reset(route:eq_enable_controllable(), disp, auto)\r
-\r
- local i = 0\r
- repeat\r
- for _,ctrl in pairs({\r
- route:eq_freq_controllable(i),\r
- route:eq_gain_controllable(i),\r
- route:eq_q_controllable(i),\r
- }) do\r
- reset(ctrl, disp, auto)\r
- end\r
- i = i + 1\r
- until route:eq_freq_controllable(i):isnil()\r
- end\r
-\r
- function reset_comp_controls(route, disp, auto)\r
- if route:isnil() then\r
- return\r
- end\r
-\r
- local disp = disp or PBD.GroupControlDisposition.NoGroup\r
-\r
- for _,ctrl in pairs({\r
- route:comp_enable_controllable(),\r
- route:comp_makeup_controllable(),\r
- route:comp_mode_controllable(),\r
- route:comp_speed_controllable(),\r
- route:comp_threshold_controllable(),\r
- }) do\r
- reset(ctrl, disp, auto)\r
- end\r
- end\r
-\r
- function reset_send_controls(route, disp, auto)\r
- if route:isnil() then\r
- return\r
- end\r
-\r
- local disp = disp or PBD.GroupControlDisposition.NoGroup\r
-\r
- local i = 0\r
- repeat\r
- for _,ctrl in pairs({\r
- route:send_level_controllable(i),\r
- route:send_enable_controllable(i),\r
- route:send_pan_azimuth_controllable(i),\r
- route:send_pan_azimuth_enable_controllable(i),\r
- }) do\r
- reset(ctrl, disp, auto)\r
- end\r
- i = i + 1\r
- until route:send_enable_controllable(i):isnil()\r
- end\r
-\r
- function reset_plugins(route, prefs)\r
- if route:isnil() then\r
- return\r
- end\r
-\r
- local i = 0\r
- repeat \r
- local proc = route:nth_processor(i)\r
- if not(proc:isnil()) then\r
- \r
- if prefs["plugins"] then\r
- local insert = proc:to_insert()\r
- if not(insert:isnil()) then\r
- if insert:is_channelstrip() or not(insert:display_to_user()) then\r
- ARDOUR.LuaAPI.reset_processor_to_default(insert)\r
- else\r
- if prefs["plugins"] == "remove" then\r
- route:remove_processor(proc, nil, true)\r
- else\r
- insert:deactivate()\r
- end\r
- end\r
- end\r
- end\r
-\r
- if prefs["io"] then\r
- local io_proc = proc:to_ioprocessor()\r
- if not(io_proc:isnil()) then\r
- if prefs["io"] == "remove" then\r
- route:remove_processor(proc, nil, true)\r
- else\r
- io_proc:deactivate()\r
- end\r
- end\r
- end\r
- end\r
- i = i + 1\r
- until proc:isnil()\r
- end\r
-\r
- local pref = LuaDialog.Dialog("Reset Mixer", dlg):run()\r
- \r
- if not(pref) then goto pass_script end\r
+ local sp_radio_buttons = {Bypass="bypass", Remove="remove", Nothing=false}\r
+ local dlg = {\r
+ {type="label", align="left", colspan="3", title="Please select below the items you want to reset:" },\r
+ {type="label", align="left", colspan="3", title="(Warning: this cannot be undone!)\n" },\r
+\r
+ {type="heading", align ="center", colspan="3", title = "Common Controls:" },\r
+ {type="checkbox", key="fader", default=true, title="Fader" },\r
+ {type="checkbox", key="mute", default=true, title="Mute" },\r
+ {type="checkbox", key="solo", default=true, title="Solo" },\r
+ {type="checkbox", key="trim", default=true, title="Trim" },\r
+ {type="checkbox", key="pan", default=true, title="Pan (All)" },\r
+ {type="checkbox", key="phase", default=true, title="Phase" },\r
+ {type="checkbox", key="sends", default=true, title="Sends" },\r
+ {type="checkbox", key="eq", default=true, title="EQ" },\r
+ {type="checkbox", key="comp", default=true, title="Compressor" },\r
+\r
+ {type="heading", align="center", colspan="3", title="Processors:" },\r
+ {type="radio", key="plugins", title="Plug-ins", values=sp_radio_buttons, default="Bypass" },\r
+ {type="radio", key="io", title="Sends/Inserts", values=sp_radio_buttons, default="Bypass" },\r
+\r
+ {type="hseparator", title=""},\r
+\r
+ {type="heading", align="center", colspan="3", title="Misc." },\r
+ {type="checkbox", key="auto", colspan="3", title = "Automation (switch to manual mode)" },\r
+ {type="checkbox", key="groups", colspan="3", title = "Groups" },\r
+ }\r
+\r
+ function reset(ctrl, disp, auto)\r
+ local disp = disp or PBD.GroupControlDisposition.NoGroup\r
+\r
+ if not(ctrl:isnil()) then\r
+ local pd = ctrl:desc()\r
+ ctrl:set_value(pd.normal, disp)\r
+\r
+ if auto then\r
+ ctrl:set_automation_state(auto)\r
+ end\r
+ end\r
+ end\r
+\r
+ function reset_eq_controls(route, disp, auto)\r
+ if route:isnil() then\r
+ return\r
+ end\r
+\r
+ local disp = disp or PBD.GroupControlDisposition.NoGroup\r
+\r
+ reset(route:eq_enable_controllable(), disp, auto)\r
+\r
+ local i = 0\r
+ repeat\r
+ for _,ctrl in pairs({\r
+ route:eq_freq_controllable(i),\r
+ route:eq_gain_controllable(i),\r
+ route:eq_q_controllable(i),\r
+ }) do\r
+ reset(ctrl, disp, auto)\r
+ end\r
+ i = i + 1\r
+ until route:eq_freq_controllable(i):isnil()\r
+ end\r
+\r
+ function reset_comp_controls(route, disp, auto)\r
+ if route:isnil() then\r
+ return\r
+ end\r
+\r
+ local disp = disp or PBD.GroupControlDisposition.NoGroup\r
+\r
+ for _,ctrl in pairs({\r
+ route:comp_enable_controllable(),\r
+ route:comp_makeup_controllable(),\r
+ route:comp_mode_controllable(),\r
+ route:comp_speed_controllable(),\r
+ route:comp_threshold_controllable(),\r
+ }) do\r
+ reset(ctrl, disp, auto)\r
+ end\r
+ end\r
+\r
+ function reset_send_controls(route, disp, auto)\r
+ if route:isnil() then\r
+ return\r
+ end\r
+\r
+ local disp = disp or PBD.GroupControlDisposition.NoGroup\r
+\r
+ local i = 0\r
+ repeat\r
+ for _,ctrl in pairs({\r
+ route:send_level_controllable(i),\r
+ route:send_enable_controllable(i),\r
+ route:send_pan_azimuth_controllable(i),\r
+ route:send_pan_azimuth_enable_controllable(i),\r
+ }) do\r
+ reset(ctrl, disp, auto)\r
+ end\r
+ i = i + 1\r
+ until route:send_enable_controllable(i):isnil()\r
+ end\r
+\r
+ function reset_plugins(route, prefs)\r
+ if route:isnil() then\r
+ return\r
+ end\r
+\r
+ local i = 0\r
+ repeat\r
+ local proc = route:nth_processor(i)\r
+ if not(proc:isnil()) then\r
+\r
+ if prefs["plugins"] then\r
+ local insert = proc:to_insert()\r
+ if not(insert:isnil()) then\r
+ if insert:is_channelstrip() or not(insert:display_to_user()) then\r
+ ARDOUR.LuaAPI.reset_processor_to_default(insert)\r
+ else\r
+ if prefs["plugins"] == "remove" then\r
+ route:remove_processor(proc, nil, true)\r
+ else\r
+ insert:deactivate()\r
+ end\r
+ end\r
+ end\r
+ end\r
+\r
+ if prefs["io"] then\r
+ local io_proc = proc:to_ioprocessor()\r
+ if not(io_proc:isnil()) then\r
+ if prefs["io"] == "remove" then\r
+ route:remove_processor(proc, nil, true)\r
+ else\r
+ io_proc:deactivate()\r
+ end\r
+ end\r
+ end\r
+ end\r
+ i = i + 1\r
+ until proc:isnil()\r
+ end\r
+\r
+ local pref = LuaDialog.Dialog("Reset Mixer", dlg):run()\r
+\r
+ if not(pref) then goto pass_script end\r
assert(pref, "Dialog box was cancelled or is nil")\r
\r
- for route in Session:get_routes():iter() do\r
- local disp = PBD.GroupControlDisposition.NoGroup\r
- local auto = nil\r
- \r
- if pref["auto"] then\r
- auto = ARDOUR.AutoState.Off\r
- end\r
- \r
- if pref["eq"] then reset_eq_controls(route, disp, auto) end\r
- if pref["comp"] then reset_comp_controls(route, disp, auto) end\r
- if pref["sends"] then reset_send_controls(route, disp, auto) end\r
- reset_plugins(route, pref)\r
-\r
- if pref["fader"] then\r
- reset(route:gain_control(), disp, auto)\r
- end\r
- \r
- if pref["phase"] then\r
- reset(route:phase_control(), disp, auto)\r
- end\r
-\r
- if pref["trim"] then\r
- reset(route:trim_control(), disp, auto)\r
- end\r
-\r
- if pref["mute"] then\r
- reset(route:mute_control(), disp, auto)\r
- end\r
-\r
- if pref["solo"] then\r
- reset(route:solo_control(), disp, auto)\r
- end\r
-\r
- if pref["pan"] then\r
- reset(route:pan_azimuth_control(), disp, auto)\r
- reset(route:pan_elevation_control(), disp, auto)\r
- reset(route:pan_frontback_control(), disp, auto)\r
- reset(route:pan_lfe_control(), disp, auto)\r
- reset(route:pan_width_control(), disp, auto)\r
- end\r
- end\r
-\r
- if pref["groups"] then\r
- for group in Session:route_groups():iter() do\r
- Session:remove_route_group(group)\r
- end\r
- end\r
- ::pass_script::\r
- collectgarbage()\r
+ for route in Session:get_routes():iter() do\r
+ local disp = PBD.GroupControlDisposition.NoGroup\r
+ local auto = nil\r
+\r
+ if pref["auto"] then\r
+ auto = ARDOUR.AutoState.Off\r
+ end\r
+\r
+ if pref["eq"] then reset_eq_controls(route, disp, auto) end\r
+ if pref["comp"] then reset_comp_controls(route, disp, auto) end\r
+ if pref["sends"] then reset_send_controls(route, disp, auto) end\r
+ reset_plugins(route, pref)\r
+\r
+ if pref["fader"] then\r
+ reset(route:gain_control(), disp, auto)\r
+ end\r
+\r
+ if pref["phase"] then\r
+ reset(route:phase_control(), disp, auto)\r
+ end\r
+\r
+ if pref["trim"] then\r
+ reset(route:trim_control(), disp, auto)\r
+ end\r
+\r
+ if pref["mute"] then\r
+ reset(route:mute_control(), disp, auto)\r
+ end\r
+\r
+ if pref["solo"] then\r
+ reset(route:solo_control(), disp, auto)\r
+ end\r
+\r
+ if pref["pan"] then\r
+ reset(route:pan_azimuth_control(), disp, auto)\r
+ reset(route:pan_elevation_control(), disp, auto)\r
+ reset(route:pan_frontback_control(), disp, auto)\r
+ reset(route:pan_lfe_control(), disp, auto)\r
+ reset(route:pan_width_control(), disp, auto)\r
+ end\r
+ end\r
+\r
+ if pref["groups"] then\r
+ for group in Session:route_groups():iter() do\r
+ Session:remove_route_group(group)\r
+ end\r
+ end\r
+ ::pass_script::\r
+ collectgarbage()\r
end end
\ No newline at end of file