diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/gain_control.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_track.h | 7 | ||||
-rw-r--r-- | libs/ardour/ardour/pan_controllable.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/route.h | 35 | ||||
-rw-r--r-- | libs/ardour/ardour/route_group.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/route_group_member.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/route_group_specialized.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 46 | ||||
-rw-r--r-- | libs/ardour/ardour/track.h | 12 |
10 files changed, 70 insertions, 50 deletions
diff --git a/libs/ardour/ardour/gain_control.h b/libs/ardour/ardour/gain_control.h index 17c250151a..07a900a164 100644 --- a/libs/ardour/ardour/gain_control.h +++ b/libs/ardour/ardour/gain_control.h @@ -33,7 +33,8 @@ namespace ARDOUR { class Session; -struct LIBARDOUR_API GainControl : public AutomationControl { +class LIBARDOUR_API GainControl : public AutomationControl { + public: GainControl (Session& session, const Evoral::Parameter ¶m, boost::shared_ptr<AutomationList> al = boost::shared_ptr<AutomationList>()); @@ -48,6 +49,8 @@ struct LIBARDOUR_API GainControl : public AutomationControl { double lower_db; double range_db; + private: + void _set_value (double val, PBD::Controllable::GroupControlDisposition group_override); }; } /* namespace */ diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index ba418082f8..a007757679 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -50,8 +50,8 @@ public: boost::shared_ptr<Diskstream> create_diskstream (); void set_diskstream (boost::shared_ptr<Diskstream>); - void set_record_enabled (bool yn, void *src); - void set_record_safe (bool yn, void *src); + void set_record_enabled (bool yn, PBD::Controllable::GroupControlDisposition); + void set_record_safe (bool yn, PBD::Controllable::GroupControlDisposition); DataType data_type () const { return DataType::MIDI; @@ -94,6 +94,9 @@ public: bool writable() const { return true; } MidiTrack* _route; + + private: + void _set_value (double val, PBD::Controllable::GroupControlDisposition group_override); }; virtual void set_parameter_automation_state (Evoral::Parameter param, AutoState); diff --git a/libs/ardour/ardour/pan_controllable.h b/libs/ardour/ardour/pan_controllable.h index 77acbee04f..85a4efe2fc 100644 --- a/libs/ardour/ardour/pan_controllable.h +++ b/libs/ardour/ardour/pan_controllable.h @@ -52,6 +52,7 @@ class LIBARDOUR_API PanControllable : public AutomationControl private: Pannable* owner; + void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); }; } // namespace diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index 6b434bef7f..ffa55b9eaa 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -103,6 +103,7 @@ class LIBARDOUR_API PluginInsert : public Processor private: PluginInsert* _plugin; + void _set_value (double val, PBD::Controllable::GroupControlDisposition group_override); }; /** A control that manipulates a plugin property (message). */ diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index e3eec71078..5351d8490a 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -128,9 +128,9 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou virtual bool can_record() { return false; } - virtual void set_record_enabled (bool /*yn*/, void * /*src*/) {} + virtual void set_record_enabled (bool /*yn*/, PBD::Controllable::GroupControlDisposition) {} virtual bool record_enabled() const { return false; } - virtual void set_record_safe (bool yn, void *src) {} + virtual void set_record_safe (bool /*yn*/, PBD::Controllable::GroupControlDisposition) {} virtual bool record_safe () const {return false; } virtual void nonrealtime_handle_transport_stopped (bool abort, bool did_locate, bool flush_processors); virtual void realtime_handle_transport_stopped () {} @@ -145,20 +145,20 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou void set_gain (gain_t val, PBD::Controllable::GroupControlDisposition); void inc_gain (gain_t delta); - void set_trim (gain_t val, void *src); + void set_trim (gain_t val, PBD::Controllable::GroupControlDisposition); void set_mute_points (MuteMaster::MutePoint); MuteMaster::MutePoint mute_points () const; bool muted () const; - void set_mute (bool yn, void* src); + void set_mute (bool yn, PBD::Controllable::GroupControlDisposition); bool muted_by_others() const; /* controls use set_solo() to modify this route's solo state */ - void set_solo (bool yn, void *src, bool group_override = false); + void set_solo (bool yn, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); bool soloed () const { return self_soloed () || soloed_by_others (); } void clear_all_solo_state (); @@ -167,13 +167,13 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou bool soloed_by_others_downstream () const { return _soloed_by_others_downstream; } bool self_soloed () const { return _self_solo; } - void set_solo_isolated (bool yn, void *src); + void set_solo_isolated (bool yn, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); bool solo_isolated() const; - void set_solo_safe (bool yn, void *src); + void set_solo_safe (bool yn, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); bool solo_safe() const; - void set_listen (bool yn, void* src, bool group_override = false); + void set_listen (bool yn, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); bool listening_via_monitor () const; void enable_monitor_send (); @@ -286,12 +286,12 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou PBD::Signal0<void> active_changed; PBD::Signal0<void> phase_invert_changed; PBD::Signal0<void> denormal_protection_changed; - PBD::Signal2<void,void*,bool> listen_changed; - PBD::Signal3<void,bool,void*,bool> solo_changed; - PBD::Signal1<void,void*> solo_safe_changed; - PBD::Signal1<void,void*> solo_isolated_changed; - PBD::Signal1<void,void*> comment_changed; - PBD::Signal1<void,void*> mute_changed; + PBD::Signal1<void,PBD::Controllable::GroupControlDisposition> listen_changed; + PBD::Signal2<void,bool,PBD::Controllable::GroupControlDisposition> solo_changed; + PBD::Signal0<void> solo_safe_changed; + PBD::Signal0<void> solo_isolated_changed; + PBD::Signal0<void> comment_changed; + PBD::Signal0<void> mute_changed; PBD::Signal0<void> mute_points_changed; /** track numbers - assigned by session @@ -438,6 +438,8 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou void set_value (double, PBD::Controllable::GroupControlDisposition group_override); void set_value_unchecked (double); double get_value () const; + private: + void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); }; struct MuteControllable : public RouteAutomationControl { @@ -452,17 +454,20 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou private: boost::weak_ptr<Route> _route; + void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); }; class LIBARDOUR_API PhaseControllable : public RouteAutomationControl { public: PhaseControllable (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() */ void set_channel (uint32_t); double get_value () const; uint32_t channel() const; private: uint32_t _current_phase; + void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); }; void set_control (AutomationType, double val, PBD::Controllable::GroupControlDisposition group_override); @@ -654,7 +659,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou bool _solo_isolated; uint32_t _solo_isolated_by_upstream; - void mod_solo_isolated_by_upstream (bool, void*); + void mod_solo_isolated_by_upstream (bool); bool _denormal_protection; diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h index 763430e1f1..fc295a658c 100644 --- a/libs/ardour/ardour/route_group.h +++ b/libs/ardour/ardour/route_group.h @@ -25,9 +25,9 @@ #include <string> #include <stdint.h> +#include "pbd/controllable.h" #include "pbd/signals.h" #include "pbd/stateful.h" -#include "pbd/signals.h" #include "ardour/libardour_visibility.h" #include "ardour/types.h" @@ -108,7 +108,7 @@ class LIBARDOUR_API RouteGroup : public SessionObject /* to use these, #include "ardour/route_group_specialized.h" */ - template<class T> void apply (void (Track::*func)(T, void *), T val, void *src); + template<class T> void apply (void (Track::*func)(T, PBD::Controllable::GroupControlDisposition), T val, PBD::Controllable::GroupControlDisposition); /* fills at_set with all members of the group that are AudioTracks */ @@ -134,7 +134,7 @@ class LIBARDOUR_API RouteGroup : public SessionObject int set_state (const XMLNode&, int version); -private: + private: boost::shared_ptr<RouteList> routes; boost::shared_ptr<Route> subgroup_bus; diff --git a/libs/ardour/ardour/route_group_member.h b/libs/ardour/ardour/route_group_member.h index b0368cb240..0bf4166745 100644 --- a/libs/ardour/ardour/route_group_member.h +++ b/libs/ardour/ardour/route_group_member.h @@ -20,6 +20,7 @@ #ifndef __libardour_route_group_member_h__ #define __libardour_route_group_member_h__ +#include "pbd/controllable.h" #include "pbd/signals.h" namespace ARDOUR { @@ -37,6 +38,8 @@ class LIBARDOUR_API RouteGroupMember /** Emitted when this member joins or leaves a route group */ PBD::Signal0<void> route_group_changed; + bool use_group (PBD::Controllable::GroupControlDisposition gcd, bool (RouteGroup::*predicate)(void) const) const; + protected: RouteGroup* _route_group; diff --git a/libs/ardour/ardour/route_group_specialized.h b/libs/ardour/ardour/route_group_specialized.h index 242a16c43e..800ddc4289 100644 --- a/libs/ardour/ardour/route_group_specialized.h +++ b/libs/ardour/ardour/route_group_specialized.h @@ -26,13 +26,13 @@ namespace ARDOUR { template<class T> void -RouteGroup::apply (void (Track::*func)(T, void *), T val, void* /*src*/) +RouteGroup::apply (void (Track::*func)(T, PBD::Controllable::GroupControlDisposition), T val, PBD::Controllable::GroupControlDisposition group_override) { for (RouteList::iterator i = routes->begin(); i != routes->end(); i++) { boost::shared_ptr<Track> at; if ((at = boost::dynamic_pointer_cast<Track>(*i)) != 0) { - (at.get()->*func)(val, this); + (at.get()->*func)(val, group_override); } } } diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 43bd7483fb..e28ff8e966 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -739,16 +739,16 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop static const SessionEvent::RTeventCallback rt_cleanup; - void set_solo (boost::shared_ptr<RouteList>, bool, SessionEvent::RTeventCallback after = rt_cleanup, bool group_override = false); + void set_solo (boost::shared_ptr<RouteList>, bool, SessionEvent::RTeventCallback after = rt_cleanup, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); void clear_all_solo_state (boost::shared_ptr<RouteList>); void set_just_one_solo (boost::shared_ptr<Route>, bool, SessionEvent::RTeventCallback after = rt_cleanup); - void set_mute (boost::shared_ptr<RouteList>, bool, SessionEvent::RTeventCallback after = rt_cleanup, bool group_override = false); - void set_listen (boost::shared_ptr<RouteList>, bool, SessionEvent::RTeventCallback after = rt_cleanup, bool group_override = false); - void set_record_enabled (boost::shared_ptr<RouteList>, bool, SessionEvent::RTeventCallback after = rt_cleanup, bool group_override = false); - void set_record_safe (boost::shared_ptr<RouteList>, bool yn, SessionEvent::RTeventCallback after = rt_cleanup, bool group_override = false); - void set_solo_isolated (boost::shared_ptr<RouteList>, bool, SessionEvent::RTeventCallback after = rt_cleanup, bool group_override = false); - void set_monitoring (boost::shared_ptr<RouteList>, MonitorChoice, SessionEvent::RTeventCallback after = rt_cleanup, bool group_override = false); - void set_exclusive_input_active (boost::shared_ptr<RouteList> rt, bool onoff, bool flip_others=false); + void set_mute (boost::shared_ptr<RouteList>, bool, SessionEvent::RTeventCallback after = rt_cleanup, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); + void set_listen (boost::shared_ptr<RouteList>, bool, SessionEvent::RTeventCallback after = rt_cleanup, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); + void set_record_enabled (boost::shared_ptr<RouteList>, bool, SessionEvent::RTeventCallback after = rt_cleanup, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); + void set_record_safe (boost::shared_ptr<RouteList>, bool yn, SessionEvent::RTeventCallback after = rt_cleanup, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); + void set_solo_isolated (boost::shared_ptr<RouteList>, bool, SessionEvent::RTeventCallback after = rt_cleanup, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); + void set_monitoring (boost::shared_ptr<RouteList>, MonitorChoice, SessionEvent::RTeventCallback after = rt_cleanup, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); + void set_exclusive_input_active (boost::shared_ptr<RouteList> rt, bool onoff, bool flip_others = false); PBD::Signal1<void,bool> SoloActive; PBD::Signal0<void> SoloChanged; @@ -1544,10 +1544,10 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop /* mixer stuff */ - void route_listen_changed (bool group_override, boost::weak_ptr<Route>); - void route_mute_changed (void *src); - void route_solo_changed (bool self_solo_change, bool group_override, boost::weak_ptr<Route>); - void route_solo_isolated_changed (void *src, boost::weak_ptr<Route>); + void route_listen_changed (PBD::Controllable::GroupControlDisposition, boost::weak_ptr<Route>); + void route_mute_changed (); + void route_solo_changed (bool self_solo_change, PBD::Controllable::GroupControlDisposition group_override, boost::weak_ptr<Route>); + void route_solo_isolated_changed (boost::weak_ptr<Route>); void update_route_solo_state (boost::shared_ptr<RouteList> r = boost::shared_ptr<RouteList>()); void listen_position_changed (); @@ -1772,8 +1772,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop /* realtime "apply to set of routes" operations */ template<typename T> SessionEvent* - get_rt_event (boost::shared_ptr<RouteList> rl, T targ, SessionEvent::RTeventCallback after, bool group_override, - void (Session::*method) (boost::shared_ptr<RouteList>, T, bool)) { + get_rt_event (boost::shared_ptr<RouteList> rl, T targ, SessionEvent::RTeventCallback after, PBD::Controllable::GroupControlDisposition group_override, + void (Session::*method) (boost::shared_ptr<RouteList>, T, PBD::Controllable::GroupControlDisposition)) { SessionEvent* ev = new SessionEvent (SessionEvent::RealTimeOperation, SessionEvent::Add, SessionEvent::Immediate, 0, 0.0); ev->rt_slot = boost::bind (method, this, rl, targ, group_override); ev->rt_return = after; @@ -1782,15 +1782,15 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop return ev; } - void rt_set_solo (boost::shared_ptr<RouteList>, bool yn, bool group_override); - void rt_clear_all_solo_state (boost::shared_ptr<RouteList>, bool yn, bool group_override); - void rt_set_just_one_solo (boost::shared_ptr<RouteList>, bool yn, bool /* ignored*/ ); - void rt_set_mute (boost::shared_ptr<RouteList>, bool yn, bool group_override); - void rt_set_listen (boost::shared_ptr<RouteList>, bool yn, bool group_override); - void rt_set_solo_isolated (boost::shared_ptr<RouteList>, bool yn, bool group_override); - void rt_set_record_enabled (boost::shared_ptr<RouteList>, bool yn, bool group_override); - void rt_set_record_safe (boost::shared_ptr<RouteList>, bool yn, bool group_override); - void rt_set_monitoring (boost::shared_ptr<RouteList>, MonitorChoice, bool group_override); + void rt_set_solo (boost::shared_ptr<RouteList>, bool yn, PBD::Controllable::GroupControlDisposition group_override); + void rt_clear_all_solo_state (boost::shared_ptr<RouteList>, bool yn, PBD::Controllable::GroupControlDisposition group_override); + void rt_set_just_one_solo (boost::shared_ptr<RouteList>, bool yn, PBD::Controllable::GroupControlDisposition /* ignored*/ ); + void rt_set_mute (boost::shared_ptr<RouteList>, bool yn, PBD::Controllable::GroupControlDisposition group_override); + void rt_set_listen (boost::shared_ptr<RouteList>, bool yn, PBD::Controllable::GroupControlDisposition group_override); + void rt_set_solo_isolated (boost::shared_ptr<RouteList>, bool yn, PBD::Controllable::GroupControlDisposition group_override); + void rt_set_record_enabled (boost::shared_ptr<RouteList>, bool yn, PBD::Controllable::GroupControlDisposition group_override); + void rt_set_record_safe (boost::shared_ptr<RouteList>, bool yn, PBD::Controllable::GroupControlDisposition group_override); + void rt_set_monitoring (boost::shared_ptr<RouteList>, MonitorChoice, PBD::Controllable::GroupControlDisposition group_override); /** temporary list of Diskstreams used only during load of 2.X sessions */ std::list<boost::shared_ptr<Diskstream> > _diskstreams_2X; diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index 5bf887f517..39f9a52ec5 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -108,9 +108,9 @@ class LIBARDOUR_API Track : public Route, public PublicDiskstream bool record_enabled() const; bool record_safe () const; - void set_record_enabled (bool yn, void *src); - void set_record_safe (bool yn, void *src); - void prep_record_enabled (bool yn, void *src); + void set_record_enabled (bool yn, PBD::Controllable::GroupControlDisposition); + void set_record_safe (bool yn, PBD::Controllable::GroupControlDisposition); + void prep_record_enabled (bool yn, PBD::Controllable::GroupControlDisposition); bool using_diskstream_id (PBD::ID) const; @@ -203,7 +203,8 @@ class LIBARDOUR_API Track : public Route, public PublicDiskstream FreezeState state; }; - struct RecEnableControl : public AutomationControl { + class RecEnableControl : public AutomationControl { + public: RecEnableControl (boost::shared_ptr<Track> t); void set_value (double, PBD::Controllable::GroupControlDisposition); @@ -211,6 +212,9 @@ class LIBARDOUR_API Track : public Route, public PublicDiskstream double get_value (void) const; boost::weak_ptr<Track> track; + + private: + void _set_value (double, PBD::Controllable::GroupControlDisposition); }; virtual void set_state_part_two () = 0; |