Remove frame conversion for MidiRegionView::note_in_region_range(), speed up tempo...
[ardour.git] / libs / ardour / ardour / route.h
index 9f66b95b6cb6574ec8f7fd08e6072b20f8f98b82..bef1a54569ab18755e269ef8b275b8acc656288e 100644 (file)
@@ -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<Route>
 {
 public:
 
        typedef std::list<boost::shared_ptr<Processor> > 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<void,RouteProcessorChange> processors_changed;
        PBD::Signal1<void,void*> record_enable_changed;
+       PBD::Signal0<void> processor_latency_changed;
        /** the metering point has changed */
        PBD::Signal0<void>       meter_change;
        PBD::Signal0<void>       signal_latency_changed;
@@ -383,10 +369,6 @@ public:
        /** Emitted with the process lock held */
        PBD::Signal0<void>       io_changed;
 
-       /* gui's call this for their own purposes. */
-
-       PBD::Signal2<void,std::string,void*> gui_changed;
-
        /* stateful */
 
        XMLNode& get_state();
@@ -460,7 +442,7 @@ public:
 
        bool can_be_muted_by_others () const { return !is_master(); }
        bool muted () const { return _mute_control->muted(); }
-       bool muted_by_others () const { return _mute_control->muted_by_others(); }
+       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;
 
@@ -570,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<void> RemoteControlIDChanged;
-
-       /* for things concerned about *any* route's RID changes */
-
-       static PBD::Signal0<void> RemoteControlIDChange;
-       static PBD::Signal0<void> SyncOrderKeys;
-
        bool has_external_redirects() const;
 
        /* can only be executed by a route for which is_monitor() is true
@@ -601,8 +561,7 @@ public:
                        pframes_t nframes, int declick);
 
         bool slaved_to (boost::shared_ptr<VCA>) const;
-        void vca_assign (boost::shared_ptr<VCA>);
-        void vca_unassign (boost::shared_ptr<VCA>);
+        bool slaved () const;
 
   protected:
         friend class Session;
@@ -613,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> io, pframes_t nframes);
 
@@ -666,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;
@@ -721,16 +679,12 @@ protected:
 
        boost::shared_ptr<Processor> 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);
@@ -813,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);
 };