diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/amp.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/automation_control.h | 8 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_track.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/monitor_processor.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/pan_controllable.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/proxy_controllable.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/route.h | 59 | ||||
-rw-r--r-- | libs/ardour/ardour/track.h | 2 |
9 files changed, 50 insertions, 42 deletions
diff --git a/libs/ardour/ardour/amp.h b/libs/ardour/ardour/amp.h index e8445c4853..c92edcc5fc 100644 --- a/libs/ardour/ardour/amp.h +++ b/libs/ardour/ardour/amp.h @@ -92,7 +92,7 @@ public: range_db = accurate_coefficient_to_dB (_desc.upper) - lower_db; } - void set_value (double val); + void set_value (double val, PBD::Controllable::GroupControlDisposition group_override); void set_value_unchecked (double); double internal_to_interface (double) const; diff --git a/libs/ardour/ardour/automation_control.h b/libs/ardour/ardour/automation_control.h index b26d781e2f..0d065686e2 100644 --- a/libs/ardour/ardour/automation_control.h +++ b/libs/ardour/ardour/automation_control.h @@ -85,9 +85,12 @@ public: * Derived classes MUST call ::writable() to verify * that writing to the parameter is legal at that time. */ - void set_value (double); double get_value () const; - + /* inherited from PBD::Controllable. + * Derived classes MUST call ::writable() to verify + * that writing to the parameter is legal at that time. + */ + void set_value (double value, PBD::Controllable::GroupControlDisposition group_override); /* automation related value setting */ virtual bool writable () const; /* Call to ::set_value() with no test for writable() because @@ -110,7 +113,6 @@ public: void commit_transaction (bool did_write); protected: - ARDOUR::Session& _session; const ParameterDescriptor _desc; diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 80bb743b10..ba418082f8 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -89,7 +89,7 @@ public: , _route (route) {} - void set_value (double val); + void set_value (double val, PBD::Controllable::GroupControlDisposition group_override); void set_value_unchecked (double); bool writable() const { return true; } diff --git a/libs/ardour/ardour/monitor_processor.h b/libs/ardour/ardour/monitor_processor.h index c7d73dca00..ffee1fbbd2 100644 --- a/libs/ardour/ardour/monitor_processor.h +++ b/libs/ardour/ardour/monitor_processor.h @@ -54,7 +54,7 @@ public: /* Controllable API */ - void set_value (double v) { + void set_value (double v, PBD::Controllable::GroupControlDisposition group_override) { T newval = (T) v; if (newval != _value) { _value = std::max (_lower, std::min (_upper, newval)); diff --git a/libs/ardour/ardour/pan_controllable.h b/libs/ardour/ardour/pan_controllable.h index ff00d8119f..77acbee04f 100644 --- a/libs/ardour/ardour/pan_controllable.h +++ b/libs/ardour/ardour/pan_controllable.h @@ -36,7 +36,7 @@ class Pannable; class LIBARDOUR_API PanControllable : public AutomationControl { -public: + public: PanControllable (Session& s, std::string name, Pannable* o, Evoral::Parameter param) : AutomationControl (s, param, @@ -47,10 +47,10 @@ public: {} double lower () const; - void set_value (double); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); void set_value_unchecked (double); -private: + private: Pannable* owner; }; diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index 0873825c02..6b434bef7f 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -95,7 +95,7 @@ class LIBARDOUR_API PluginInsert : public Processor const ParameterDescriptor& desc, boost::shared_ptr<AutomationList> list=boost::shared_ptr<AutomationList>()); - void set_value (double val); + void set_value (double val, PBD::Controllable::GroupControlDisposition group_override); void set_value_unchecked (double); double get_value (void) const; void catch_up_with_external_value (double val); @@ -113,8 +113,7 @@ class LIBARDOUR_API PluginInsert : public Processor const ParameterDescriptor& desc, boost::shared_ptr<AutomationList> list=boost::shared_ptr<AutomationList>()); - void set_value (const Variant& val); - void set_value (double val); + void set_value (double val, PBD::Controllable::GroupControlDisposition group_override); void set_value_unchecked (double); double get_value (void) const; XMLNode& get_state(); diff --git a/libs/ardour/ardour/proxy_controllable.h b/libs/ardour/ardour/proxy_controllable.h index b2f230ec87..c60f5f1b74 100644 --- a/libs/ardour/ardour/proxy_controllable.h +++ b/libs/ardour/ardour/proxy_controllable.h @@ -31,7 +31,7 @@ namespace ARDOUR { */ class LIBARDOUR_API ProxyControllable : public PBD::Controllable { -public: + public: ProxyControllable (const std::string& name, PBD::Controllable::Flag flags, boost::function1<bool,double> setter, boost::function0<double> getter) @@ -40,7 +40,7 @@ public: , _getter (getter) {} - void set_value (double v) { if (_setter (v)) { Changed(); /* EMIT SIGNAL */ } } + void set_value (double v, PBD::Controllable::GroupControlDisposition /*group_override*/) { if (_setter (v)) { Changed(); /* EMIT SIGNAL */ } } double get_value () const { return _getter (); } double internal_to_user (double i) const { return accurate_coefficient_to_dB (i);} @@ -51,7 +51,7 @@ public: return std::string(theBuf); } -private: + private: boost::function1<bool,double> _setter; boost::function0<double> _getter; }; diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 0ef063b29c..2086f32119 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -383,23 +383,44 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou /* Controls (not all directly owned by the Route */ + class RouteAutomationControl : public AutomationControl { + public: + RouteAutomationControl (const std::string& name, + AutomationType atype, + boost::shared_ptr<AutomationList> alist, + boost::shared_ptr<Route> route); + + void set_value (double val, PBD::Controllable::GroupControlDisposition group_override) { + boost::shared_ptr<Route> r = _route.lock(); + if (r) { + r->set_control (*this, val, group_override); + } + } + + protected: + friend class Route; + + void route_set_value (double val) { + AutomationControl::set_value (val, Controllable::NoGroup); + } + + boost::weak_ptr<Route> _route; + }; + boost::shared_ptr<AutomationControl> get_control (const Evoral::Parameter& param); - class SoloControllable : public AutomationControl { + class SoloControllable : public RouteAutomationControl { public: SoloControllable (std::string name, boost::shared_ptr<Route>); - void set_value (double); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); void set_value_unchecked (double); double get_value () const; - - private: - boost::weak_ptr<Route> _route; }; - struct MuteControllable : public AutomationControl { + struct MuteControllable : public RouteAutomationControl { public: MuteControllable (std::string name, boost::shared_ptr<Route>); - void set_value (double); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); void set_value_unchecked (double); double get_value () const; @@ -410,27 +431,18 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou boost::weak_ptr<Route> _route; }; - class LIBARDOUR_API PhaseControllable : public AutomationControl { + class LIBARDOUR_API PhaseControllable : public RouteAutomationControl { public: PhaseControllable (std::string name, boost::shared_ptr<Route>); - void set_value (double); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); void set_channel (uint32_t); double get_value () const; uint32_t channel() const; - private: - boost::weak_ptr<Route> _route; uint32_t _current_phase; }; - class LIBARDOUR_API GroupGainControllable : public AutomationControl { - public: - GroupGainControllable (std::string name, boost::shared_ptr<Route>); - void set_value (double); - double get_value () const; - private: - boost::weak_ptr<Route> _route; - }; + void set_control (RouteAutomationControl&, double val, PBD::Controllable::GroupControlDisposition group_override); boost::shared_ptr<SoloControllable> solo_control() const { return _solo_control; @@ -448,10 +460,6 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou return _phase_control; } - boost::shared_ptr<GroupGainControllable> group_gain_control() const { - return _group_gain_control; - } - /* 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. @@ -544,7 +552,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou bool has_external_redirects() const; /* can only be executed by a route for which is_monitor() is true - (i.e. the monitor out) + (i.e. the monitor out) */ void monitor_run (framepos_t start_frame, framepos_t end_frame, pframes_t nframes, int declick); @@ -635,7 +643,6 @@ 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<GroupGainControllable> _group_gain_control; virtual void act_on_mute () {} @@ -679,7 +686,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou int set_state_2X (const XMLNode&, int); void set_processor_state_2X (XMLNodeList const &, int); - uint32_t _order_key; + uint32_t _order_key; bool _has_order_key; uint32_t _remote_control_id; diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index fa7b1f30bb..5bf887f517 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -206,7 +206,7 @@ class LIBARDOUR_API Track : public Route, public PublicDiskstream struct RecEnableControl : public AutomationControl { RecEnableControl (boost::shared_ptr<Track> t); - void set_value (double); + void set_value (double, PBD::Controllable::GroupControlDisposition); void set_value_unchecked (double); double get_value (void) const; |