aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_private.cpp
diff options
context:
space:
mode:
authorJP Cimalando <jpcima@users.noreply.github.com>2018-05-16 14:27:04 +0200
committerJP Cimalando <jpcima@users.noreply.github.com>2018-06-01 09:18:05 +0200
commitc4ed5cf15e64a84129865a58b5063ef0e73f0bcf (patch)
tree7a4ed94756b41e0855830acbd0ae52f3a432b07f /src/adlmidi_private.cpp
parent451bee2d22501613e2f8b6e1a235d913ad80cf8b (diff)
downloadlibADLMIDI-c4ed5cf15e64a84129865a58b5063ef0e73f0bcf.tar.gz
libADLMIDI-c4ed5cf15e64a84129865a58b5063ef0e73f0bcf.tar.bz2
libADLMIDI-c4ed5cf15e64a84129865a58b5063ef0e73f0bcf.zip
bank storage inside dynamic map
Diffstat (limited to 'src/adlmidi_private.cpp')
-rw-r--r--src/adlmidi_private.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/adlmidi_private.cpp b/src/adlmidi_private.cpp
index 3d9d9e9..77319d7 100644
--- a/src/adlmidi_private.cpp
+++ b/src/adlmidi_private.cpp
@@ -34,16 +34,21 @@ int adlRefreshNumCards(ADL_MIDIPlayer *device)
if(play->opl.AdlBank == ~0u)
{
//For custom bank
- for(size_t a = 0; a < play->opl.dynamic_metainstruments.size(); ++a)
+ OPL3::BankMap::iterator it = play->opl.dynamic_banks.begin();
+ OPL3::BankMap::iterator end = play->opl.dynamic_banks.end();
+ for(; it != end; ++it)
{
- adlinsdata2 &ins = play->opl.dynamic_metainstruments[a];
- if(ins.flags & adlinsdata::Flag_NoSound)
- continue;
-
- size_t div = (a >= play->opl.dynamic_percussion_offset) ? 1 : 0;
- ++n_total[div];
- if(ins.flags & adlinsdata::Flag_Real4op)
- ++n_fourop[div];
+ uint16_t bank = it->first;
+ unsigned div = (bank & OPL3::PercussionTag) ? 1 : 0;
+ for(unsigned i = 0; i < 128; ++i)
+ {
+ adlinsdata2 &ins = it->second.ins[i];
+ if(ins.flags & adlinsdata::Flag_NoSound)
+ continue;
+ if((ins.adl[0] != ins.adl[1]) && ((ins.flags & adlinsdata::Flag_Pseudo4op) == 0))
+ ++n_fourop[div];
+ ++n_total[div];
+ }
}
}
else