diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-01-31 21:49:18 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-01-31 21:49:18 -0500 |
commit | c56058b9de7b5e2d87fa0d04d94042ced25b6d51 (patch) | |
tree | ba8b859670eb46dbf22da59b5a93bc78fab6ce11 /libs/ardour/ardour/route.h | |
parent | d4258b1358bf2560f5bd465ce7d0953145b67eab (diff) |
provide route solo isolate and solo safe automation controls
Diffstat (limited to 'libs/ardour/ardour/route.h')
-rw-r--r-- | libs/ardour/ardour/route.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index a75ef5f6a6..dce7caed02 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -417,6 +417,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou void set_value (double val, PBD::Controllable::GroupControlDisposition group_override) { boost::shared_ptr<Route> r = _route.lock(); if (r) { + /* Route must mediate group control */ r->set_control ((AutomationType) parameter().type(), val, group_override); } } @@ -469,6 +470,28 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); }; + class LIBARDOUR_API SoloIsolateControllable : public RouteAutomationControl { + public: + SoloIsolateControllable (std::string name, boost::shared_ptr<Route>); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); + /* currently no automation, so no need for set_value_unchecked() */ + double get_value () const; + private: + void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); + static ParameterDescriptor get_descriptor (); + }; + + class LIBARDOUR_API SoloSafeControllable : public RouteAutomationControl { + public: + SoloSafeControllable (std::string name, boost::shared_ptr<Route>); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); + /* currently no automation, so no need for set_value_unchecked() */ + double get_value () const; + private: + void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); + static ParameterDescriptor get_descriptor (); + }; + void set_control (AutomationType, double val, PBD::Controllable::GroupControlDisposition group_override); boost::shared_ptr<SoloControllable> solo_control() const { @@ -487,6 +510,21 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou return _phase_control; } + boost::shared_ptr<SoloIsolateControllable> solo_isolate_control() const { + return _solo_isolate_control; + } + + boost::shared_ptr<SoloSafeControllable> solo_safe_control() const { + return _solo_safe_control; + } + + boost::shared_ptr<AutomationControl> monitoring_control() const { + /* tracks override this to provide actual monitoring control; + busses have no possible choices except input monitoring. + */ + return boost::shared_ptr<AutomationControl> (); + } + /* Route doesn't own these items, but sub-objects that it does own have them and to make UI code a bit simpler, we provide direct access to them here. @@ -692,6 +730,8 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou boost::shared_ptr<MuteControllable> _mute_control; boost::shared_ptr<MuteMaster> _mute_master; boost::shared_ptr<PhaseControllable> _phase_control; + boost::shared_ptr<SoloIsolateControllable> _solo_isolate_control; + boost::shared_ptr<SoloSafeControllable> _solo_safe_control; virtual void act_on_mute () {} |