aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_midiplay.cpp
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2021-01-07 14:00:04 +0300
committerWohlstand <admin@wohlnet.ru>2021-01-07 14:00:04 +0300
commit914286779ff5154dd811a8827becd03cea672f0e (patch)
tree8929216301aeebda0bf5fc461608f2817135d765 /src/adlmidi_midiplay.cpp
parente9e0f4f45e8add289d7dbcca2d5602c48a4c6a22 (diff)
downloadlibADLMIDI-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.cpp9
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)