From 732f2f269d6be456b93af18c8cec035fc01b5eba Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Fri, 31 May 2019 22:07:21 +0300 Subject: Organize file formats parsers, and multi-bank AIL support --- utils/gen_adldata/file_formats/load_bnk2.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_bnk2.h') diff --git a/utils/gen_adldata/file_formats/load_bnk2.h b/utils/gen_adldata/file_formats/load_bnk2.h index 072712c..6a1cd25 100644 --- a/utils/gen_adldata/file_formats/load_bnk2.h +++ b/utils/gen_adldata/file_formats/load_bnk2.h @@ -8,9 +8,9 @@ inline int stdstoi(const std::string& str) return std::atoi(str.c_str()); } -static bool LoadBNK2(const char *fn, unsigned bank, const char *prefix, - const std::string &melo_filter, - const std::string &perc_filter) +bool BankFormats::LoadBNK2(const char *fn, unsigned bank, const char *prefix, + const std::string &melo_filter, + const std::string &perc_filter) { #ifdef HARD_BANKS writeIni("AdLibGold", fn, prefix, bank, INI_Both, melo_filter.c_str(), perc_filter.c_str()); -- cgit v1.2.3 From db28f6d8489798eec60ef7f12e2f3bff423a5681 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Thu, 6 Jun 2019 22:17:05 +0300 Subject: All bank formats now loading into new database --- utils/gen_adldata/file_formats/load_bnk2.h | 38 +++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_bnk2.h') diff --git a/utils/gen_adldata/file_formats/load_bnk2.h b/utils/gen_adldata/file_formats/load_bnk2.h index 6a1cd25..7ab8af6 100644 --- a/utils/gen_adldata/file_formats/load_bnk2.h +++ b/utils/gen_adldata/file_formats/load_bnk2.h @@ -8,7 +8,8 @@ inline int stdstoi(const std::string& str) return std::atoi(str.c_str()); } -bool BankFormats::LoadBNK2(const char *fn, unsigned bank, const char *prefix, +bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, + const std::string &bankTitle, const char *prefix, const std::string &melo_filter, const std::string &perc_filter) { @@ -28,6 +29,10 @@ bool BankFormats::LoadBNK2(const char *fn, unsigned bank, const char *prefix, } std::fclose(fp); + size_t bankDb = db.initBank(bank, bankTitle, BanksDump::BankEntry::SETUP_Generic); + BanksDump::MidiBank bnkMelodic; + BanksDump::MidiBank bnkPercussion; + unsigned short ins_entries = *(unsigned short *)&data[28 + 2 + 10]; unsigned char *records = &data[48]; @@ -47,13 +52,24 @@ bool BankFormats::LoadBNK2(const char *fn, unsigned bank, const char *prefix, } int gmno = 0; + int patchId = 0; + bool isPercussion = false; if(name.substr(0, melo_filter.size()) == melo_filter) - gmno = stdstoi(name.substr(melo_filter.size())); + { + gmno = patchId = stdstoi(name.substr(melo_filter.size())); + isPercussion = false; + } else if(name.substr(0, perc_filter.size()) == perc_filter) - gmno = stdstoi(name.substr(perc_filter.size())) + 128; + { + patchId = stdstoi(name.substr(perc_filter.size())); + gmno = patchId + 128; + isPercussion = false; + } else continue; + BanksDump::MidiBank &bnk = isPercussion ? bnkMelodic : bnkPercussion; + const unsigned char *insdata = &data[size_t(offset2)]; const unsigned char *ops[4] = { insdata + 0, insdata + 6, insdata + 12, insdata + 18 }; unsigned char C4xxxFFFC = insdata[24]; @@ -64,6 +80,9 @@ bool BankFormats::LoadBNK2(const char *fn, unsigned bank, const char *prefix, char name2[512]; sprintf(name2, "%s%c%u", prefix, (gmno & 128) ? 'P' : 'M', gmno & 127); + BanksDump::InstrumentEntry inst; + BanksDump::Operator opsD[5]; + struct insdata tmp[2]; for(unsigned a = 0; a < 2; ++a) { @@ -79,6 +98,7 @@ bool BankFormats::LoadBNK2(const char *fn, unsigned bank, const char *prefix, tmp[a].data[9] = ops[a * 2 + 1][1]; tmp[a].finetune = (int8_t)TTTTTTTT; tmp[a].diff = false; + db.toOps(tmp[a], opsD, a * 2); } tmp[0].data[10] = C4xxxFFFC & 0x0F; tmp[1].data[10] = (tmp[0].data[10] & 0x0E) | (C4xxxFFFC >> 7); @@ -91,6 +111,10 @@ bool BankFormats::LoadBNK2(const char *fn, unsigned bank, const char *prefix, tmp2.midi_velocity_offset = 0; tmp2.rhythmModeDrum = 0; + inst.setFbConn(C4xxxFFFC & 0x0F, (tmp[0].data[10] & 0x0E) | (C4xxxFFFC >> 7)); + inst.noteOffset1 = (int8_t)TTTTTTTT; + inst.percussionKeyNumber = (gmno & 128) ? 35 : 0; + if(xxP24NNN & 8) { // dual-op @@ -98,15 +122,23 @@ bool BankFormats::LoadBNK2(const char *fn, unsigned bank, const char *prefix, tmp[1].diff = true; size_t resno = InsertIns(tmp[0], tmp[1], tmp2, std::string(1, '\377') + name, name2); SetBank(bank, (unsigned int)gmno, resno); + + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; + db.addInstrument(bnk, patchId, inst, opsD); } else { // single-op size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2); SetBank(bank, (unsigned int)gmno, resno); + + db.addInstrument(bnk, patchId, inst, opsD); } } + db.addMidiBank(bankDb, false, bnkMelodic); + db.addMidiBank(bankDb, true, bnkPercussion); + AdlBankSetup setup; setup.volumeModel = VOLUME_Generic; setup.deepTremolo = false; -- cgit v1.2.3 From 651a39afe998defee15140aebb967e57bd4d64e2 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Tue, 2 Jul 2019 02:49:11 +0300 Subject: Fixed messed up AdLib Gold BNK --- utils/gen_adldata/file_formats/load_bnk2.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_bnk2.h') diff --git a/utils/gen_adldata/file_formats/load_bnk2.h b/utils/gen_adldata/file_formats/load_bnk2.h index 7ab8af6..e977cd7 100644 --- a/utils/gen_adldata/file_formats/load_bnk2.h +++ b/utils/gen_adldata/file_formats/load_bnk2.h @@ -63,12 +63,12 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, { patchId = stdstoi(name.substr(perc_filter.size())); gmno = patchId + 128; - isPercussion = false; + isPercussion = true; } else continue; - BanksDump::MidiBank &bnk = isPercussion ? bnkMelodic : bnkPercussion; + BanksDump::MidiBank &bnk = isPercussion ? bnkPercussion : bnkMelodic; const unsigned char *insdata = &data[size_t(offset2)]; const unsigned char *ops[4] = { insdata + 0, insdata + 6, insdata + 12, insdata + 18 }; -- cgit v1.2.3 From bfd932874f5e107eaf81c40b87d5c722170a5ace Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Mon, 8 Jul 2019 02:28:48 +0300 Subject: More accurate silence detector Now, there are very low level of error! The only one weird condition is still be there... --- utils/gen_adldata/file_formats/load_bnk2.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_bnk2.h') diff --git a/utils/gen_adldata/file_formats/load_bnk2.h b/utils/gen_adldata/file_formats/load_bnk2.h index e977cd7..5468cb5 100644 --- a/utils/gen_adldata/file_formats/load_bnk2.h +++ b/utils/gen_adldata/file_formats/load_bnk2.h @@ -124,7 +124,7 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, SetBank(bank, (unsigned int)gmno, resno); inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; - db.addInstrument(bnk, patchId, inst, opsD); + db.addInstrument(bnk, patchId, inst, opsD, fn); } else { @@ -132,7 +132,7 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2); SetBank(bank, (unsigned int)gmno, resno); - db.addInstrument(bnk, patchId, inst, opsD); + db.addInstrument(bnk, patchId, inst, opsD, fn); } } -- cgit v1.2.3 From e4db1c263355202a9cb033f9e07d42c31e3ff4a5 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Thu, 20 Aug 2020 00:01:06 +0300 Subject: gen_adldata: First step of old code clean-up Verify that all code here is in safe --- utils/gen_adldata/file_formats/load_bnk2.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_bnk2.h') diff --git a/utils/gen_adldata/file_formats/load_bnk2.h b/utils/gen_adldata/file_formats/load_bnk2.h index 5468cb5..fc36dd2 100644 --- a/utils/gen_adldata/file_formats/load_bnk2.h +++ b/utils/gen_adldata/file_formats/load_bnk2.h @@ -120,8 +120,8 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, // dual-op tmp2.real4op = true; tmp[1].diff = true; - size_t resno = InsertIns(tmp[0], tmp[1], tmp2, std::string(1, '\377') + name, name2); - SetBank(bank, (unsigned int)gmno, resno); +// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, std::string(1, '\377') + name, name2); +// SetBank(bank, (unsigned int)gmno, resno); inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; db.addInstrument(bnk, patchId, inst, opsD, fn); @@ -129,8 +129,8 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, else { // single-op - size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2); - SetBank(bank, (unsigned int)gmno, resno); +// size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2); +// SetBank(bank, (unsigned int)gmno, resno); db.addInstrument(bnk, patchId, inst, opsD, fn); } @@ -139,12 +139,12 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, db.addMidiBank(bankDb, false, bnkMelodic); db.addMidiBank(bankDb, true, bnkPercussion); - AdlBankSetup setup; - setup.volumeModel = VOLUME_Generic; - setup.deepTremolo = false; - setup.deepVibrato = false; - setup.scaleModulators = false; - SetBankSetup(bank, setup); +// AdlBankSetup setup; +// setup.volumeModel = VOLUME_Generic; +// setup.deepTremolo = false; +// setup.deepVibrato = false; +// setup.scaleModulators = false; +// SetBankSetup(bank, setup); return true; } -- cgit v1.2.3 From f656802667e93be893ebc30a18b0f12482586e6f Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Sun, 23 Aug 2020 22:10:46 +0300 Subject: gen_adldata: remove the rest of old code --- utils/gen_adldata/file_formats/load_bnk2.h | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_bnk2.h') diff --git a/utils/gen_adldata/file_formats/load_bnk2.h b/utils/gen_adldata/file_formats/load_bnk2.h index fc36dd2..1d78c4b 100644 --- a/utils/gen_adldata/file_formats/load_bnk2.h +++ b/utils/gen_adldata/file_formats/load_bnk2.h @@ -120,18 +120,12 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, // dual-op tmp2.real4op = true; tmp[1].diff = true; -// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, std::string(1, '\377') + name, name2); -// SetBank(bank, (unsigned int)gmno, resno); - inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; db.addInstrument(bnk, patchId, inst, opsD, fn); } else { // single-op -// size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2); -// SetBank(bank, (unsigned int)gmno, resno); - db.addInstrument(bnk, patchId, inst, opsD, fn); } } @@ -139,13 +133,6 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, db.addMidiBank(bankDb, false, bnkMelodic); db.addMidiBank(bankDb, true, bnkPercussion); -// AdlBankSetup setup; -// setup.volumeModel = VOLUME_Generic; -// setup.deepTremolo = false; -// setup.deepVibrato = false; -// setup.scaleModulators = false; -// SetBankSetup(bank, setup); - return true; } -- cgit v1.2.3 From 1b4237dffce60e8546e550767b2816c1979bbb9d Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Sun, 23 Aug 2020 23:54:07 +0300 Subject: gen_adldata: Remove more old code --- utils/gen_adldata/file_formats/load_bnk2.h | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_bnk2.h') diff --git a/utils/gen_adldata/file_formats/load_bnk2.h b/utils/gen_adldata/file_formats/load_bnk2.h index 1d78c4b..46ba604 100644 --- a/utils/gen_adldata/file_formats/load_bnk2.h +++ b/utils/gen_adldata/file_formats/load_bnk2.h @@ -83,7 +83,7 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, BanksDump::InstrumentEntry inst; BanksDump::Operator opsD[5]; - struct insdata tmp[2]; + InstBuffer tmp[2]; for(unsigned a = 0; a < 2; ++a) { tmp[a].data[0] = ops[a * 2 + 0][0]; @@ -96,21 +96,11 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, tmp[a].data[7] = ops[a * 2 + 1][4] & 0x07; tmp[a].data[8] = ops[a * 2 + 0][1]; tmp[a].data[9] = ops[a * 2 + 1][1]; - tmp[a].finetune = (int8_t)TTTTTTTT; - tmp[a].diff = false; - db.toOps(tmp[a], opsD, a * 2); + db.toOps(tmp[a].d, opsD, a * 2); } tmp[0].data[10] = C4xxxFFFC & 0x0F; tmp[1].data[10] = (tmp[0].data[10] & 0x0E) | (C4xxxFFFC >> 7); - ins tmp2; - tmp2.notenum = (gmno & 128) ? 35 : 0; - tmp2.pseudo4op = false; - tmp2.real4op = false; - tmp2.voice2_fine_tune = 0.0; - tmp2.midi_velocity_offset = 0; - tmp2.rhythmModeDrum = 0; - inst.setFbConn(C4xxxFFFC & 0x0F, (tmp[0].data[10] & 0x0E) | (C4xxxFFFC >> 7)); inst.noteOffset1 = (int8_t)TTTTTTTT; inst.percussionKeyNumber = (gmno & 128) ? 35 : 0; @@ -118,8 +108,6 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank, if(xxP24NNN & 8) { // dual-op - tmp2.real4op = true; - tmp[1].diff = true; inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; db.addInstrument(bnk, patchId, inst, opsD, fn); } -- cgit v1.2.3