From db3961323894d93d7159f6bc254aefe7a7ac1f99 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 19 May 2013 17:19:01 +0200 Subject: Forward midi feedback from LV2 plugins and allow to chain LV2 midi plugins. --- libs/ardour/buffer_set.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'libs/ardour/buffer_set.cc') 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 @@ -265,6 +265,25 @@ BufferSet::get_lv2_midi(bool input, size_t i, bool old_api) return evbuf; } +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) { -- cgit v1.2.3