forward propagate solo-isolated status to everything fed by a route by something...
[ardour.git] / libs / ardour / ardour / midi_region.h
index 50fc1516df1d3dc6503ff87458de8068b9f9d5cb..5bd338b39e4c801ead42ab9099005a99d8caa4a2 100644 (file)
@@ -42,6 +42,7 @@ class Playlist;
 class Session;
 class MidiFilter;
 class MidiSource;
+class MidiStateTracker;
 template<typename T> class MidiRingBuffer;
 
 class MidiRegion : public Region
@@ -55,11 +56,12 @@ class MidiRegion : public Region
        virtual nframes_t read (Sample*, sframes_t /*pos*/, nframes_t /*cnt*/, int /*channel*/) const { return 0; }
        virtual sframes_t readable_length() const { return length(); }
 
-       nframes_t read_at (MidiRingBuffer<nframes_t>& dst,
-                       sframes_t position,
-                       nframes_t dur,
-                       uint32_t  chan_n = 0,
-                       NoteMode  mode = Sustained) const;
+       nframes_t read_at (Evoral::EventSink<nframes_t>& dst,
+                          sframes_t position,
+                          nframes_t dur,
+                          uint32_t  chan_n = 0,
+                          NoteMode  mode = Sustained,
+                          MidiStateTracker* tracker = 0) const;
 
        nframes_t master_read_at (MidiRingBuffer<nframes_t>& dst,
                        sframes_t position,
@@ -68,7 +70,7 @@ class MidiRegion : public Region
                        NoteMode  mode = Sustained) const;
 
        XMLNode& state (bool);
-       int      set_state (const XMLNode&);
+       int      set_state (const XMLNode&, int version);
 
        int separate_by_channel (ARDOUR::Session&, std::vector< boost::shared_ptr<Region> >&) const;
 
@@ -103,11 +105,12 @@ class MidiRegion : public Region
        MidiRegion (const SourceList &, const XMLNode&);
 
   private:
-       nframes_t _read_at (const SourceList&, MidiRingBuffer<nframes_t>& dst,
-                       nframes_t position,
-                       nframes_t dur,
-                       uint32_t chan_n = 0,
-                       NoteMode mode = Sustained) const;
+       nframes_t _read_at (const SourceList&, Evoral::EventSink<nframes_t>& dst,
+                           sframes_t position,
+                           nframes_t dur,
+                           uint32_t chan_n = 0,
+                           NoteMode mode = Sustained, 
+                           MidiStateTracker* tracker = 0) const;
 
        void recompute_at_start ();
        void recompute_at_end ();
@@ -118,7 +121,7 @@ class MidiRegion : public Region
 
   protected:
 
-       int set_live_state (const XMLNode&, Change&, bool send);
+       int set_live_state (const XMLNode&, int version, Change&, bool send);
 };
 
 } /* namespace ARDOUR */