diff options
Diffstat (limited to 'libs/ardour/buffer_set.cc')
-rw-r--r-- | libs/ardour/buffer_set.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libs/ardour/buffer_set.cc b/libs/ardour/buffer_set.cc index 1f8317ffe2..c231a8f402 100644 --- a/libs/ardour/buffer_set.cc +++ b/libs/ardour/buffer_set.cc @@ -266,6 +266,25 @@ BufferSet::get_lv2_midi(bool input, size_t i, bool old_api) } void +BufferSet::forward_lv2_midi(LV2_Evbuf* buf, size_t i, bool purge_ardour_buffer) +{ + MidiBuffer& mbuf = get_midi(i); + if (purge_ardour_buffer) { + mbuf.silence(0, 0); + } + for (LV2_Evbuf_Iterator i = lv2_evbuf_begin(buf); + lv2_evbuf_is_valid(i); + i = lv2_evbuf_next(i)) { + uint32_t frames, subframes, type, size; + uint8_t* data; + lv2_evbuf_get(i, &frames, &subframes, &type, &size, &data); + if (type == LV2Plugin::urids.midi_MidiEvent) { + mbuf.push_back(frames, size, data); + } + } +} + +void BufferSet::flush_lv2_midi(bool input, size_t i) { MidiBuffer& mbuf = get_midi(i); |