track notes at the region level in MidiPlaylist; resolve them (deliver note offs...
[ardour.git] / libs / ardour / ardour / midi_source.h
index bffcde51925112244c5c5e843daf9e81d6a3f72f..5298ab2f4fe25fb93d40b8281cc96ea3450c3ab1 100644 (file)
@@ -34,6 +34,7 @@
 
 namespace ARDOUR {
 
+class MidiStateTracker;
 class MidiModel;
 template<typename T> class MidiRingBuffer;
 
@@ -55,11 +56,12 @@ class MidiSource : virtual public Source
         * \param cnt Length of range to be read (in audio frames)
         * \param stamp_offset Offset to add to event times written to dst
         * \param negative_stamp_offset Offset to subtract from event times written to dst
+        * \param tracker an optional pointer to MidiStateTracker object, for note on/off tracking
         */
        virtual nframes_t midi_read (MidiRingBuffer<nframes_t>& dst,
-                       sframes_t source_start,
-                       sframes_t start, nframes_t cnt,
-                       sframes_t stamp_offset, sframes_t negative_stamp_offset) const;
+                                    sframes_t source_start,
+                                    sframes_t start, nframes_t cnt,
+                                    sframes_t stamp_offset, sframes_t negative_stamp_offset, MidiStateTracker*) const;
 
        virtual nframes_t midi_write (MidiRingBuffer<nframes_t>& src,
                        sframes_t source_start,
@@ -113,9 +115,10 @@ class MidiSource : virtual public Source
        virtual void flush_midi() = 0;
 
        virtual nframes_t read_unlocked (MidiRingBuffer<nframes_t>& dst,
-                       sframes_t position,
-                       sframes_t start, nframes_t cnt,
-                       sframes_t stamp_offset, sframes_t negative_stamp_offset) const = 0;
+                                        sframes_t position,
+                                        sframes_t start, nframes_t cnt,
+                                        sframes_t stamp_offset, sframes_t negative_stamp_offset,
+                                        MidiStateTracker* tracker) const = 0;
 
        virtual nframes_t write_unlocked (MidiRingBuffer<nframes_t>& dst,
                        sframes_t position,