From 437d6c2e2b8c2a48f0ece6721de752144661293a Mon Sep 17 00:00:00 2001 From: petern Date: Fri, 24 Jul 2009 10:15:21 +0000 Subject: [PATCH] -Change: When stopping a loop, send the remaining note off events, instead of sending all notes off. git-svn-id: http://svn.fuzzle.org/mloop/trunk@33 ba049829-c6ef-42ef-81ac-908dd8d2e907 --- src/loop.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/loop.cpp b/src/loop.cpp index ebf8911..443925c 100644 --- a/src/loop.cpp +++ b/src/loop.cpp @@ -20,13 +20,12 @@ void Loop::PlayFrame(void *port_buffer, jack_nframes_t frame) if (m_state == LS_IDLE || m_state == LS_RECORDING) return; if (m_state == LS_STOPPING) { - uint8_t buffer[3]; - buffer[1] = 0x78; - buffer[2] = 0; - - for (int i = 0; i < 16; i++) { - buffer[0] = 0xB0 + i; - jack_midi_event_write(port_buffer, frame, buffer, sizeof buffer); + /* Iterate the remainder of the loop but only send note off events */ + for (; m_iterator != m_events.end(); ++m_iterator) { + jack_midi_event_t &event = *m_iterator; + if ((event.buffer[0] & 0xF0) == 0x80) { + jack_midi_event_write(port_buffer, frame, event.buffer, event.size); + } } m_state = LS_IDLE;