summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/midi_ring_buffer.h
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2008-05-12 10:03:53 +0000
committerHans Baier <hansfbaier@googlemail.com>2008-05-12 10:03:53 +0000
commitd46724515238fdb57f5d21c450883f7cc8897a56 (patch)
treebb1487333ddcc99900e9614c2bebbfa4d6ce28d6 /libs/ardour/ardour/midi_ring_buffer.h
parent8ca72c4eca3a712f5368680ba0fbce5beb831324 (diff)
* fixed various event size bugs
git-svn-id: svn://localhost/ardour2/branches/3.0@3336 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/midi_ring_buffer.h')
-rw-r--r--libs/ardour/ardour/midi_ring_buffer.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/libs/ardour/ardour/midi_ring_buffer.h b/libs/ardour/ardour/midi_ring_buffer.h
index ea0013fe46..baa8e9d948 100644
--- a/libs/ardour/ardour/midi_ring_buffer.h
+++ b/libs/ardour/ardour/midi_ring_buffer.h
@@ -348,12 +348,14 @@ MidiRingBuffer::write(double time, size_t size, const Byte* buf)
MidiRingBufferBase<Byte>::write(sizeof(double), (Byte*)&time);
MidiRingBufferBase<Byte>::write(sizeof(size_t), (Byte*)&size);
if (is_channel_event(buf[0]) && get_channel_mode() == ForceChannel) {
- assert(size == 3);
+ assert(size == 2 || size == 3);
Byte tmp_buf[3];
// Force event to channel
tmp_buf[0] = (buf[0] & 0xF0) | (get_channel_mask() & 0x0F);
tmp_buf[1] = buf[1];
- tmp_buf[2] = buf[2];
+ if (size == 3) {
+ tmp_buf[2] = buf[2];
+ }
MidiRingBufferBase<Byte>::write(size, tmp_buf);
} else {
MidiRingBufferBase<Byte>::write(size, buf);