+ protected:
+ void set_path (const std::string& newpath);
+
+ private:
+ nframes_t read_unlocked (Evoral::EventSink<nframes_t>& dst,
+ framepos_t position,
+ framepos_t start,
+ nframes_t cnt,
+ MidiStateTracker* tracker) const;
+
+ nframes_t write_unlocked (MidiRingBuffer<nframes_t>& src,
+ framepos_t position,
+ nframes_t cnt);
+
+ double _last_ev_time_beats;
+ framepos_t _last_ev_time_frames;
+ /** end time (start + duration) of last call to read_unlocked */
+ mutable framepos_t _smf_last_read_end;
+ /** time (in SMF ticks, 1 tick per _ppqn) of the last event read by read_unlocked */
+ mutable framepos_t _smf_last_read_time;