From 191b78d09365112a868ddaf3f813ef2b5bc2c252 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 2 Aug 2007 07:23:56 +0000 Subject: Implement MIDI copying, fixes MIDI patching from patch input -> patch output (fix ticket 70). git-svn-id: http://svn.drobilla.net/lad/ingen@670 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/engine/MidiBuffer.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/libs/engine/MidiBuffer.cpp') diff --git a/src/libs/engine/MidiBuffer.cpp b/src/libs/engine/MidiBuffer.cpp index f2741dfb..4d515f2e 100644 --- a/src/libs/engine/MidiBuffer.cpp +++ b/src/libs/engine/MidiBuffer.cpp @@ -100,6 +100,23 @@ MidiBuffer::prepare_write(SampleCount nframes) assert(!_joined_buf || data() == _joined_buf->data()); } + +/** FIXME: parameters ignored */ +void +MidiBuffer::copy(const Buffer* src_buf, size_t start_sample, size_t end_sample) +{ + MidiBuffer* src = (MidiBuffer*)src_buf; + clear(); + src->reset(_this_nframes); + const uint32_t frame_count = min(_this_nframes, src->this_nframes()); + double time; + uint32_t size; + unsigned char* data; + while (src->increment() < frame_count) { + src->get_event(&time, &size, &data); + put_event(time, size, data); + } +} } // namespace Ingen -- cgit v1.2.1