add some enums and rc vars related to master send/return design

This commit is contained in:
Paul Davis 2024-03-29 12:42:04 -06:00
parent d92a9e59df
commit 4c5b620723
7 changed files with 37 additions and 24 deletions

View File

@ -56,7 +56,9 @@ public:
/* aux - internal send used to deliver to any bus, by user request */
Aux = 0x10,
/* foldback - internal send used only to deliver to a personal monitor bus */
Foldback = 0x20
Foldback = 0x20,
/* master send - used only with LiveTrax, delivers to master bus */
MasterSend = 0x40
};
static bool role_requires_output_ports (Role r) { return r == Main || r == Send || r == Insert; }

View File

@ -42,11 +42,12 @@ class LIBARDOUR_API MuteMaster : public SessionHandleRef, public PBD::Stateful
public:
/** deliveries to mute when the channel is "muted" */
enum MutePoint {
PreFader = 0x1, ///< mute all pre-fader sends
PostFader = 0x2, ///< mute all post-fader sends
Listen = 0x4, ///< mute listen out
Main = 0x8, ///< mute main out
SurroundSend = 0x10 ///< mute surround send (if any)
PreFader = 0x1, ///< mute all pre-fader sends
PostFader = 0x2, ///< mute all post-fader sends
Listen = 0x4, ///< mute listen out
Main = 0x8, ///< mute main out
SurroundSend = 0x10, ///< mute surround send (if any)
MasterSend = 0x20 ///< mute master send (LiveTrax only)
};
static const MutePoint AllPoints;

View File

@ -129,6 +129,7 @@ CONFIG_VARIABLE (bool, mute_affects_post_fader, "mute-affects-post-fader", true)
CONFIG_VARIABLE (bool, mute_affects_control_outs, "mute-affects-control-outs", true)
CONFIG_VARIABLE (bool, mute_affects_main_outs, "mute-affects-main-outs", true)
CONFIG_VARIABLE (bool, mute_affects_surround_sends, "mute-affects-surround-sends", true)
CONFIG_VARIABLE (bool, mute_affects_master_sends, "mute-affects-master-sends", true)
CONFIG_VARIABLE (MonitorModel, monitoring_model, "monitoring-model", ExternalMonitoring)
CONFIG_VARIABLE (ListenPosition, listen_position, "listen-position", AfterFaderListen)
CONFIG_VARIABLE (PFLPosition, pfl_position, "pfl-position", PFLFromAfterProcessors)

View File

@ -589,22 +589,25 @@ Delivery::target_gain ()
MuteMaster::MutePoint mp = MuteMaster::Main; // stupid gcc uninit warning
switch (_role) {
case Main:
mp = MuteMaster::Main;
break;
case Listen:
mp = MuteMaster::Listen;
break;
case Send:
case Insert:
case Aux:
case Foldback:
if (_pre_fader) {
mp = MuteMaster::PreFader;
} else {
mp = MuteMaster::PostFader;
}
break;
case Main:
mp = MuteMaster::Main;
break;
case Listen:
mp = MuteMaster::Listen;
break;
case MasterSend:
mp = MuteMaster::MasterSend;
break;
case Send:
case Insert:
case Aux:
case Foldback:
if (_pre_fader) {
mp = MuteMaster::PreFader;
} else {
mp = MuteMaster::PostFader;
}
break;
}
gain_t desired_gain = _mute_master->mute_gain_at (mp);

View File

@ -731,6 +731,7 @@ setup_enum_writer ()
REGISTER_CLASS_ENUM (Delivery, Main);
REGISTER_CLASS_ENUM (Delivery, Aux);
REGISTER_CLASS_ENUM (Delivery, Foldback);
REGISTER_CLASS_ENUM (Delivery, MasterSend);
REGISTER_BITS (_Delivery_Role);
REGISTER_CLASS_ENUM (MuteMaster, PreFader);
@ -738,6 +739,7 @@ setup_enum_writer ()
REGISTER_CLASS_ENUM (MuteMaster, Listen);
REGISTER_CLASS_ENUM (MuteMaster, Main);
REGISTER_CLASS_ENUM (MuteMaster, SurroundSend);
REGISTER_CLASS_ENUM (MuteMaster, MasterSend);
REGISTER_BITS (_MuteMaster_MutePoint);
REGISTER_CLASS_ENUM (IO, Input);

View File

@ -39,7 +39,7 @@ using namespace std;
const string MuteMaster::xml_node_name (X_("MuteMaster"));
const MuteMaster::MutePoint MuteMaster::AllPoints = MuteMaster::MutePoint(
PreFader|PostFader|Listen|Main|SurroundSend);
PreFader|PostFader|Listen|Main|SurroundSend|MasterSend);
MuteMaster::MuteMaster (Session& s, Muteable& m, const std::string&)
: SessionHandleRef (s)
@ -70,6 +70,10 @@ MuteMaster::MuteMaster (Session& s, Muteable& m, const std::string&)
if (Config->get_mute_affects_surround_sends ()) {
_mute_point = MutePoint (_mute_point | SurroundSend);
}
if (Config->get_mute_affects_master_sends ()) {
_mute_point = MutePoint (_mute_point | MasterSend);
}
}
void

View File

@ -317,7 +317,7 @@ Route::init ()
}
if (Profile->get_livetrax() && is_track()) {
_master_send.reset (new InternalSend (_session, _pannable, _mute_master, std::dynamic_pointer_cast<Route> (shared_from_this()), std::shared_ptr<Route>(), Delivery::Aux, false));
_master_send.reset (new InternalSend (_session, _pannable, _mute_master, std::dynamic_pointer_cast<Route> (shared_from_this()), std::shared_ptr<Route>(), Delivery::MasterSend, false));
_master_send->set_display_to_user (false);
}