aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/adlmidi_midiplay.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp
index 9db4b67..22019c8 100644
--- a/src/adlmidi_midiplay.cpp
+++ b/src/adlmidi_midiplay.cpp
@@ -1545,6 +1545,13 @@ void MIDIplay::prepareChipChannelForNewNote(size_t c, const MIDIchannel::NoteInf
// UNLESS we're going to do arpeggio
MIDIchannel::notes_iterator i (m_midiChannels[jd.loc.MidCh].ensure_find_activenote(jd.loc.note));
+ if(!m_setup.enableAutoArpeggio)
+ {
+ // Kill the note
+ noteUpdate(j->value.loc.MidCh, i, Upd_Off, static_cast<int32_t>(c));
+ continue;
+ }
+
// Check if we can do arpeggio.
if(((jd.vibdelay_us < 70000) || (jd.kon_time_until_neglible_us > 20000000)) && jd.ins == ins)
{
@@ -1587,9 +1594,6 @@ void MIDIplay::killOrEvacuate(size_t from_channel,
{
uint16_t cs = static_cast<uint16_t>(c);
- if(!m_setup.enableAutoArpeggio)
- break; // Arpeggio disabled completely
-
if(c >= maxChannels)
break;