mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 12:16:30 +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 (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);
|
||||
|
||||
|
|
|
|||
|
|
@ -197,6 +197,7 @@ class Route : public SessionObject, public AutomatableControls
|
|||
boost::shared_ptr<Send> internal_send_for (boost::shared_ptr<const Route> target) const;
|
||||
BufferSet* get_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.
|
||||
* 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 catch_up_on_solo ();
|
||||
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 modify_solo_mute (bool, bool);
|
||||
void strip_portname_for_solo (std::string& portname);
|
||||
|
|
|
|||
|
|
@ -332,7 +332,8 @@ namespace ARDOUR {
|
|||
|
||||
enum SoloModel {
|
||||
SoloInPlace,
|
||||
SoloBus
|
||||
SoloAFL,
|
||||
SoloPFL
|
||||
};
|
||||
|
||||
enum AutoConnectOption {
|
||||
|
|
|
|||
|
|
@ -229,7 +229,8 @@ setup_enum_writer ()
|
|||
REGISTER (_LayerModel);
|
||||
|
||||
REGISTER_ENUM (SoloInPlace);
|
||||
REGISTER_ENUM (SoloBus);
|
||||
REGISTER_ENUM (SoloAFL);
|
||||
REGISTER_ENUM (SoloPFL);
|
||||
REGISTER (_SoloModel);
|
||||
|
||||
REGISTER_ENUM (AutoConnectPhysical);
|
||||
|
|
|
|||
|
|
@ -522,7 +522,8 @@ Route::mod_solo_level (int32_t delta)
|
|||
}
|
||||
break;
|
||||
|
||||
case SoloBus:
|
||||
case SoloAFL:
|
||||
case SoloPFL:
|
||||
/* control outs are used for soloing */
|
||||
if (_control_outs) {
|
||||
_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);
|
||||
}
|
||||
break;
|
||||
case SoloBus:
|
||||
case SoloAFL:
|
||||
case SoloPFL:
|
||||
if (_control_outs) {
|
||||
_control_outs->set_solo_level (_solo_level);
|
||||
_control_outs->set_solo_isolated (_solo_isolated);
|
||||
|
|
@ -2287,6 +2289,38 @@ Route::set_meter_point (MeterPoint p, void *src)
|
|||
_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
|
||||
Route::update_total_latency ()
|
||||
|
|
|
|||
|
|
@ -4218,3 +4218,28 @@ Session::update_have_rec_enabled_diskstream ()
|
|||
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") {
|
||||
// catch_up_on_solo_mute_override ();
|
||||
} else if (p == "solo-model") {
|
||||
solo_model_changed ();
|
||||
}
|
||||
|
||||
set_dirty ();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue