- virtual framecnt_t midi_read (Evoral::EventSink<framepos_t>& dst,
- framepos_t source_start,
- framepos_t start, framecnt_t cnt,
- MidiStateTracker*,
- std::set<Evoral::Parameter> const &) const;
-
- virtual framecnt_t midi_write (MidiRingBuffer<framepos_t>& src,
- framepos_t source_start,
- framecnt_t cnt);
-
- virtual void append_event_unlocked_beats(const Evoral::Event<Evoral::MusicalTime>& ev) = 0;
+ virtual framecnt_t midi_read (const Lock& lock,
+ Evoral::EventSink<framepos_t>& dst,
+ framepos_t source_start,
+ framepos_t start,
+ framecnt_t cnt,
+ MidiStateTracker* tracker,
+ MidiChannelFilter* filter,
+ const std::set<Evoral::Parameter>& filtered) const;
+
+ /** Write data from a MidiRingBuffer to this source.
+ * @param source Source to read from.
+ * @param source_start This source's start position in session frames.
+ * @param cnt The length of time to write.
+ */
+ virtual framecnt_t midi_write (const Lock& lock,
+ MidiRingBuffer<framepos_t>& src,
+ framepos_t source_start,
+ framecnt_t cnt);
+
+ /** Append a single event with a timestamp in beats.
+ *
+ * Caller must ensure that the event is later than the last written event.
+ */
+ virtual void append_event_beats(const Lock& lock,
+ const Evoral::Event<Evoral::Beats>& ev) = 0;