aboutsummaryrefslogtreecommitdiff
path: root/src/midi_sequencer_impl.hpp
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2021-11-19 23:08:56 +0300
committerWohlstand <admin@wohlnet.ru>2021-11-19 23:08:59 +0300
commit363ec1864d552e482603a4c5d677647216ba8db0 (patch)
treea9ff73949d76c46a2eda61b779d8cc4cf4d12c0f /src/midi_sequencer_impl.hpp
parent14b5b89c4443665bcafdb7e4529c3a6ad8e76480 (diff)
downloadlibADLMIDI-363ec1864d552e482603a4c5d677647216ba8db0.tar.gz
libADLMIDI-363ec1864d552e482603a4c5d677647216ba8db0.tar.bz2
libADLMIDI-363ec1864d552e482603a4c5d677647216ba8db0.zip
Send CC123 after passing loop end
This should resolve the problem of un-closed notes caused by bad placement of loop end, or after XMI files (#160)
Diffstat (limited to 'src/midi_sequencer_impl.hpp')
-rw-r--r--src/midi_sequencer_impl.hpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/midi_sequencer_impl.hpp b/src/midi_sequencer_impl.hpp
index dac8b12..ee2a77d 100644
--- a/src/midi_sequencer_impl.hpp
+++ b/src/midi_sequencer_impl.hpp
@@ -1318,8 +1318,13 @@ bool BW_MidiSequencer::processEvents(bool isSeek)
m_currentPosition.wait += m_postSongWaitDelay; // One second delay until stop playing
}
}
+
m_currentPosition = s.startPosition;
m_loop.skipStackStart = true;
+
+ for(uint8_t i = 0; i < 16; i++)
+ m_interface->rt_controllerChange(m_interface->rtUserData, i, 123, 0);
+
return true;
}
else
@@ -1330,6 +1335,10 @@ bool BW_MidiSequencer::processEvents(bool isSeek)
{
m_currentPosition = s.startPosition;
m_loop.skipStackStart = true;
+
+ for(uint8_t i = 0; i < 16; i++)
+ m_interface->rt_controllerChange(m_interface->rtUserData, i, 123, 0);
+
return true;
}
else
@@ -1354,6 +1363,9 @@ bool BW_MidiSequencer::processEvents(bool isSeek)
if(m_interface->onloopEnd) // Loop End hook
m_interface->onloopEnd(m_interface->onloopEnd_userData);
+ for(uint8_t i = 0; i < 16; i++)
+ m_interface->rt_controllerChange(m_interface->rtUserData, i, 123, 0);
+
// Loop if song end or loop end point has reached
m_loop.caughtEnd = false;
shortestDelay = 0;