mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 19:56:31 +01:00
remove SoloBus solo model, add PFL and AFL. basic testing indicates it works, but probably some oddities.
git-svn-id: svn://localhost/ardour2/branches/3.0@5210 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
daf0e333a9
commit
566ce55736
8 changed files with 71 additions and 5 deletions
|
|
@ -1090,7 +1090,8 @@ RCOptionEditor::RCOptionEditor ()
|
||||||
);
|
);
|
||||||
|
|
||||||
sm->add (SoloInPlace, _("in place"));
|
sm->add (SoloInPlace, _("in place"));
|
||||||
sm->add (SoloBus, _("via bus"));
|
sm->add (SoloAFL, _("post-fader listen via monitor bus"));
|
||||||
|
sm->add (SoloPFL, _("pre-fader listen via monitor bus"));
|
||||||
|
|
||||||
add_option (_("Audio"), sm);
|
add_option (_("Audio"), sm);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -197,6 +197,7 @@ class Route : public SessionObject, public AutomatableControls
|
||||||
boost::shared_ptr<Send> internal_send_for (boost::shared_ptr<const Route> target) const;
|
boost::shared_ptr<Send> internal_send_for (boost::shared_ptr<const Route> target) const;
|
||||||
BufferSet* get_return_buffer () const;
|
BufferSet* get_return_buffer () const;
|
||||||
void release_return_buffer () const;
|
void release_return_buffer () const;
|
||||||
|
void put_control_outs_at (Placement);
|
||||||
|
|
||||||
/** A record of the stream configuration at some point in the processor list.
|
/** A record of the stream configuration at some point in the processor list.
|
||||||
* Used to return where and why an processor list configuration request failed.
|
* Used to return where and why an processor list configuration request failed.
|
||||||
|
|
|
||||||
|
|
@ -1465,6 +1465,7 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
|
||||||
void route_solo_changed (void *src, boost::weak_ptr<Route>);
|
void route_solo_changed (void *src, boost::weak_ptr<Route>);
|
||||||
void catch_up_on_solo ();
|
void catch_up_on_solo ();
|
||||||
void catch_up_on_solo_mute_override ();
|
void catch_up_on_solo_mute_override ();
|
||||||
|
void solo_model_changed ();
|
||||||
void update_route_solo_state (boost::shared_ptr<RouteList> r = boost::shared_ptr<RouteList>());
|
void update_route_solo_state (boost::shared_ptr<RouteList> r = boost::shared_ptr<RouteList>());
|
||||||
void modify_solo_mute (bool, bool);
|
void modify_solo_mute (bool, bool);
|
||||||
void strip_portname_for_solo (std::string& portname);
|
void strip_portname_for_solo (std::string& portname);
|
||||||
|
|
|
||||||
|
|
@ -332,7 +332,8 @@ namespace ARDOUR {
|
||||||
|
|
||||||
enum SoloModel {
|
enum SoloModel {
|
||||||
SoloInPlace,
|
SoloInPlace,
|
||||||
SoloBus
|
SoloAFL,
|
||||||
|
SoloPFL
|
||||||
};
|
};
|
||||||
|
|
||||||
enum AutoConnectOption {
|
enum AutoConnectOption {
|
||||||
|
|
|
||||||
|
|
@ -229,7 +229,8 @@ setup_enum_writer ()
|
||||||
REGISTER (_LayerModel);
|
REGISTER (_LayerModel);
|
||||||
|
|
||||||
REGISTER_ENUM (SoloInPlace);
|
REGISTER_ENUM (SoloInPlace);
|
||||||
REGISTER_ENUM (SoloBus);
|
REGISTER_ENUM (SoloAFL);
|
||||||
|
REGISTER_ENUM (SoloPFL);
|
||||||
REGISTER (_SoloModel);
|
REGISTER (_SoloModel);
|
||||||
|
|
||||||
REGISTER_ENUM (AutoConnectPhysical);
|
REGISTER_ENUM (AutoConnectPhysical);
|
||||||
|
|
|
||||||
|
|
@ -522,7 +522,8 @@ Route::mod_solo_level (int32_t delta)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SoloBus:
|
case SoloAFL:
|
||||||
|
case SoloPFL:
|
||||||
/* control outs are used for soloing */
|
/* control outs are used for soloing */
|
||||||
if (_control_outs) {
|
if (_control_outs) {
|
||||||
_control_outs->set_solo_level (_solo_level);
|
_control_outs->set_solo_level (_solo_level);
|
||||||
|
|
@ -558,7 +559,8 @@ Route::set_solo_isolated (bool yn, void *src)
|
||||||
_main_outs->set_solo_isolated (false);
|
_main_outs->set_solo_isolated (false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SoloBus:
|
case SoloAFL:
|
||||||
|
case SoloPFL:
|
||||||
if (_control_outs) {
|
if (_control_outs) {
|
||||||
_control_outs->set_solo_level (_solo_level);
|
_control_outs->set_solo_level (_solo_level);
|
||||||
_control_outs->set_solo_isolated (_solo_isolated);
|
_control_outs->set_solo_isolated (_solo_isolated);
|
||||||
|
|
@ -2287,6 +2289,38 @@ Route::set_meter_point (MeterPoint p, void *src)
|
||||||
_session.set_dirty ();
|
_session.set_dirty ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void
|
||||||
|
Route::put_control_outs_at (Placement p)
|
||||||
|
{
|
||||||
|
if (!_control_outs) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move meter in the processors list
|
||||||
|
ProcessorList::iterator loc = find(_processors.begin(), _processors.end(), _control_outs);
|
||||||
|
_processors.erase(loc);
|
||||||
|
|
||||||
|
switch (p) {
|
||||||
|
case PreFader:
|
||||||
|
loc = find(_processors.begin(), _processors.end(), _amp);
|
||||||
|
if (loc != _processors.begin()) {
|
||||||
|
--loc;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PostFader:
|
||||||
|
loc = find(_processors.begin(), _processors.end(), _amp);
|
||||||
|
assert (loc != _processors.end());
|
||||||
|
loc++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
_processors.insert(loc, _control_outs);
|
||||||
|
|
||||||
|
cerr << _name << " moved control outs to " << enum_2_string (p) << endl;
|
||||||
|
|
||||||
|
processors_changed (); /* EMIT SIGNAL */
|
||||||
|
_session.set_dirty ();
|
||||||
|
}
|
||||||
|
|
||||||
nframes_t
|
nframes_t
|
||||||
Route::update_total_latency ()
|
Route::update_total_latency ()
|
||||||
|
|
|
||||||
|
|
@ -4218,3 +4218,28 @@ Session::update_have_rec_enabled_diskstream ()
|
||||||
RecordStateChanged (); /* EMIT SIGNAL */
|
RecordStateChanged (); /* EMIT SIGNAL */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Session::solo_model_changed ()
|
||||||
|
{
|
||||||
|
Placement p;
|
||||||
|
|
||||||
|
switch (Config->get_solo_model()) {
|
||||||
|
case SoloInPlace:
|
||||||
|
return;
|
||||||
|
|
||||||
|
case SoloAFL:
|
||||||
|
p = PostFader;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SoloPFL:
|
||||||
|
p = PreFader;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
boost::shared_ptr<RouteList> r = routes.reader ();
|
||||||
|
|
||||||
|
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
|
||||||
|
(*i)->put_control_outs_at (p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -3211,6 +3211,8 @@ Session::config_changed (std::string p, bool ours)
|
||||||
}
|
}
|
||||||
} else if (p == "solo-mute-override") {
|
} else if (p == "solo-mute-override") {
|
||||||
// catch_up_on_solo_mute_override ();
|
// catch_up_on_solo_mute_override ();
|
||||||
|
} else if (p == "solo-model") {
|
||||||
|
solo_model_changed ();
|
||||||
}
|
}
|
||||||
|
|
||||||
set_dirty ();
|
set_dirty ();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue