From 4a2bed08ec57463f8d45f0184fb7a0004ae00f1e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 4 Apr 2024 17:01:24 -0600 Subject: [PATCH] better libardour infrastructure for virtual soundcheck --- libs/ardour/ardour/session.h | 2 ++ libs/ardour/route.cc | 3 ++- libs/ardour/session.cc | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 6a5652b5ec..2cbd0f3fac 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -1411,6 +1411,7 @@ public: void enable_virtual_soundcheck (); void disable_virtual_soundcheck (); + bool virtual_soundcheck() const; PBD::Signal1 VirtualSoundCheckChanged; protected: @@ -2426,6 +2427,7 @@ private: uint32_t _no_file_format_reset; void set_virtual_soundcheck (bool); + bool _virtual_soundcheck; }; diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index d944d1d2ea..3fa9ba11e9 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -2843,6 +2843,7 @@ Route::set_state (const XMLNode& node, int version) _volume_control.reset (new GainControl (_session, MainOutVolume)); _volume_control->set_flag (Controllable::NotAutomatable); _main_outs->set_gain_control (_volume_control); + _volume_control->set_value (_session.virtual_soundcheck() ? 1. : 0., PBD::Controllable::NoGroup); } set_processor_state (processor_state, version); @@ -3537,7 +3538,7 @@ Route::create_master_send () { _master_send.reset (new InternalSend (_session, pannable(), _mute_master, std::dynamic_pointer_cast (shared_from_this()), _session.master_out(), Delivery::MasterSend, false)); _master_send->set_display_to_user (false); - _master_send->gain_control()->set_value (dB_to_coefficient (0.0), Controllable::NoGroup); + _master_send->gain_control()->set_value (_session.virtual_soundcheck() ? 0. : 1., Controllable::NoGroup); } void diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index d9303948a7..bd44230334 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -349,6 +349,7 @@ Session::Session (AudioEngine &eng, , _active_cue (-1) , tb_with_filled_slots (0) , _no_file_format_reset (0) + , _virtual_soundcheck (false) { _suspend_save.store (0); _playback_load.store (0); @@ -8254,6 +8255,10 @@ Session::disable_virtual_soundcheck () void Session::set_virtual_soundcheck (bool yn) { + if (!Profile->get_livetrax()) { + return; + } + std::shared_ptr rl = routes.reader (); std::shared_ptr master_sends (new AutomationControlList); std::shared_ptr main_outs (new AutomationControlList); @@ -8277,5 +8282,17 @@ Session::set_virtual_soundcheck (bool yn) set_controls (main_outs, main_val, PBD::Controllable::NoGroup); } + _virtual_soundcheck = yn; + VirtualSoundCheckChanged (yn); /* EMIT SIGNAL */ } + +bool +Session::virtual_soundcheck () const +{ + if (!Profile->get_livetrax()) { + return false; + } + + return _virtual_soundcheck; +}