diff --git a/libs/ardour/ardour/midi_model.h b/libs/ardour/ardour/midi_model.h index 12d3e218ee..6b726775a9 100644 --- a/libs/ardour/ardour/midi_model.h +++ b/libs/ardour/ardour/midi_model.h @@ -327,6 +327,7 @@ public: void transpose (NoteDiffCommand *, const NotePtr, int); void track_state (timepos_t const & when, MidiStateTracker&) const; + void render (const ReadLock& lock, Evoral::EventSink& dst); protected: int resolve_overlaps_unlocked (const NotePtr, void* arg = 0); diff --git a/libs/ardour/midi_model.cc b/libs/ardour/midi_model.cc index 1387841c18..de4f2f1270 100644 --- a/libs/ardour/midi_model.cc +++ b/libs/ardour/midi_model.cc @@ -1882,3 +1882,11 @@ MidiModel::track_state (timepos_t const & when, MidiStateTracker& mst) const mst.track (ev.buffer()); } } + +void +MidiModel::render (const ReadLock& lock, Evoral::EventSink& dst) +{ + for (auto const & ev : *this) { + dst.write (ev.time(), Evoral::MIDI_EVENT, ev.size(), ev.buffer()); + } +}