partially revert some of the recent work on tempo to reflect new understanding of...
[ardour.git] / libs / ardour / ardour / midi_source.h
index 8859d42532a9ea99c880658b8cbe3162d7d86f46..3564fff4fcc4fa38d9e752311447629263f0704d 100644 (file)
@@ -48,8 +48,8 @@ class MidiSource : virtual public Source, public boost::enable_shared_from_this<
        MidiSource (Session& session, const XMLNode&);
        virtual ~MidiSource ();
 
-        boost::shared_ptr<MidiSource> clone (Evoral::MusicalTime begin = Evoral::MinMusicalTime, 
-                                             Evoral::MusicalTime end = Evoral::MaxMusicalTime);
+       boost::shared_ptr<MidiSource> clone (Evoral::MusicalTime begin = Evoral::MinMusicalTime,
+                                            Evoral::MusicalTime end = Evoral::MaxMusicalTime);
 
        /** Read the data in a given time range from the MIDI source.
         * All time stamps in parameters are in audio frames (even if the source has tempo time).
@@ -83,13 +83,20 @@ class MidiSource : virtual public Source, public boost::enable_shared_from_this<
        virtual void mark_streaming_write_completed ();
        void mark_write_starting_now ();
 
+       /* like ::mark_streaming_write_completed() but with more arguments to
+        * allow control over MIDI-specific behaviour. Expected to be used only
+        * when recording actual MIDI input, rather then when importing files
+        * etc.
+        */
+       virtual void mark_midi_streaming_write_completed (Evoral::Sequence<Evoral::MusicalTime>::StuckNoteOption, Evoral::MusicalTime when = 0);
+
        virtual void session_saved();
 
        std::string captured_for() const               { return _captured_for; }
        void        set_captured_for (std::string str) { _captured_for = str; }
 
-       uint32_t read_data_count()  const { return _read_data_count; }
-       uint32_t write_data_count() const { return _write_data_count; }
+       framepos_t last_write_end() const { return _last_write_end; }
+       void set_last_write_end (framepos_t pos) { _last_write_end = pos; }
 
        static PBD::Signal1<void,MidiSource*> MidiSourceCreated;
 
@@ -145,8 +152,6 @@ class MidiSource : virtual public Source, public boost::enable_shared_from_this<
                                           framecnt_t cnt) = 0;
 
        std::string      _captured_for;
-       mutable uint32_t _read_data_count;  ///< modified in read()
-       mutable uint32_t _write_data_count; ///< modified in write()
 
        boost::shared_ptr<MidiModel> _model;
        bool                         _writing;