-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-908dd8d2e907master
parent
fad03cc466
commit
437d6c2e2b
13
src/loop.cpp
13
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;
|
||||
|
|
Loading…
Reference in New Issue