aboutsummaryrefslogtreecommitdiff
path: root/utils/gen_adldata/file_formats/load_bnk.h
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2019-06-06 22:17:05 +0300
committerWohlstand <admin@wohlnet.ru>2019-06-06 22:17:05 +0300
commitdb28f6d8489798eec60ef7f12e2f3bff423a5681 (patch)
tree28736b987a5c53af5ccbdfa2b93475be0df26663 /utils/gen_adldata/file_formats/load_bnk.h
parentc011f08e4487935d7a523009b380963c508a2c9f (diff)
downloadlibADLMIDI-db28f6d8489798eec60ef7f12e2f3bff423a5681.tar.gz
libADLMIDI-db28f6d8489798eec60ef7f12e2f3bff423a5681.tar.bz2
libADLMIDI-db28f6d8489798eec60ef7f12e2f3bff423a5681.zip
All bank formats now loading into new database
Diffstat (limited to 'utils/gen_adldata/file_formats/load_bnk.h')
-rw-r--r--utils/gen_adldata/file_formats/load_bnk.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/utils/gen_adldata/file_formats/load_bnk.h b/utils/gen_adldata/file_formats/load_bnk.h
index ca20625..beb2bd5 100644
--- a/utils/gen_adldata/file_formats/load_bnk.h
+++ b/utils/gen_adldata/file_formats/load_bnk.h
@@ -7,7 +7,9 @@
#include <cstdint>
#include <string>
-bool BankFormats::LoadBNK(const char *fn, unsigned bank, const char *prefix, bool is_fat, bool percussive)
+bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank,
+ const std::string &bankTitle, const char *prefix,
+ bool is_fat, bool percussive)
{
#ifdef HARD_BANKS
writeIni("HMI", fn, prefix, bank, percussive ? INI_Drums : INI_Melodic);
@@ -25,6 +27,9 @@ bool BankFormats::LoadBNK(const char *fn, unsigned bank, const char *prefix, boo
}
std::fclose(fp);
+ size_t bankDb = db.initBank(bank, bankTitle, BanksDump::BankEntry::SETUP_Generic);
+ BanksDump::MidiBank bnk;
+
/*printf("%s:\n", fn);*/
//unsigned short version = *(short*)&data[0]; // major,minor (2 bytes)
// "ADLIB-" (6 bytes)
@@ -80,6 +85,9 @@ bool BankFormats::LoadBNK(const char *fn, unsigned bank, const char *prefix, boo
else
sprintf(name2, "%s%u", prefix, n);
+ BanksDump::InstrumentEntry inst;
+ BanksDump::Operator ops[5];
+
insdata tmp;
tmp.data[0] = uint8_t(
(op1[ 9] << 7) // TREMOLO FLAG
@@ -115,11 +123,16 @@ bool BankFormats::LoadBNK(const char *fn, unsigned bank, const char *prefix, boo
if(is_fat) tmp.data[10] ^= 1;
+ db.toOps(tmp, ops, 0);
+ inst.percussionKeyNumber = is_fat ? voice_num : (percussive ? usage_flag : 0);
+ inst.setFbConn(op1[2] * 2 + op1[12]);
+
size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2);
if(!is_fat)
{
SetBank(bank, (unsigned int)gmno, resno);
+ db.addInstrument(bnk, n & 127, inst, ops);
}
else
{
@@ -151,6 +164,8 @@ bool BankFormats::LoadBNK(const char *fn, unsigned bank, const char *prefix, boo
*/
}
+ db.addMidiBank(bankDb, percussive, bnk);
+
AdlBankSetup setup;
setup.volumeModel = VOLUME_Generic;
setup.deepTremolo = false;