diff options
author | Wohlstand <admin@wohlnet.ru> | 2025-05-20 22:37:54 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2025-05-20 22:37:54 +0300 |
commit | f7522790004e268ac3bd3ea8bfd97f6e3ed34469 (patch) | |
tree | 80ccfd0811e6af65a6ee3bf2ee35336f0d8b1348 | |
parent | 53f261d26654dda2bfc82ae8ccc16abe2d261506 (diff) | |
download | libADLMIDI-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.cpp | 10 |
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; |