diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2019-02-22 23:39:09 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2019-02-22 23:39:09 +0300 |
commit | c5f8da70da78110dbbaa74ff4ebce6edf5d04be8 (patch) | |
tree | b92284c60efec9652ab313ad032b833ddbbff3f2 /src/adlmidi_private.cpp | |
parent | f21a5030355d27d9562cc62643db0380dc58a84b (diff) | |
download | libADLMIDI-c5f8da70da78110dbbaa74ff4ebce6edf5d04be8.tar.gz libADLMIDI-c5f8da70da78110dbbaa74ff4ebce6edf5d04be8.tar.bz2 libADLMIDI-c5f8da70da78110dbbaa74ff4ebce6edf5d04be8.zip |
Rhythm-mode percussion now works!
Diffstat (limited to 'src/adlmidi_private.cpp')
-rw-r--r-- | src/adlmidi_private.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/adlmidi_private.cpp b/src/adlmidi_private.cpp index b793129..1b65214 100644 --- a/src/adlmidi_private.cpp +++ b/src/adlmidi_private.cpp @@ -40,6 +40,7 @@ int adlCalculateFourOpChannels(MIDIplay *play, bool silent) { Synth &synth = *play->m_synth; size_t n_fourop[2] = {0, 0}, n_total[2] = {0, 0}; + bool rhythmModeNeeded = false; //Automatically calculate how much 4-operator channels is necessary #ifndef DISABLE_EMBEDDED_BANKS @@ -61,6 +62,8 @@ int adlCalculateFourOpChannels(MIDIplay *play, bool silent) if((ins.flags & adlinsdata::Flag_Real4op) != 0) ++n_fourop[div]; ++n_total[div]; + if(div && ((ins.flags & adlinsdata::Mask_RhythmMode) != 0)) + rhythmModeNeeded = true; } } } @@ -71,12 +74,15 @@ int adlCalculateFourOpChannels(MIDIplay *play, bool silent) for(size_t a = 0; a < 256; ++a) { size_t insno = banks[play->m_setup.bankId][a]; + size_t div = a / 128; if(insno == 198) continue; - ++n_total[a / 128]; + ++n_total[div]; adlinsdata2 ins = adlinsdata2::from_adldata(::adlins[insno]); if((ins.flags & adlinsdata::Flag_Real4op) != 0) - ++n_fourop[a / 128]; + ++n_fourop[div]; + if(div && ((ins.flags & adlinsdata::Mask_RhythmMode) != 0)) + rhythmModeNeeded = true; } } #endif @@ -107,5 +113,8 @@ int adlCalculateFourOpChannels(MIDIplay *play, bool silent) if(!silent) synth.updateChannelCategories(); + // Set rhythm mode when it needed + synth.m_rhythmMode = rhythmModeNeeded; + return 0; } |