X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Fardour%2Froute.h;h=bef1a54569ab18755e269ef8b275b8acc656288e;hb=9766cc7d8b1d96817d2ec9b5a7ccef6f97f440f5;hp=6c0380963df8f5210dab3b0ea6cebc6205e78177;hpb=653ae4acd639fef149314fe6f8c7a0d862afae40;p=ardour.git diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 6c0380963d..bef1a54569 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -57,6 +57,7 @@ #include "ardour/soloable.h" #include "ardour/solo_control.h" #include "ardour/solo_safe_control.h" +#include "ardour/slavable.h" class RoutePinWindowProxy; @@ -84,25 +85,19 @@ class PhaseControl; class MonitorControl; class LIBARDOUR_API Route : public Stripable, + public GraphNode, public Soloable, public Muteable, public Monitorable, public Automatable, public RouteGroupMember, - public GraphNode, public boost::enable_shared_from_this { public: typedef std::list > ProcessorList; - enum Flag { - Auditioner = 0x1, - MasterOut = 0x2, - MonitorOut = 0x4 - }; - - Route (Session&, std::string name, Flag flags = Flag(0), DataType default_type = DataType::AUDIO); + Route (Session&, std::string name, PresentationInfo::Flag flags = PresentationInfo::Flag(0), DataType default_type = DataType::AUDIO); virtual ~Route(); virtual int init (); @@ -126,14 +121,6 @@ public: bool set_name (const std::string& str); static void set_name_in_state (XMLNode &, const std::string &, bool rename_playlist = true); - uint32_t order_key () const; - bool has_order_key () const; - void set_order_key (uint32_t); - - bool is_auditioner() const { return _flags & Auditioner; } - bool is_master() const { return _flags & MasterOut; } - bool is_monitor() const { return _flags & MonitorOut; } - MonitorState monitoring_state () const; virtual MeterState metering_state () const; @@ -181,8 +168,6 @@ public: bool is_safe () const { return _solo_safe_control->get_value(); } - - bool listening_via_monitor () const; void enable_monitor_send (); void set_denormal_protection (bool yn); @@ -375,6 +360,7 @@ public: /** the processors have changed; the parameter indicates what changed */ PBD::Signal1 processors_changed; PBD::Signal1 record_enable_changed; + PBD::Signal0 processor_latency_changed; /** the metering point has changed */ PBD::Signal0 meter_change; PBD::Signal0 signal_latency_changed; @@ -383,10 +369,6 @@ public: /** Emitted with the process lock held */ PBD::Signal0 io_changed; - /* gui's call this for their own purposes. */ - - PBD::Signal2 gui_changed; - /* stateful */ XMLNode& get_state(); @@ -460,8 +442,9 @@ public: bool can_be_muted_by_others () const { return !is_master(); } bool muted () const { return _mute_control->muted(); } + bool muted_by_masters () const { return _mute_control->muted_by_masters(); } + bool muted_by_self () const { return _mute_control->muted_by_self(); } bool muted_by_others_soloing () const; - bool muted_by_others () const; boost::shared_ptr solo_isolate_control() const { return _solo_isolate_control; @@ -569,28 +552,6 @@ public: void protect_automation (); - enum { - /* These numbers are taken from MIDI Machine Control, - which can only control up to 317 tracks without - doing sysex segmentation. - */ - MasterBusRemoteControlID = 318, - MonitorBusRemoteControlID = 319, - }; - - void set_remote_control_id (uint32_t id, bool notify_class_listeners = true); - uint32_t remote_control_id () const; - void set_remote_control_id_explicit (uint32_t order_key); - - /* for things concerned about *this* route's RID */ - - PBD::Signal0 RemoteControlIDChanged; - - /* for things concerned about *any* route's RID changes */ - - static PBD::Signal0 RemoteControlIDChange; - static PBD::Signal0 SyncOrderKeys; - bool has_external_redirects() const; /* can only be executed by a route for which is_monitor() is true @@ -600,8 +561,7 @@ public: pframes_t nframes, int declick); bool slaved_to (boost::shared_ptr) const; - void vca_assign (boost::shared_ptr); - void vca_unassign (boost::shared_ptr); + bool slaved () const; protected: friend class Session; @@ -612,8 +572,8 @@ public: void curve_reallocate (); virtual void set_block_size (pframes_t nframes); -protected: - virtual framecnt_t check_initial_delay (framecnt_t nframes, framepos_t&) { return nframes; } + protected: + virtual framecnt_t check_initial_delay (framecnt_t nframes, framepos_t&) { return nframes; } void fill_buffers_with_input (BufferSet& bufs, boost::shared_ptr io, pframes_t nframes); @@ -665,7 +625,6 @@ protected: gint _pending_process_reorder; // atomic gint _pending_signals; // atomic - Flag _flags; int _pending_declick; MeterPoint _meter_point; MeterPoint _pending_meter_point; @@ -720,16 +679,12 @@ protected: boost::shared_ptr the_instrument_unlocked() const; -private: + private: + int64_t _track_number; + int set_state_2X (const XMLNode&, int); void set_processor_state_2X (XMLNodeList const &, int); - uint32_t _order_key; - bool _has_order_key; - uint32_t _remote_control_id; - - int64_t _track_number; - void input_change_handler (IOChange, void *src); void output_change_handler (IOChange, void *src); void sidechain_change_handler (IOChange, void *src); @@ -812,7 +767,6 @@ private: void reset_instrument_info (); - void set_remote_control_id_internal (uint32_t id, bool notify_class_listeners = true); void solo_control_changed (bool self, PBD::Controllable::GroupControlDisposition); };