diff options
author | Wohlstand <admin@wohlnet.ru> | 2021-01-07 14:00:04 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2021-01-07 14:00:04 +0300 |
commit | 914286779ff5154dd811a8827becd03cea672f0e (patch) | |
tree | 8929216301aeebda0bf5fc461608f2817135d765 /src/adlmidi_midiplay.cpp | |
parent | e9e0f4f45e8add289d7dbcca2d5602c48a4c6a22 (diff) | |
download | libADLMIDI-914286779ff5154dd811a8827becd03cea672f0e.tar.gz libADLMIDI-914286779ff5154dd811a8827becd03cea672f0e.tar.bz2 libADLMIDI-914286779ff5154dd811a8827becd03cea672f0e.zip |
Tune the processing of bank recognizing algorithm
#121
Diffstat (limited to 'src/adlmidi_midiplay.cpp')
-rw-r--r-- | src/adlmidi_midiplay.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index f77ce81..49fd931 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -36,7 +36,8 @@ enum { MasterVolumeDefault = 127 }; inline bool isXgPercChannel(uint8_t msb, uint8_t lsb) { - return (msb == 0x7E || msb == 0x7F) && (lsb == 0); + ADL_UNUSED(lsb); + return (msb == 0x7E || msb == 0x7F); } void MIDIplay::AdlChannel::addAge(int64_t us) @@ -329,7 +330,7 @@ bool MIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocity) // Let XG Percussion bank will use (0...127 LSB range in WOPN file) // Choose: SFX or Drum Kits - bank = midiins + ((bank == 0x7E00) ? 128 : 0); + bank = midiins + ((midiChan.bank_msb == 0x7E) ? 128 : 0); } else { @@ -357,8 +358,8 @@ bool MIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocity) caughtMissingBank = true; } - //Or fall back to bank ignoring LSB (GS) - if((ains->flags & OplInstMeta::Flag_NoSound) && ((m_synthMode & Mode_GS) != 0)) + //Or fall back to bank ignoring LSB (GS/XG) + if(ains->flags & OplInstMeta::Flag_NoSound) { size_t fallback = bank & ~(size_t)0x7F; if(fallback != bank) |