summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/MidiBuffer.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-08-02 07:23:56 +0000
committerDavid Robillard <d@drobilla.net>2007-08-02 07:23:56 +0000
commit191b78d09365112a868ddaf3f813ef2b5bc2c252 (patch)
tree48000d7f46c7b7102f1e8f013b72eccd41418abe /src/libs/engine/MidiBuffer.cpp
parenta8ea9db4af11208293543f50392127819c8007cd (diff)
downloadingen-191b78d09365112a868ddaf3f813ef2b5bc2c252.tar.gz
ingen-191b78d09365112a868ddaf3f813ef2b5bc2c252.tar.bz2
ingen-191b78d09365112a868ddaf3f813ef2b5bc2c252.zip
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
Diffstat (limited to 'src/libs/engine/MidiBuffer.cpp')
-rw-r--r--src/libs/engine/MidiBuffer.cpp17
1 files changed, 17 insertions, 0 deletions
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