From 4dffe6e26e4b74b901e741ea0fe49bfda4e0d629 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 21 Jul 2020 05:50:12 +0200 Subject: [PATCH] Make master-output-volume optional --- libs/ardour/ardour/rc_configuration_vars.h | 1 + libs/ardour/route.cc | 5 +++-- libs/ardour/session_state.cc | 8 ++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 87dd884f2f..9c20eeb8fb 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -133,6 +133,7 @@ CONFIG_VARIABLE (bool, all_safe, "all-safe", false) CONFIG_VARIABLE (bool, show_solo_mutes, "show-solo-mutes", true) CONFIG_VARIABLE (bool, solo_mute_override, "solo-mute-override", false) CONFIG_VARIABLE (bool, auto_input_does_talkback, "auto-input-does-talkback", false) +CONFIG_VARIABLE (bool, use_master_volume, "use-master-volume", false) CONFIG_VARIABLE (gain_t, solo_mute_gain, "solo-mute-gain", 0.0) CONFIG_VARIABLE (std::string, monitor_bus_preferred_bundle, "monitor-bus-preferred-bundle", "") CONFIG_VARIABLE (bool, quieten_at_speed, "quieten-at-speed", true) diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 370caa46c5..767948c60d 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -256,8 +256,9 @@ Route::init () if (is_master()) { _volume_control.reset (new GainControl (_session, MainOutVolume)); _volume_control->set_flag (Controllable::NotAutomatable); - //add_control (_volume_control); - _main_outs->add_gain (_volume_control); + if (Config->get_use_master_volume ()) { + _main_outs->add_gain (_volume_control); + } } _main_outs->activate (); diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 0a46da2e4e..224bc57bf3 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -4236,6 +4236,14 @@ Session::config_changed (std::string p, bool ours) } else if (p == "loop-fade-choice") { last_loopend = 0; /* force locate to refill buffers with new loop boundary data */ auto_loop_changed (_locations->auto_loop_location()); + } else if (p == "use-master-volume") { + if (master_volume ()) { + bool en = Config->get_use_master_volume (); + _master_out->main_outs()->add_gain (en ? master_volume () : boost::shared_ptr ()); + if (!en) { + master_volume ()->set_value (GAIN_COEFF_UNITY, Controllable::NoGroup); + } + } } set_dirty ();