aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_private.cpp
diff options
context:
space:
mode:
authorVitaly Novichkov <admin@wohlnet.ru>2018-06-02 01:41:28 +0300
committerVitaly Novichkov <admin@wohlnet.ru>2018-06-02 01:41:28 +0300
commit9fb6aef78053b6462f2e74fdb750576dbd3eab96 (patch)
tree6c1e0a504da727fb6ec699d930b8b8ee6883c027 /src/adlmidi_private.cpp
parenta983e9325269a1d1abebeaa104c862041e315598 (diff)
parentbfd80e89d91a1f014ee8c7bf8996aecfbc257975 (diff)
downloadlibADLMIDI-9fb6aef78053b6462f2e74fdb750576dbd3eab96.tar.gz
libADLMIDI-9fb6aef78053b6462f2e74fdb750576dbd3eab96.tar.bz2
libADLMIDI-9fb6aef78053b6462f2e74fdb750576dbd3eab96.zip
Merge branch 'banks3-rebase'
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