From 81f905ea76f0efb6ea35331bd1fe476f14f804de Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Mon, 1 Jul 2019 05:01:55 +0300 Subject: First working of new database // not so stable, needs a polishing, however, multibank from embedded 72'th bank (DMXOPL3) works! --- src/adlmidi.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/adlmidi.cpp') diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index 72cf601..81a3b1c 100644 --- a/src/adlmidi.cpp +++ b/src/adlmidi.cpp @@ -164,7 +164,7 @@ ADLMIDI_EXPORT int adl_setBank(ADL_MIDIPlayer *device, int bank) "adl_openBankData() functions instead of adl_setBank()."); return -1; #else - const uint32_t NumBanks = static_cast(maxAdlBanks()); + const uint32_t NumBanks = static_cast(g_embeddedBanksCount); int32_t bankno = bank; if(bankno < 0) @@ -192,7 +192,7 @@ ADLMIDI_EXPORT int adl_setBank(ADL_MIDIPlayer *device, int bank) ADLMIDI_EXPORT int adl_getBanksCount() { #ifndef DISABLE_EMBEDDED_BANKS - return maxAdlBanks(); + return static_cast(g_embeddedBanksCount); #else return 0; #endif -- cgit v1.2.3 From a1e6586b78d9595c88a3266a7638ef7ff0963943 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Sun, 7 Jul 2019 02:38:33 +0300 Subject: Few fixes - Don't use rhythm mode with IMF even loaded MIDI bank asks for it - Reduce usage of old database related things --- src/adlmidi.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/adlmidi.cpp') diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index 81a3b1c..dee99d2 100644 --- a/src/adlmidi.cpp +++ b/src/adlmidi.cpp @@ -201,7 +201,7 @@ ADLMIDI_EXPORT int adl_getBanksCount() ADLMIDI_EXPORT const char *const *adl_getBankNames() { #ifndef DISABLE_EMBEDDED_BANKS - return banknames; + return g_embeddedBankNames; #else return NULL; #endif @@ -363,7 +363,7 @@ ADLMIDI_EXPORT int adl_loadEmbeddedBank(struct ADL_MIDIPlayer *device, ADL_Bank "adl_openBankData() functions instead of adl_loadEmbeddedBank()."); return -1; #else - if(num < 0 || num >= maxAdlBanks()) + if(num < 0 || num >= static_cast(g_embeddedBanksCount)) return -1; Synth::BankMap::iterator it = Synth::BankMap::iterator::from_ptrs(bank->pointer); -- cgit v1.2.3 From 2ba770631ff1dc978d16a874a4ab99930ce12d2d Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Wed, 19 Aug 2020 02:11:01 +0300 Subject: Use new banks database format However, it's stil need to clean-up and fix gen_adldata for a correct work! --- src/adlmidi.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src/adlmidi.cpp') 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 -- cgit v1.2.3 From 761bd05f107b856c8aefeb3e753fa94221f926bc Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Mon, 24 Aug 2020 13:32:11 +0300 Subject: Fixed a bug of junk instruments instead of blank --- src/adlmidi.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/adlmidi.cpp') diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index 5790637..43ef05a 100644 --- a/src/adlmidi.cpp +++ b/src/adlmidi.cpp @@ -411,10 +411,10 @@ ADLMIDI_EXPORT int adl_loadEmbeddedBank(struct ADL_MIDIPlayer *device, ADL_Bank 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]]; + midi_bank_idx_t instIdx = bankData.insts[i]; + if(instIdx < 0) + continue; + BanksDump::InstrumentEntry instIn = g_embeddedBanksInstruments[instIdx]; adlFromInstrument(instIn, it->second.ins[i]); } return 0; -- cgit v1.2.3