aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/adlmidi_midiplay.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp
index f1a0c56..ae37e06 100644
--- a/src/adlmidi_midiplay.cpp
+++ b/src/adlmidi_midiplay.cpp
@@ -1569,6 +1569,10 @@ void MIDIplay::killOrEvacuate(size_t from_channel,
if(adlch.users.size() == adlch.users.capacity())
continue; // no room for more arpeggio on channel
+ if(!m_chipChannels[cs].find_user(jd.loc).is_end())
+ continue; // channel already has this note playing (sustained)
+ // avoid introducing a duplicate location.
+
for(AdlChannel::users_iterator m = adlch.users.begin(); !m.is_end(); ++m)
{
AdlChannel::LocationData &mv = m->value;