aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2025-05-20 22:37:54 +0300
committerWohlstand <admin@wohlnet.ru>2025-05-20 22:37:54 +0300
commitf7522790004e268ac3bd3ea8bfd97f6e3ed34469 (patch)
tree80ccfd0811e6af65a6ee3bf2ee35336f0d8b1348
parent53f261d26654dda2bfc82ae8ccc16abe2d261506 (diff)
downloadlibADLMIDI-f7522790004e268ac3bd3ea8bfd97f6e3ed34469.tar.gz
libADLMIDI-f7522790004e268ac3bd3ea8bfd97f6e3ed34469.tar.bz2
libADLMIDI-f7522790004e268ac3bd3ea8bfd97f6e3ed34469.zip
adlmidi_midiplay.cpp: Fixed the channels logic
Reworked the "disable arpeggio" logic that still make troubles even option is disabled
-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;