aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi.cpp
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2020-08-19 02:11:01 +0300
committerWohlstand <admin@wohlnet.ru>2020-08-19 02:11:01 +0300
commit2ba770631ff1dc978d16a874a4ab99930ce12d2d (patch)
treeecf1195966681e24892ecba6b77c067ce24e7dbd /src/adlmidi.cpp
parent6d4dc0b87bf3a27f0510b63279b17b457821c38c (diff)
downloadlibADLMIDI-2ba770631ff1dc978d16a874a4ab99930ce12d2d.tar.gz
libADLMIDI-2ba770631ff1dc978d16a874a4ab99930ce12d2d.tar.bz2
libADLMIDI-2ba770631ff1dc978d16a874a4ab99930ce12d2d.zip
Use new banks database format
However, it's stil need to clean-up and fix gen_adldata for a correct work!
Diffstat (limited to 'src/adlmidi.cpp')
-rw-r--r--src/adlmidi.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp
index 88dae70..5790637 100644
--- a/src/adlmidi.cpp
+++ b/src/adlmidi.cpp
@@ -399,10 +399,23 @@ ADLMIDI_EXPORT int adl_loadEmbeddedBank(struct ADL_MIDIPlayer *device, ADL_Bank
Synth::BankMap::iterator it = Synth::BankMap::iterator::from_ptrs(bank->pointer);
size_t id = it->first;
- for (unsigned i = 0; i < 128; ++i) {
- size_t insno = i + ((id & Synth::PercussionTag) ? 128 : 0);
- size_t adlmeta = ::banks[num][insno];
- it->second.ins[i] = adlinsdata2::from_adldata(::adlins[adlmeta]);
+ const BanksDump::BankEntry &bankEntry = g_embeddedBanks[num];
+
+ bool ss = (id & Synth::PercussionTag);
+ const size_t bankID = 0;
+
+// bank_count_t maxBanks = ss ? bankEntry.banksPercussionCount : bankEntry.banksMelodicCount;
+ bank_count_t banksOffset = ss ? bankEntry.banksOffsetPercussive : bankEntry.banksOffsetMelodic;
+ size_t bankIndex = g_embeddedBanksMidiIndex[banksOffset + bankID];
+ const BanksDump::MidiBank &bankData = g_embeddedBanksMidi[bankIndex];
+
+ for (unsigned i = 0; i < 128; ++i)
+ {
+// size_t insno = i + ((id & Synth::PercussionTag) ? 128 : 0);
+// size_t adlmeta = ::banks[num][insno];
+// it->second.ins[i] = adlinsdata2::from_adldata(::adlins[adlmeta]);
+ BanksDump::InstrumentEntry instIn = g_embeddedBanksInstruments[bankData.insts[i]];
+ adlFromInstrument(instIn, it->second.ins[i]);
}
return 0;
#endif