From 283b2f249a17eba3be8a98e09f1d009e2ef20aee Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Thu, 30 May 2019 18:11:59 +0300 Subject: Continue work on a new db format with a small dumper --- utils/gen_adldata/file_formats/load_wopl.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h index cd8765e..cef475f 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -18,7 +18,7 @@ enum class WOPL_Flags WOPL_RhythmModeMask = 0x38, }; -static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) +static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const char *prefix) { FILE *fp = std::fopen(fn, "rb"); if(!fp) @@ -27,6 +27,7 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) std::fflush(stderr); return false; } + std::fseek(fp, 0, SEEK_END); std::vector data(size_t(std::ftell(fp))); std::rewind(fp); @@ -63,6 +64,8 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) setup.volumeModel = (int)data[0x12]; setup.scaleModulators = false; + size_t bankDb = (unsigned)db.initBank(bank, static_cast((static_cast(data[0x11]) << 8) | static_cast(data[0x12]))); + // Validate file format by size calculation if(version == 1) { @@ -98,12 +101,14 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) percussion_offset = melodic_offset + (insSize * 128 * mbanks_count); - uint32_t root_offsets[2] = {melodic_offset, percussion_offset}; + //uint32_t root_sizes[2] = {mbanks_count, pbanks_count}; + uint32_t root_sizes[2] = {1, 1}; + uint32_t root_offsets[2] = {melodic_offset, percussion_offset}; for(size_t bset = 0; bset < 2; bset++) { bool is_percussion = (bset == 1); - for(uint32_t bankno = 0; bankno < 1; bankno++) // only first melodic bank (Until multi-banks support will be implemented) + for(uint32_t bankno = 0; bankno < root_sizes[bset]; bankno++) // only first melodic bank (Until multi-banks support will be implemented) { uint32_t bank_offset = root_offsets[bset] + (bankno * insSize * 128); -- cgit v1.2.3 From 7786fa8f6ba65673d24aa07245cb11d9a1fc1350 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Fri, 31 May 2019 20:25:44 +0300 Subject: Make the output of data into new database format --- utils/gen_adldata/file_formats/load_wopl.h | 49 ++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h index cef475f..6c57950 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -18,7 +18,7 @@ enum class WOPL_Flags WOPL_RhythmModeMask = 0x38, }; -static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const char *prefix) +static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const std::string bankTitle, const char *prefix) { FILE *fp = std::fopen(fn, "rb"); if(!fp) @@ -64,7 +64,7 @@ static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const char *p setup.volumeModel = (int)data[0x12]; setup.scaleModulators = false; - size_t bankDb = (unsigned)db.initBank(bank, static_cast((static_cast(data[0x11]) << 8) | static_cast(data[0x12]))); + size_t bankDb = (unsigned)db.initBank(bank, bankTitle, static_cast((static_cast(data[0x11]) << 8) | static_cast(data[0x12]))); // Validate file format by size calculation if(version == 1) @@ -94,16 +94,28 @@ static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const char *p uint32_t melodic_offset = 0; uint32_t percussion_offset = 0; + uint32_t melodic_meta_offset = 0; + uint32_t percussion_meta_offset = 0; + if(version < 2) + { melodic_offset = 0x13; + melodic_meta_offset = 0; + } else + { melodic_offset = 0x13 + 34 * mbanks_count + 34 * pbanks_count; + melodic_meta_offset = 0x13; + percussion_meta_offset = 0x13 + 34 * mbanks_count; + } percussion_offset = melodic_offset + (insSize * 128 * mbanks_count); //uint32_t root_sizes[2] = {mbanks_count, pbanks_count}; - uint32_t root_sizes[2] = {1, 1}; + uint32_t root_sizes[2] = {(version >= 2) ? mbanks_count : 1u, + (version >= 2) ? pbanks_count : 1u}; uint32_t root_offsets[2] = {melodic_offset, percussion_offset}; + uint32_t root_meta_offsets[2] = {melodic_meta_offset, percussion_meta_offset}; for(size_t bset = 0; bset < 2; bset++) { @@ -112,12 +124,23 @@ static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const char *p { uint32_t bank_offset = root_offsets[bset] + (bankno * insSize * 128); + BanksDump::MidiBank bnk; + if(version >= 2) + { + uint32_t meta_offset = root_meta_offsets[bset] + (bankno * 34); + bnk.lsb = data[meta_offset + 32 + 0]; + bnk.msb = data[meta_offset + 32 + 1]; + } + for(uint32_t i = 0; i < 128; i++) { uint32_t offset = bank_offset + uint32_t(i * insSize); std::string name; insdata tmp[2]; + BanksDump::InstrumentEntry inst; + BanksDump::Operator ops[5]; + name.resize(32); std::memcpy(&name[0], data.data() + offset, 32); name.resize(std::strlen(&name[0])); @@ -165,6 +188,9 @@ static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const char *p * Those fields are made for hot-loading while runtime, but not * for generation of embedded banks database. */ + db.toOps(tmp[0], ops, 0); + db.toOps(tmp[1], ops, 2); + tmp[0].finetune = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 32)); tmp[1].finetune = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 34)); @@ -180,6 +206,21 @@ static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const char *p tmp2.rhythmModeDrum = (flags & (uint8_t)WOPL_Flags::WOPL_RhythmModeMask); tmp[0].diff = false; tmp[1].diff = real4op && !tmp2.pseudo4op; + //---------------- + inst.instFlags = flags; + inst.percussionKeyNumber = is_percussion ? data[offset + 38] : 0; + inst.noteOffset1 = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 32)); + inst.noteOffset2 = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 32)); + inst.secondVoiceDetune = static_cast(data[offset + 37]); + inst.midiVelocityOffset = static_cast(data[offset + 36]); + inst.fbConn = (static_cast(data[offset + 40])) | + (static_cast(data[offset + 41]) << 8); + if(version >= 2) + { + inst.delay_on_ms = toUint16BE((const uint8_t *)data.data() + offset + 62); + inst.delay_off_ms = toUint16BE((const uint8_t *)data.data() + offset + 64); + } + //---------------- int8_t fine_tune = (int8_t)data[offset + 37]; if(fine_tune != 0) @@ -229,7 +270,9 @@ static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const char *p size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); SetBank(bank, gmno, resno); } + db.addInstrument(bnk, i, inst, ops); } + db.addMidiBank(bankDb, is_percussion, bnk); } } -- cgit v1.2.3 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/common.h | 9 ++ utils/gen_adldata/file_formats/load_ail.h | 153 +++++++++++++++++++++++++- utils/gen_adldata/file_formats/load_bisqwit.h | 2 +- utils/gen_adldata/file_formats/load_bnk.h | 2 +- utils/gen_adldata/file_formats/load_bnk2.h | 6 +- utils/gen_adldata/file_formats/load_ea.h | 2 +- utils/gen_adldata/file_formats/load_ibk.h | 2 +- utils/gen_adldata/file_formats/load_jv.h | 2 +- utils/gen_adldata/file_formats/load_op2.h | 2 +- utils/gen_adldata/file_formats/load_tmb.h | 2 +- utils/gen_adldata/file_formats/load_wopl.h | 4 +- 11 files changed, 172 insertions(+), 14 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/common.h b/utils/gen_adldata/file_formats/common.h index d06059e..f441221 100644 --- a/utils/gen_adldata/file_formats/common.h +++ b/utils/gen_adldata/file_formats/common.h @@ -25,4 +25,13 @@ inline uint16_t toUint16LE(const uint8_t *arr) return num; } +inline uint32_t toUint32LE(const uint8_t *arr) +{ + uint32_t num = arr[0]; + num |= (static_cast(arr[1] << 8) & 0x0000FF00); + num |= (static_cast(arr[2] << 16) & 0x00FF0000); + num |= (static_cast(arr[3] << 24) & 0xFF000000); + return num; +} + #endif // COMMON_H diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h index 80ca8ad..2feedb9 100644 --- a/utils/gen_adldata/file_formats/load_ail.h +++ b/utils/gen_adldata/file_formats/load_ail.h @@ -3,8 +3,17 @@ #include "../progs_cache.h" #include "../midi_inst_list.h" +#include "common.h" -static bool LoadMiles(const char *fn, unsigned bank, const char *prefix) +struct GTL_Head // GTL file header entry structure +{ + uint8_t patch = 0; + uint8_t bank = 0; + uint32_t offset = 0; +}; + +bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, + const std::string &bankTitle, const char *prefix) { #ifdef HARD_BANKS writeIni("AIL", fn, prefix, bank, INI_Both); @@ -13,7 +22,7 @@ static bool LoadMiles(const char *fn, unsigned bank, const char *prefix) if(!fp) return false; std::fseek(fp, 0, SEEK_END); - std::vector data(size_t(std::ftell(fp))); + std::vector data(size_t(std::ftell(fp))); std::rewind(fp); if(std::fread(&data[0], 1, data.size(), fp) != data.size()) { @@ -22,6 +31,145 @@ static bool LoadMiles(const char *fn, unsigned bank, const char *prefix) } std::fclose(fp); + GTL_Head head; + std::vector heads; + uint_fast8_t max_bank_number = 0; + heads.reserve(256); + uint8_t *data_pos = data.data(); + uint8_t *data_end = data.data() + data.size(); + do + { + if((data_end - data_pos) < 6) + return false; + + head.patch = data_pos[0]; + head.bank = data_pos[1]; + head.offset = toUint32LE(data_pos + 2); + + if((head.patch == 0xFF) || (head.bank == 0xFF)) + break; + + if(head.patch > 127)//Patch ID is more than 127 + return false; + + if((head.bank != 0x7F) && (head.bank > max_bank_number) ) + max_bank_number = head.bank; + + heads.push_back(head); + data_pos += 6; + } + while(data_pos < data_end); + + size_t bankDb = db.initBank(bank, bankTitle, BanksDump::BankEntry::SETUP_AIL); + + std::vector bnkMelodic; + bnkMelodic.resize(max_bank_number + 1, BanksDump::MidiBank()); + BanksDump::MidiBank bnkPercussion; + + { + uint8_t bank_lsb_counter = 0; + uint8_t bank_msb_counter = 0; + for(BanksDump::MidiBank &b : bnkMelodic) + { + b.lsb = bank_lsb_counter++; + b.msb = bank_msb_counter; + if(bank_lsb_counter == 0) + bank_msb_counter++; + } + } + + uint32_t totalInsts = static_cast(heads.size()); + for(uint32_t i = 0; i < totalInsts; i++) + { + GTL_Head &h = heads[i]; + bool isPerc = (h.bank == 0x7F); + int gmPatchId = isPerc ? h.patch : (h.patch + (h.bank * 128)); + unsigned offset = h.offset; + + BanksDump::MidiBank &bnk = isPerc ? bnkPercussion : bnkMelodic[h.bank]; + + int gmno = h.bank == 0x7F ? int(h.patch + 0x80) : int(h.patch); + int midi_index = gmno < 128 ? gmno + : gmno < 128 + 35 ? -1 + : gmno < 128 + 88 ? gmno - 35 + : -1; + + unsigned length = data[offset] + data[offset + 1] * 256; + signed char notenum = ((signed char)data[offset + 2]); + + BanksDump::InstrumentEntry inst; + BanksDump::Operator ops[5]; + + char name2[512]; + sprintf(name2, "%s%c%u", prefix, + (gmno < 128 ? 'M' : 'P'), gmno & 127); + + insdata tmp[200]; + + const unsigned inscount = (length - 3) / 11; + bool twoOp = (inscount == 1); + + for(unsigned i = 0; i < inscount; ++i) + { + if(i >= 2) + break; + unsigned o = offset + 3 + i * 11; + tmp[i].finetune = (gmno < 128 && i == 0) ? notenum : 0; + tmp[i].diff = (i == 1); + tmp[i].data[0] = data[o + 0]; // 20 + tmp[i].data[8] = data[o + 1]; // 40 (vol) + tmp[i].data[2] = data[o + 2]; // 60 + tmp[i].data[4] = data[o + 3]; // 80 + tmp[i].data[6] = data[o + 4]; // E0 + tmp[i].data[1] = data[o + 6]; // 23 + tmp[i].data[9] = data[o + 7]; // 43 (vol) + tmp[i].data[3] = data[o + 8]; // 63 + tmp[i].data[5] = data[o + 9]; // 83 + tmp[i].data[7] = data[o + 10]; // E3 + + unsigned fb_c = data[offset + 3 + 5]; + tmp[i].data[10] = uint8_t(fb_c); + if(i == 1) + { + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; + tmp[0].data[10] = fb_c & 0x0F; + tmp[1].data[10] = uint8_t((fb_c & 0x0E) | (fb_c >> 7)); + } + db.toOps(tmp[i], ops, i * 2); + } + + if(inscount <= 2) + { + struct ins tmp2; + tmp2.notenum = gmno < 128 ? 0 : (unsigned char)notenum; + tmp2.pseudo4op = false; + tmp2.real4op = (inscount > 1); + tmp2.voice2_fine_tune = 0.0; + tmp2.midi_velocity_offset = 0; + tmp2.rhythmModeDrum = 0; + std::string name; + if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index]; + if(h.bank == 0 || h.bank == 0x7F) + { + size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, twoOp); + SetBank(bank, (unsigned int)gmno, resno); + } + //--------------------------------------------------------------- + inst.percussionKeyNumber = isPerc ? static_cast(notenum) : 0; + inst.noteOffset1 = isPerc ? 0 : notenum; + unsigned fb_c = data[offset + 3 + 5]; + inst.fbConn = (static_cast(fb_c & 0x0F)) | + (static_cast((fb_c & 0x0E) | (fb_c >> 7)) << 8); + db.addInstrument(bnk, h.patch, inst, ops); + } + } + + for(auto &b : bnkMelodic) + db.addMidiBank(bankDb, false, b); + + db.addMidiBank(bankDb, true, bnkPercussion); + +#if 0 for(unsigned a = 0; a < 2000; ++a) { unsigned gm_patch = data[a * 6 + 0]; @@ -99,6 +247,7 @@ static bool LoadMiles(const char *fn, unsigned bank, const char *prefix) SetBank(bank, (unsigned int)gmno, resno); } } +#endif AdlBankSetup setup; setup.volumeModel = VOLUME_Generic; diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h index 9749a76..8686e90 100644 --- a/utils/gen_adldata/file_formats/load_bisqwit.h +++ b/utils/gen_adldata/file_formats/load_bisqwit.h @@ -4,7 +4,7 @@ #include "../progs_cache.h" #include "../midi_inst_list.h" -static bool LoadBisqwit(const char *fn, unsigned bank, const char *prefix) +bool BankFormats::LoadBisqwit(const char *fn, unsigned bank, const char *prefix) { #ifdef HARD_BANKS writeIni("Bisqwit", fn, prefix, bank, INI_Both); diff --git a/utils/gen_adldata/file_formats/load_bnk.h b/utils/gen_adldata/file_formats/load_bnk.h index f1412ba..ca20625 100644 --- a/utils/gen_adldata/file_formats/load_bnk.h +++ b/utils/gen_adldata/file_formats/load_bnk.h @@ -7,7 +7,7 @@ #include #include -static bool LoadBNK(const char *fn, unsigned bank, const char *prefix, bool is_fat, bool percussive) +bool BankFormats::LoadBNK(const char *fn, unsigned bank, const char *prefix, bool is_fat, bool percussive) { #ifdef HARD_BANKS writeIni("HMI", fn, prefix, bank, percussive ? INI_Drums : INI_Melodic); 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()); diff --git a/utils/gen_adldata/file_formats/load_ea.h b/utils/gen_adldata/file_formats/load_ea.h index c217c09..67283ca 100644 --- a/utils/gen_adldata/file_formats/load_ea.h +++ b/utils/gen_adldata/file_formats/load_ea.h @@ -4,7 +4,7 @@ #include "../progs_cache.h" #include "../midi_inst_list.h" -static bool LoadEA(const char *fn, unsigned bank, const char *prefix) +bool BankFormats::LoadEA(const char *fn, unsigned bank, const char *prefix) { FILE *fp = std::fopen(fn, "rb"); if(!fp) diff --git a/utils/gen_adldata/file_formats/load_ibk.h b/utils/gen_adldata/file_formats/load_ibk.h index 28177c7..8de302a 100644 --- a/utils/gen_adldata/file_formats/load_ibk.h +++ b/utils/gen_adldata/file_formats/load_ibk.h @@ -3,7 +3,7 @@ #include "../progs_cache.h" -static bool LoadIBK(const char *fn, unsigned bank, const char *prefix, bool percussive, bool noRhythmMode = false) +bool BankFormats::LoadIBK(const char *fn, unsigned bank, const char *prefix, bool percussive, bool noRhythmMode) { #ifdef HARD_BANKS writeIni("IBK", fn, prefix, bank, percussive ? INI_Drums : INI_Melodic); diff --git a/utils/gen_adldata/file_formats/load_jv.h b/utils/gen_adldata/file_formats/load_jv.h index a498bb6..bcdf855 100644 --- a/utils/gen_adldata/file_formats/load_jv.h +++ b/utils/gen_adldata/file_formats/load_jv.h @@ -4,7 +4,7 @@ #include "../progs_cache.h" #include "../midi_inst_list.h" -static bool LoadJunglevision(const char *fn, unsigned bank, const char *prefix) +bool BankFormats::LoadJunglevision(const char *fn, unsigned bank, const char *prefix) { #ifdef HARD_BANKS writeIni("Junglevision", fn, prefix, bank, INI_Both); diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index feb85ed..cac6bc9 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -49,7 +49,7 @@ struct Doom_opl_instr #endif -static bool LoadDoom(const char *fn, unsigned bank, const char *prefix) +bool BankFormats::LoadDoom(const char *fn, unsigned bank, const char *prefix) { #ifdef HARD_BANKS writeIni("OP2", fn, prefix, bank, INI_Both); diff --git a/utils/gen_adldata/file_formats/load_tmb.h b/utils/gen_adldata/file_formats/load_tmb.h index 4417b02..e7537af 100644 --- a/utils/gen_adldata/file_formats/load_tmb.h +++ b/utils/gen_adldata/file_formats/load_tmb.h @@ -4,7 +4,7 @@ #include "../progs_cache.h" #include "../midi_inst_list.h" -static bool LoadTMB(const char *fn, unsigned bank, const char *prefix) +bool BankFormats::LoadTMB(const char *fn, unsigned bank, const char *prefix) { #ifdef HARD_BANKS writeIni("TMB", fn, prefix, bank, INI_Both); diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h index 6c57950..f4b7540 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -18,7 +18,7 @@ enum class WOPL_Flags WOPL_RhythmModeMask = 0x38, }; -static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const std::string bankTitle, const char *prefix) +bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const std::string bankTitle, const char *prefix) { FILE *fp = std::fopen(fn, "rb"); if(!fp) @@ -64,7 +64,7 @@ static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const std::st setup.volumeModel = (int)data[0x12]; setup.scaleModulators = false; - size_t bankDb = (unsigned)db.initBank(bank, bankTitle, static_cast((static_cast(data[0x11]) << 8) | static_cast(data[0x12]))); + size_t bankDb = db.initBank(bank, bankTitle, static_cast((static_cast(data[0x11]) << 8) | static_cast(data[0x12]))); // Validate file format by size calculation if(version == 1) -- cgit v1.2.3 From 291dda79c24d985802f63af59a076a358f427e62 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Fri, 31 May 2019 22:12:36 +0300 Subject: Minor clean-up of AIL code --- utils/gen_adldata/file_formats/load_ail.h | 93 ++----------------------------- 1 file changed, 6 insertions(+), 87 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h index 2feedb9..13d5d84 100644 --- a/utils/gen_adldata/file_formats/load_ail.h +++ b/utils/gen_adldata/file_formats/load_ail.h @@ -83,12 +83,12 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, { GTL_Head &h = heads[i]; bool isPerc = (h.bank == 0x7F); - int gmPatchId = isPerc ? h.patch : (h.patch + (h.bank * 128)); + // int gmPatchId = isPerc ? h.patch : (h.patch + (h.bank * 128)); unsigned offset = h.offset; BanksDump::MidiBank &bnk = isPerc ? bnkPercussion : bnkMelodic[h.bank]; - int gmno = h.bank == 0x7F ? int(h.patch + 0x80) : int(h.patch); + int gmno = isPerc ? int(h.patch + 0x80) : int(h.patch); int midi_index = gmno < 128 ? gmno : gmno < 128 + 35 ? -1 : gmno < 128 + 88 ? gmno - 35 @@ -164,91 +164,6 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, } } - for(auto &b : bnkMelodic) - db.addMidiBank(bankDb, false, b); - - db.addMidiBank(bankDb, true, bnkPercussion); - -#if 0 - for(unsigned a = 0; a < 2000; ++a) - { - unsigned gm_patch = data[a * 6 + 0]; - unsigned gm_bank = data[a * 6 + 1]; - unsigned offset = *(unsigned *)&data[a * 6 + 2]; - - if(gm_patch == 0xFF) - break; - - int gmno = gm_bank == 0x7F ? int(gm_patch + 0x80) : int(gm_patch); - int midi_index = gmno < 128 ? gmno - : gmno < 128 + 35 ? -1 - : gmno < 128 + 88 ? gmno - 35 - : -1; - unsigned length = data[offset] + data[offset + 1] * 256; - signed char notenum = ((signed char)data[offset + 2]); - - /*printf("%02X %02X %08X ", gmnumber,gmnumber2, offset); - for(unsigned b=0; b 3 && (b-3)%11 == 0) printf("\n "); - printf("%02X ", data[offset+b]); - } - printf("\n");*/ - - if(gm_bank != 0 && gm_bank != 0x7F) - continue; - - char name2[512]; - sprintf(name2, "%s%c%u", prefix, - (gmno < 128 ? 'M' : 'P'), gmno & 127); - - insdata tmp[200]; - - const unsigned inscount = (length - 3) / 11; - bool twoOp = (inscount == 1); - - for(unsigned i = 0; i < inscount; ++i) - { - unsigned o = offset + 3 + i * 11; - tmp[i].finetune = (gmno < 128 && i == 0) ? notenum : 0; - tmp[i].diff = (i == 1); - tmp[i].data[0] = data[o + 0]; // 20 - tmp[i].data[8] = data[o + 1]; // 40 (vol) - tmp[i].data[2] = data[o + 2]; // 60 - tmp[i].data[4] = data[o + 3]; // 80 - tmp[i].data[6] = data[o + 4]; // E0 - tmp[i].data[1] = data[o + 6]; // 23 - tmp[i].data[9] = data[o + 7]; // 43 (vol) - tmp[i].data[3] = data[o + 8]; // 63 - tmp[i].data[5] = data[o + 9]; // 83 - tmp[i].data[7] = data[o + 10]; // E3 - - unsigned fb_c = data[offset + 3 + 5]; - tmp[i].data[10] = uint8_t(fb_c); - if(i == 1) - { - tmp[0].data[10] = fb_c & 0x0F; - tmp[1].data[10] = uint8_t((fb_c & 0x0E) | (fb_c >> 7)); - } - } - - if(inscount <= 2) - { - struct ins tmp2; - tmp2.notenum = gmno < 128 ? 0 : (unsigned char)notenum; - tmp2.pseudo4op = false; - tmp2.real4op = (inscount > 1); - tmp2.voice2_fine_tune = 0.0; - tmp2.midi_velocity_offset = 0; - tmp2.rhythmModeDrum = 0; - std::string name; - if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index]; - size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, twoOp); - SetBank(bank, (unsigned int)gmno, resno); - } - } -#endif - AdlBankSetup setup; setup.volumeModel = VOLUME_Generic; setup.deepTremolo = true; @@ -256,6 +171,10 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, setup.scaleModulators = false; SetBankSetup(bank, setup); + for(auto &b : bnkMelodic) + db.addMidiBank(bankDb, false, b); + db.addMidiBank(bankDb, true, bnkPercussion); + return true; } -- cgit v1.2.3 From fc9829095afcace792f072ecb094c268039b14e7 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Fri, 31 May 2019 22:21:56 +0300 Subject: WOPL: Don't try to pass multibank data into old generator --- utils/gen_adldata/file_formats/load_wopl.h | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h index f4b7540..0f05b6a 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -111,9 +111,7 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s percussion_offset = melodic_offset + (insSize * 128 * mbanks_count); - //uint32_t root_sizes[2] = {mbanks_count, pbanks_count}; - uint32_t root_sizes[2] = {(version >= 2) ? mbanks_count : 1u, - (version >= 2) ? pbanks_count : 1u}; + uint32_t root_sizes[2] = {mbanks_count, pbanks_count}; uint32_t root_offsets[2] = {melodic_offset, percussion_offset}; uint32_t root_meta_offsets[2] = {melodic_meta_offset, percussion_meta_offset}; @@ -260,15 +258,18 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s else snprintf(name2, 512, "%sM%u", prefix, i); - if(!real4op && !tmp2.pseudo4op) + if(bankno == 0) { - size_t resno = InsertIns(tmp[0], tmp2, name, name2); - SetBank(bank, gmno, resno); - } - else - { - size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); - SetBank(bank, gmno, resno); + if(!real4op && !tmp2.pseudo4op) + { + size_t resno = InsertIns(tmp[0], tmp2, name, name2); + SetBank(bank, gmno, resno); + } + else + { + size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); + SetBank(bank, gmno, resno); + } } db.addInstrument(bnk, i, inst, ops); } -- cgit v1.2.3 From 99cc4bfafcce3390bdd5d78ef8e55222d6507877 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Sat, 1 Jun 2019 02:43:59 +0300 Subject: Add Bisqwit, OP2 and TMB --- utils/gen_adldata/file_formats/load_bisqwit.h | 30 +++++++++++++++++++++++++-- utils/gen_adldata/file_formats/load_op2.h | 27 ++++++++++++++++++++++-- utils/gen_adldata/file_formats/load_tmb.h | 24 +++++++++++++++++++-- 3 files changed, 75 insertions(+), 6 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h index 8686e90..cf3a6a1 100644 --- a/utils/gen_adldata/file_formats/load_bisqwit.h +++ b/utils/gen_adldata/file_formats/load_bisqwit.h @@ -4,7 +4,7 @@ #include "../progs_cache.h" #include "../midi_inst_list.h" -bool BankFormats::LoadBisqwit(const char *fn, unsigned bank, const char *prefix) +bool BankFormats::LoadBisqwit(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix) { #ifdef HARD_BANKS writeIni("Bisqwit", fn, prefix, bank, INI_Both); @@ -13,14 +13,25 @@ bool BankFormats::LoadBisqwit(const char *fn, unsigned bank, const char *prefix) if(!fp) return false; - for(uint32_t a = 0; a < 256; ++a) + size_t bankDb = db.initBank(bank, bankTitle, BanksDump::BankEntry::SETUP_Generic); + BanksDump::MidiBank bnkMelodique; + BanksDump::MidiBank bnkPercussion; + + for(uint32_t a = 0, patchId = 0; a < 256; ++a, patchId++) { //unsigned offset = a * 25; uint32_t gmno = a; + bool isPercussion = gmno >= 128; int32_t midi_index = gmno < 128 ? int32_t(gmno) : gmno < 128 + 35 ? -1 : gmno < 128 + 88 ? int32_t(gmno - 35) : -1; + if(patchId == 128) + patchId = 0; + + BanksDump::MidiBank &bnk = isPercussion ? bnkPercussion : bnkMelodique; + BanksDump::InstrumentEntry inst; + BanksDump::Operator ops[5]; struct ins tmp2; tmp2.notenum = (uint8_t)std::fgetc(fp); @@ -49,9 +60,24 @@ bool BankFormats::LoadBisqwit(const char *fn, unsigned bank, const char *prefix) tmp2.real4op = tmp[1].diff; size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, (tmp[0] == tmp[1])); SetBank(bank, gmno, resno); + + db.toOps(tmp[0], ops, 0); + if(tmp[0] != tmp[1]) + { + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; + db.toOps(tmp[1], ops, 2); + } + + inst.fbConn = uint_fast16_t(tmp[0].data[10]) | (uint_fast16_t(tmp[1].data[10]) << 8); + inst.percussionKeyNumber = tmp2.notenum; + inst.noteOffset1 = tmp2.notenum; + db.addInstrument(bnk, patchId, inst, ops); } std::fclose(fp); + db.addMidiBank(bankDb, false, bnkMelodique); + db.addMidiBank(bankDb, true, bnkPercussion); + AdlBankSetup setup; setup.volumeModel = VOLUME_Generic; setup.deepTremolo = true; diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index cac6bc9..0c67323 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -49,7 +49,7 @@ struct Doom_opl_instr #endif -bool BankFormats::LoadDoom(const char *fn, unsigned bank, const char *prefix) +bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix) { #ifdef HARD_BANKS writeIni("OP2", fn, prefix, bank, INI_Both); @@ -68,11 +68,17 @@ bool BankFormats::LoadDoom(const char *fn, unsigned bank, const char *prefix) } std::fclose(fp); + size_t bankDb = db.initBank(bank, bankTitle, BanksDump::BankEntry::SETUP_DMX); + BanksDump::MidiBank bnkMelodique; + BanksDump::MidiBank bnkPercussion; + for(unsigned a = 0; a < 175; ++a) { const size_t offset1 = 0x18A4 + a * 32; const size_t offset2 = 8 + a * 36; - + BanksDump::MidiBank &bnk = a < 128 ? bnkMelodique : bnkPercussion; + BanksDump::InstrumentEntry inst; + BanksDump::Operator ops[5]; std::string name; for(unsigned p = 0; p < 32; ++p) if(data[offset1] != '\0') @@ -80,6 +86,7 @@ bool BankFormats::LoadDoom(const char *fn, unsigned bank, const char *prefix) //printf("%3d %3d %3d %8s: ", a,b,c, name.c_str()); int gmno = int(a < 128 ? a : ((a | 128) + 35)); + size_t patchId = a < 128 ? a : ((a - 128) + 35); char name2[512]; snprintf(name2, 512, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); @@ -104,6 +111,12 @@ bool BankFormats::LoadDoom(const char *fn, unsigned bank, const char *prefix) tmp[index].data[9] = src.scale_2 | src.level_2; tmp[index].data[10] = src.feedback; tmp[index].finetune = int8_t(src.basenote + 12); + inst.fbConn |= (uint_fast16_t(src.feedback) << (a == 1 ? 8 : 0)); + if(a == 0) + inst.noteOffset1 = int8_t(src.basenote + 12); + else + inst.noteOffset2 = int8_t(src.basenote + 12); + db.toOps(tmp[index], ops, index * 2); } struct ins tmp2; tmp2.notenum = ins.note; @@ -120,6 +133,11 @@ bool BankFormats::LoadDoom(const char *fn, unsigned bank, const char *prefix) tmp[1].finetune -= 12; } + if((ins.flags & FL_DOUBLE_VOICE) != 0) + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_Pseudo4op; + inst.percussionKeyNumber = tmp2.notenum; + inst.secondVoiceDetune = ins.finetune; + if(!(ins.flags & FL_DOUBLE_VOICE)) { size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2); @@ -138,6 +156,8 @@ bool BankFormats::LoadDoom(const char *fn, unsigned bank, const char *prefix) SetBank(bank, (unsigned int)gmno, resno); } + db.addInstrument(bnk, patchId, inst, ops); + /*const Doom_OPL2instrument& A = ins.patchdata[0]; const Doom_OPL2instrument& B = ins.patchdata[1]; printf( @@ -159,6 +179,9 @@ bool BankFormats::LoadDoom(const char *fn, unsigned bank, const char *prefix) printf("------------------------------------------------------------\n");*/ } + db.addMidiBank(bankDb, false, bnkMelodique); + db.addMidiBank(bankDb, true, bnkPercussion); + AdlBankSetup setup; setup.volumeModel = VOLUME_DMX; setup.deepTremolo = false; diff --git a/utils/gen_adldata/file_formats/load_tmb.h b/utils/gen_adldata/file_formats/load_tmb.h index e7537af..66ced30 100644 --- a/utils/gen_adldata/file_formats/load_tmb.h +++ b/utils/gen_adldata/file_formats/load_tmb.h @@ -4,7 +4,7 @@ #include "../progs_cache.h" #include "../midi_inst_list.h" -bool BankFormats::LoadTMB(const char *fn, unsigned bank, const char *prefix) +bool BankFormats::LoadTMB(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix) { #ifdef HARD_BANKS writeIni("TMB", fn, prefix, bank, INI_Both); @@ -22,7 +22,11 @@ bool BankFormats::LoadTMB(const char *fn, unsigned bank, const char *prefix) } std::fclose(fp); - for(unsigned a = 0; a < 256; ++a) + size_t bankDb = db.initBank(bank, bankTitle, BanksDump::BankEntry::SETUP_Apogee); + BanksDump::MidiBank bnkMelodique; + BanksDump::MidiBank bnkPercussion; + + for(unsigned a = 0, patchId = 0; a < 256; ++a, patchId++) { unsigned offset = a * 0x0D; unsigned gmno = a; @@ -30,6 +34,12 @@ bool BankFormats::LoadTMB(const char *fn, unsigned bank, const char *prefix) : gmno < 128 + 35 ? -1 : gmno < 128 + 88 ? int(gmno - 35) : -1; + if(patchId == 128) + patchId = 0; + bool isPercussion = a >= 128; + BanksDump::MidiBank &bnk = isPercussion ? bnkPercussion : bnkMelodique; + BanksDump::InstrumentEntry inst; + BanksDump::Operator ops[5]; insdata tmp; @@ -55,6 +65,11 @@ bool BankFormats::LoadTMB(const char *fn, unsigned bank, const char *prefix) tmp2.midi_velocity_offset = (int8_t)data[offset + 12]; tmp2.rhythmModeDrum = 0; + inst.percussionKeyNumber = data[offset + 11]; + inst.midiVelocityOffset = (int8_t)data[offset + 12]; + inst.fbConn = data[offset + 10]; + db.toOps(tmp, ops, 0); + std::string name; if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index]; @@ -64,8 +79,13 @@ bool BankFormats::LoadTMB(const char *fn, unsigned bank, const char *prefix) size_t resno = InsertIns(tmp, tmp2, name, name2); SetBank(bank, gmno, resno); + + db.addInstrument(bnk, patchId, inst, ops); } + db.addMidiBank(bankDb, false, bnkMelodique); + db.addMidiBank(bankDb, true, bnkPercussion); + AdlBankSetup setup; setup.volumeModel = VOLUME_APOGEE; setup.deepTremolo = false; -- cgit v1.2.3 From 14303359fde2d8cf76a129296cf1f30fdcb57520 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Sun, 2 Jun 2019 02:54:00 +0300 Subject: Junglevision format is also supported by new DB --- utils/gen_adldata/file_formats/load_jv.h | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_jv.h b/utils/gen_adldata/file_formats/load_jv.h index bcdf855..d2fe06b 100644 --- a/utils/gen_adldata/file_formats/load_jv.h +++ b/utils/gen_adldata/file_formats/load_jv.h @@ -4,7 +4,7 @@ #include "../progs_cache.h" #include "../midi_inst_list.h" -bool BankFormats::LoadJunglevision(const char *fn, unsigned bank, const char *prefix) +bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix) { #ifdef HARD_BANKS writeIni("Junglevision", fn, prefix, bank, INI_Both); @@ -22,6 +22,10 @@ bool BankFormats::LoadJunglevision(const char *fn, unsigned bank, const char *pr } std::fclose(fp); + size_t bankDb = db.initBank(bank, bankTitle, BanksDump::BankEntry::SETUP_Win9X); + BanksDump::MidiBank bnkMelodique; + BanksDump::MidiBank bnkPercussion; + uint16_t ins_count = uint16_t(data[0x20] + (data[0x21] << 8)); uint16_t drum_count = uint16_t(data[0x22] + (data[0x23] << 8)); uint16_t first_ins = uint16_t(data[0x24] + (data[0x25] << 8)); @@ -38,6 +42,12 @@ bool BankFormats::LoadJunglevision(const char *fn, unsigned bank, const char *pr : gmno < 128 + 88 ? int(gmno - 35) : -1; + bool isPercussion = ins_count >= 128; + size_t patchId = (a < ins_count) ? (a + first_ins) : ((a - ins_count) + first_drum); + BanksDump::MidiBank &bnk = isPercussion ? bnkPercussion : bnkMelodique; + BanksDump::InstrumentEntry inst; + BanksDump::Operator ops[5]; + insdata tmp[2]; tmp[0].data[0] = data[offset + 2]; @@ -83,6 +93,14 @@ bool BankFormats::LoadJunglevision(const char *fn, unsigned bank, const char *pr tmp[1].finetune -= 12; } + if(data[offset] != 0) + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; + inst.percussionKeyNumber = data[offset + 1]; + inst.fbConn = (static_cast(data[offset + 7] & 0x0F)) | + (static_cast(data[offset + 7 + 11] & 0x0F) << 8); + db.toOps(tmp[0], ops, 0); + db.toOps(tmp[1], ops, 2); + std::string name; if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index]; @@ -100,8 +118,12 @@ bool BankFormats::LoadJunglevision(const char *fn, unsigned bank, const char *pr size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); SetBank(bank, gmno, resno); } + db.addInstrument(bnk, patchId, inst, ops); } + db.addMidiBank(bankDb, false, bnkMelodique); + db.addMidiBank(bankDb, true, bnkPercussion); + AdlBankSetup setup; setup.volumeModel = VOLUME_9X; setup.deepTremolo = true; -- cgit v1.2.3 From 86d471c8d664f0c6921f30f0fce4e8d2a7cab77d Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Thu, 6 Jun 2019 21:27:19 +0300 Subject: Added IBK and C++98 support for generated database --- utils/gen_adldata/file_formats/load_ibk.h | 24 +++++++++++++++++++++++- utils/gen_adldata/file_formats/load_jv.h | 3 +-- 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_ibk.h b/utils/gen_adldata/file_formats/load_ibk.h index 8de302a..029d193 100644 --- a/utils/gen_adldata/file_formats/load_ibk.h +++ b/utils/gen_adldata/file_formats/load_ibk.h @@ -3,7 +3,9 @@ #include "../progs_cache.h" -bool BankFormats::LoadIBK(const char *fn, unsigned bank, const char *prefix, bool percussive, bool noRhythmMode) +bool BankFormats::LoadIBK(BanksDump &db, const char *fn, unsigned bank, + const std::string &bankTitle, const char *prefix, + bool percussive, bool noRhythmMode) { #ifdef HARD_BANKS writeIni("IBK", fn, prefix, bank, percussive ? INI_Drums : INI_Melodic); @@ -21,6 +23,9 @@ bool BankFormats::LoadIBK(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; + unsigned offs1_base = 0x804, offs1_len = 9; unsigned offs2_base = 0x004, offs2_len = 16; @@ -43,6 +48,9 @@ bool BankFormats::LoadIBK(const char *fn, unsigned bank, const char *prefix, boo sprintf(name2, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); + BanksDump::InstrumentEntry inst; + BanksDump::Operator ops[5]; + insdata tmp; tmp.data[0] = data[offset2 + 0]; tmp.data[1] = data[offset2 + 1]; @@ -66,6 +74,11 @@ bool BankFormats::LoadIBK(const char *fn, unsigned bank, const char *prefix, boo tmp2.voice2_fine_tune = 0.0; tmp2.midi_velocity_offset = 0; + db.toOps(tmp, ops, 0); + inst.noteOffset1 = percussive ? 0 : data[offset2 + 12]; + inst.percussionKeyNumber = percussive ? data[offset2 + 13] : 0; + inst.setFbConn(data[offset2 + 10]); + tmp2.rhythmModeDrum = 0; if(percussive && !noRhythmMode) { @@ -74,18 +87,23 @@ bool BankFormats::LoadIBK(const char *fn, unsigned bank, const char *prefix, boo { case 6: tmp2.rhythmModeDrum = ins::Flag_RM_BassDrum; + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_RM_BassDrum; break; case 7: tmp2.rhythmModeDrum = ins::Flag_RM_Snare; + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_RM_Snare; break; case 8: tmp2.rhythmModeDrum = ins::Flag_RM_TomTom; + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_RM_TomTom; break; case 9: tmp2.rhythmModeDrum = ins::Flag_RM_Cymbal; + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_RM_Cymbal; break; case 10: tmp2.rhythmModeDrum = ins::Flag_RM_HiHat; + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_RM_HiHat; break; default: // IBK logic: make non-percussion instrument be silent @@ -96,8 +114,12 @@ bool BankFormats::LoadIBK(const char *fn, unsigned bank, const char *prefix, boo size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); SetBank(bank, (unsigned int)gmno, resno); + + db.addInstrument(bnk, a, inst, ops); } + db.addMidiBank(bankDb, percussive, bnk); + AdlBankSetup setup; setup.volumeModel = VOLUME_Generic; setup.deepTremolo = false; diff --git a/utils/gen_adldata/file_formats/load_jv.h b/utils/gen_adldata/file_formats/load_jv.h index d2fe06b..a7ebf7b 100644 --- a/utils/gen_adldata/file_formats/load_jv.h +++ b/utils/gen_adldata/file_formats/load_jv.h @@ -96,8 +96,7 @@ bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, if(data[offset] != 0) inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; inst.percussionKeyNumber = data[offset + 1]; - inst.fbConn = (static_cast(data[offset + 7] & 0x0F)) | - (static_cast(data[offset + 7 + 11] & 0x0F) << 8); + inst.setFbConn(data[offset + 7], data[offset + 7 + 11]); db.toOps(tmp[0], ops, 0); db.toOps(tmp[1], ops, 2); -- 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_bnk.h | 17 ++++++++++++- utils/gen_adldata/file_formats/load_bnk2.h | 38 +++++++++++++++++++++++++++--- utils/gen_adldata/file_formats/load_ea.h | 27 ++++++++++++++++++++- 3 files changed, 77 insertions(+), 5 deletions(-) (limited to 'utils/gen_adldata/file_formats') 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 #include -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; 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; diff --git a/utils/gen_adldata/file_formats/load_ea.h b/utils/gen_adldata/file_formats/load_ea.h index 67283ca..da7d0cc 100644 --- a/utils/gen_adldata/file_formats/load_ea.h +++ b/utils/gen_adldata/file_formats/load_ea.h @@ -4,12 +4,17 @@ #include "../progs_cache.h" #include "../midi_inst_list.h" -bool BankFormats::LoadEA(const char *fn, unsigned bank, const char *prefix) +bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, + const std::string &bankTitle, const char *prefix) { FILE *fp = std::fopen(fn, "rb"); if(!fp) return false; + size_t bankDb = db.initBank(bank, bankTitle, BanksDump::BankEntry::SETUP_CMF); + BanksDump::MidiBank bnkMelodic = db.midiBanks[db.banks[0].melodic[0]]; + BanksDump::MidiBank bnkPercussion = db.midiBanks[db.banks[0].percussion[0]]; + // Copy all instruments from bank 0 for(unsigned gmno = 0; gmno < 128; ++gmno) progs[bank][gmno] = progs[0][gmno]; @@ -61,6 +66,9 @@ bool BankFormats::LoadEA(const char *fn, unsigned bank, const char *prefix) return false; } + BanksDump::InstrumentEntry inst; + BanksDump::Operator ops[5]; + insdata tmp; tmp.data[0] = bytes[0]; // reg 0x20: modulator AM/VIG/EG/KSR tmp.data[8] = bytes[1]; // reg 0x40: modulator ksl/attenuation @@ -88,6 +96,10 @@ bool BankFormats::LoadEA(const char *fn, unsigned bank, const char *prefix) tmp2.real4op = false; tmp2.rhythmModeDrum = 0; + db.toOps(tmp, ops, 0); + inst.setFbConn(bytes[8]); + inst.noteOffset1 = int8_t(bytes[9] + 12); + std::string name; char name2[512]; if(gmno < 20) @@ -101,28 +113,38 @@ bool BankFormats::LoadEA(const char *fn, unsigned bank, const char *prefix) size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); SetBank(bank, gmno, resno); + db.addInstrument(bnkMelodic, gmno, inst, ops); + if(gmno == 10) { /*tmp.finetune=0;*/ tmp2.notenum = 0x49; SetBank(bank, 0x80 + 0x36, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x36 - 35], std::string(1, '\377') + prefix + "P54")); + inst.percussionKeyNumber = 0x49; + db.addInstrument(bnkPercussion, 0x36, inst, ops); } if(gmno == 18) { /*tmp.finetune=0;*/ tmp2.notenum = 0x17; SetBank(bank, 0x80 + 0x2A, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x2A - 35], std::string(1, '\377') + prefix + "P42")); + inst.percussionKeyNumber = 0x17; + db.addInstrument(bnkPercussion, 0x2A, inst, ops); } if(gmno == 16) { /*tmp.finetune=0;*/ tmp2.notenum = 0x0C; SetBank(bank, 0x80 + 0x24, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x24 - 35], std::string(1, '\377') + prefix + "P36")); + inst.percussionKeyNumber = 0x0C; + db.addInstrument(bnkPercussion, 0x24, inst, ops); } if(gmno == 17) { /*tmp.finetune=0;*/ tmp2.notenum = 0x01; SetBank(bank, 0x80 + 0x26, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x26 - 35], std::string(1, '\377') + prefix + "P38")); + inst.percussionKeyNumber = 0x01; + db.addInstrument(bnkPercussion, 0x26, inst, ops); } } @@ -135,6 +157,9 @@ bool BankFormats::LoadEA(const char *fn, unsigned bank, const char *prefix) setup.scaleModulators = false; SetBankSetup(bank, setup); + db.addMidiBank(bankDb, false, bnkMelodic); + db.addMidiBank(bankDb, true, bnkPercussion); + return true; } -- cgit v1.2.3 From d20e6b38692f4d1159fa4219c0985f8b322454e4 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Sat, 22 Jun 2019 03:59:56 +0300 Subject: Enable measurer for new database format too --- utils/gen_adldata/file_formats/load_bisqwit.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h index cf3a6a1..8ff91b1 100644 --- a/utils/gen_adldata/file_formats/load_bisqwit.h +++ b/utils/gen_adldata/file_formats/load_bisqwit.h @@ -69,8 +69,8 @@ bool BankFormats::LoadBisqwit(BanksDump &db, const char *fn, unsigned bank, cons } inst.fbConn = uint_fast16_t(tmp[0].data[10]) | (uint_fast16_t(tmp[1].data[10]) << 8); - inst.percussionKeyNumber = tmp2.notenum; - inst.noteOffset1 = tmp2.notenum; + inst.percussionKeyNumber = a >= 128 ? tmp2.notenum : 0; + inst.noteOffset1 = a < 128 ? tmp2.notenum : 0; db.addInstrument(bnk, patchId, inst, ops); } std::fclose(fp); -- cgit v1.2.3 From d992f42f694e816a1ab2922d2bdc6fc3d1bce408 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Sun, 30 Jun 2019 16:31:43 +0300 Subject: New cache format for measured entries --- utils/gen_adldata/file_formats/common.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/common.h b/utils/gen_adldata/file_formats/common.h index f441221..a03ca5d 100644 --- a/utils/gen_adldata/file_formats/common.h +++ b/utils/gen_adldata/file_formats/common.h @@ -18,6 +18,14 @@ inline int16_t toSint16BE(const uint8_t *arr) return num; } +inline int16_t toSint16LE(const uint8_t *arr) +{ + int16_t num = *reinterpret_cast(&arr[1]); + num *= 1 << 8; + num |= static_cast(arr[0]) & 0x00FF; + return num; +} + inline uint16_t toUint16LE(const uint8_t *arr) { uint16_t num = arr[0]; @@ -34,4 +42,14 @@ inline uint32_t toUint32LE(const uint8_t *arr) return num; } +inline int32_t toSint32LE(const uint8_t *arr) +{ + int32_t num = *reinterpret_cast(&arr[3]); + num *= 1 << 24; + num |= (static_cast(arr[2]) << 16) & 0x00FF0000; + num |= (static_cast(arr[1]) << 8) & 0x0000FF00; + num |= static_cast(arr[0]) & 0x000000FF; + return num; +} + #endif // COMMON_H -- cgit v1.2.3 From 48a951279b9278ebedbf36e77c4884c66acc3da5 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Mon, 1 Jul 2019 05:14:03 +0300 Subject: Fixed broken OP2's note offsets --- utils/gen_adldata/file_formats/load_op2.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index 0c67323..1d7ea6f 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -133,6 +133,9 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s tmp[1].finetune -= 12; } + inst.noteOffset1 = int8_t(tmp[0].finetune); + inst.noteOffset2 = int8_t(tmp[1].finetune); + if((ins.flags & FL_DOUBLE_VOICE) != 0) inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_Pseudo4op; inst.percussionKeyNumber = tmp2.notenum; -- cgit v1.2.3 From c24e8ff891a353f37a2d6bf7bbd670e8fdd11927 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Tue, 2 Jul 2019 00:38:59 +0300 Subject: Fixed messed up JungleVision banks --- utils/gen_adldata/file_formats/load_jv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_jv.h b/utils/gen_adldata/file_formats/load_jv.h index a7ebf7b..ef36f76 100644 --- a/utils/gen_adldata/file_formats/load_jv.h +++ b/utils/gen_adldata/file_formats/load_jv.h @@ -42,7 +42,7 @@ bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, : gmno < 128 + 88 ? int(gmno - 35) : -1; - bool isPercussion = ins_count >= 128; + bool isPercussion = a >= ins_count; size_t patchId = (a < ins_count) ? (a + first_ins) : ((a - ins_count) + first_drum); BanksDump::MidiBank &bnk = isPercussion ? bnkPercussion : bnkMelodique; BanksDump::InstrumentEntry inst; -- cgit v1.2.3 From 6a3a102b21e7d0b4e8fe3147294d9b02f0fcd166 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Tue, 2 Jul 2019 01:11:42 +0300 Subject: Fix for pseudo-4op instruments --- utils/gen_adldata/file_formats/load_op2.h | 8 ++------ utils/gen_adldata/file_formats/load_wopl.h | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index 1d7ea6f..6599a9f 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -112,10 +112,6 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s tmp[index].data[10] = src.feedback; tmp[index].finetune = int8_t(src.basenote + 12); inst.fbConn |= (uint_fast16_t(src.feedback) << (a == 1 ? 8 : 0)); - if(a == 0) - inst.noteOffset1 = int8_t(src.basenote + 12); - else - inst.noteOffset2 = int8_t(src.basenote + 12); db.toOps(tmp[index], ops, index * 2); } struct ins tmp2; @@ -137,9 +133,9 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s inst.noteOffset2 = int8_t(tmp[1].finetune); if((ins.flags & FL_DOUBLE_VOICE) != 0) - inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_Pseudo4op; + inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op | BanksDump::InstrumentEntry::WOPL_Ins_Pseudo4op; inst.percussionKeyNumber = tmp2.notenum; - inst.secondVoiceDetune = ins.finetune; + inst.secondVoiceDetune = static_cast(static_cast(ins.finetune) - 128); if(!(ins.flags & FL_DOUBLE_VOICE)) { diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h index 0f05b6a..0db911c 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -208,7 +208,7 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s inst.instFlags = flags; inst.percussionKeyNumber = is_percussion ? data[offset + 38] : 0; inst.noteOffset1 = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 32)); - inst.noteOffset2 = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 32)); + inst.noteOffset2 = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 34)); inst.secondVoiceDetune = static_cast(data[offset + 37]); inst.midiVelocityOffset = static_cast(data[offset + 36]); inst.fbConn = (static_cast(data[offset + 40])) | -- 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') 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 d9ebc58d5c408331a5cdc8443fa849179eb272a6 Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Tue, 2 Jul 2019 17:09:19 +0200 Subject: genadldata: fix invalid access in the AIL reader --- utils/gen_adldata/file_formats/load_ail.h | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h index 13d5d84..286b665 100644 --- a/utils/gen_adldata/file_formats/load_ail.h +++ b/utils/gen_adldata/file_formats/load_ail.h @@ -116,16 +116,25 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, unsigned o = offset + 3 + i * 11; tmp[i].finetune = (gmno < 128 && i == 0) ? notenum : 0; tmp[i].diff = (i == 1); - tmp[i].data[0] = data[o + 0]; // 20 - tmp[i].data[8] = data[o + 1]; // 40 (vol) - tmp[i].data[2] = data[o + 2]; // 60 - tmp[i].data[4] = data[o + 3]; // 80 - tmp[i].data[6] = data[o + 4]; // E0 - tmp[i].data[1] = data[o + 6]; // 23 - tmp[i].data[9] = data[o + 7]; // 43 (vol) - tmp[i].data[3] = data[o + 8]; // 63 - tmp[i].data[5] = data[o + 9]; // 83 - tmp[i].data[7] = data[o + 10]; // E3 + + uint8_t temp[11] = {0}; + if(o < data.size()) + { + size_t count = data.size() - o; + count = (count > sizeof(temp)) ? sizeof(temp) : count; + std::memcpy(temp, &data[o], count); + } + + tmp[i].data[0] = temp[0]; // 20 + tmp[i].data[8] = temp[1]; // 40 (vol) + tmp[i].data[2] = temp[2]; // 60 + tmp[i].data[4] = temp[3]; // 80 + tmp[i].data[6] = temp[4]; // E0 + tmp[i].data[1] = temp[6]; // 23 + tmp[i].data[9] = temp[7]; // 43 (vol) + tmp[i].data[3] = temp[8]; // 63 + tmp[i].data[5] = temp[9]; // 83 + tmp[i].data[7] = temp[10]; // E3 unsigned fb_c = data[offset + 3 + 5]; tmp[i].data[10] = uint8_t(fb_c); -- cgit v1.2.3 From bf9255e78e18675ab5ac3f4aa03fa55ebce92920 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Tue, 2 Jul 2019 19:49:43 +0300 Subject: Some work on old cache --- utils/gen_adldata/file_formats/load_ea.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_ea.h b/utils/gen_adldata/file_formats/load_ea.h index da7d0cc..7d15883 100644 --- a/utils/gen_adldata/file_formats/load_ea.h +++ b/utils/gen_adldata/file_formats/load_ea.h @@ -90,7 +90,7 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, tmp.data[6] = 0; // reg 0xE0: modulator, never seems to be set tmp.data[7] = 0; // reg 0xE0: carrier, never seems to be set - ins tmp2{}; + ins tmp2; tmp2.notenum = 0; tmp2.pseudo4op = false; tmp2.real4op = false; -- 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_ail.h | 2 +- utils/gen_adldata/file_formats/load_bisqwit.h | 2 +- utils/gen_adldata/file_formats/load_bnk.h | 2 +- utils/gen_adldata/file_formats/load_bnk2.h | 4 ++-- utils/gen_adldata/file_formats/load_ea.h | 10 +++++----- utils/gen_adldata/file_formats/load_ibk.h | 2 +- utils/gen_adldata/file_formats/load_jv.h | 2 +- utils/gen_adldata/file_formats/load_op2.h | 2 +- utils/gen_adldata/file_formats/load_tmb.h | 2 +- utils/gen_adldata/file_formats/load_wopl.h | 2 +- 10 files changed, 15 insertions(+), 15 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h index 286b665..a12789b 100644 --- a/utils/gen_adldata/file_formats/load_ail.h +++ b/utils/gen_adldata/file_formats/load_ail.h @@ -169,7 +169,7 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, unsigned fb_c = data[offset + 3 + 5]; inst.fbConn = (static_cast(fb_c & 0x0F)) | (static_cast((fb_c & 0x0E) | (fb_c >> 7)) << 8); - db.addInstrument(bnk, h.patch, inst, ops); + db.addInstrument(bnk, h.patch, inst, ops, fn); } } diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h index 8ff91b1..7ea3a38 100644 --- a/utils/gen_adldata/file_formats/load_bisqwit.h +++ b/utils/gen_adldata/file_formats/load_bisqwit.h @@ -71,7 +71,7 @@ bool BankFormats::LoadBisqwit(BanksDump &db, const char *fn, unsigned bank, cons inst.fbConn = uint_fast16_t(tmp[0].data[10]) | (uint_fast16_t(tmp[1].data[10]) << 8); inst.percussionKeyNumber = a >= 128 ? tmp2.notenum : 0; inst.noteOffset1 = a < 128 ? tmp2.notenum : 0; - db.addInstrument(bnk, patchId, inst, ops); + db.addInstrument(bnk, patchId, inst, ops, fn); } std::fclose(fp); diff --git a/utils/gen_adldata/file_formats/load_bnk.h b/utils/gen_adldata/file_formats/load_bnk.h index beb2bd5..9379de5 100644 --- a/utils/gen_adldata/file_formats/load_bnk.h +++ b/utils/gen_adldata/file_formats/load_bnk.h @@ -132,7 +132,7 @@ bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank, if(!is_fat) { SetBank(bank, (unsigned int)gmno, resno); - db.addInstrument(bnk, n & 127, inst, ops); + db.addInstrument(bnk, n & 127, inst, ops, fn); } else { 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); } } diff --git a/utils/gen_adldata/file_formats/load_ea.h b/utils/gen_adldata/file_formats/load_ea.h index 7d15883..4b40b0f 100644 --- a/utils/gen_adldata/file_formats/load_ea.h +++ b/utils/gen_adldata/file_formats/load_ea.h @@ -113,14 +113,14 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); SetBank(bank, gmno, resno); - db.addInstrument(bnkMelodic, gmno, inst, ops); + db.addInstrument(bnkMelodic, gmno, inst, ops, fn); if(gmno == 10) { /*tmp.finetune=0;*/ tmp2.notenum = 0x49; SetBank(bank, 0x80 + 0x36, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x36 - 35], std::string(1, '\377') + prefix + "P54")); inst.percussionKeyNumber = 0x49; - db.addInstrument(bnkPercussion, 0x36, inst, ops); + db.addInstrument(bnkPercussion, 0x36, inst, ops, fn); } if(gmno == 18) @@ -128,7 +128,7 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, /*tmp.finetune=0;*/ tmp2.notenum = 0x17; SetBank(bank, 0x80 + 0x2A, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x2A - 35], std::string(1, '\377') + prefix + "P42")); inst.percussionKeyNumber = 0x17; - db.addInstrument(bnkPercussion, 0x2A, inst, ops); + db.addInstrument(bnkPercussion, 0x2A, inst, ops, fn); } if(gmno == 16) @@ -136,7 +136,7 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, /*tmp.finetune=0;*/ tmp2.notenum = 0x0C; SetBank(bank, 0x80 + 0x24, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x24 - 35], std::string(1, '\377') + prefix + "P36")); inst.percussionKeyNumber = 0x0C; - db.addInstrument(bnkPercussion, 0x24, inst, ops); + db.addInstrument(bnkPercussion, 0x24, inst, ops, fn); } if(gmno == 17) @@ -144,7 +144,7 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, /*tmp.finetune=0;*/ tmp2.notenum = 0x01; SetBank(bank, 0x80 + 0x26, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x26 - 35], std::string(1, '\377') + prefix + "P38")); inst.percussionKeyNumber = 0x01; - db.addInstrument(bnkPercussion, 0x26, inst, ops); + db.addInstrument(bnkPercussion, 0x26, inst, ops, fn); } } diff --git a/utils/gen_adldata/file_formats/load_ibk.h b/utils/gen_adldata/file_formats/load_ibk.h index 029d193..d4b54f6 100644 --- a/utils/gen_adldata/file_formats/load_ibk.h +++ b/utils/gen_adldata/file_formats/load_ibk.h @@ -115,7 +115,7 @@ bool BankFormats::LoadIBK(BanksDump &db, const char *fn, unsigned bank, size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); SetBank(bank, (unsigned int)gmno, resno); - db.addInstrument(bnk, a, inst, ops); + db.addInstrument(bnk, a, inst, ops, fn); } db.addMidiBank(bankDb, percussive, bnk); diff --git a/utils/gen_adldata/file_formats/load_jv.h b/utils/gen_adldata/file_formats/load_jv.h index ef36f76..bb4fbdb 100644 --- a/utils/gen_adldata/file_formats/load_jv.h +++ b/utils/gen_adldata/file_formats/load_jv.h @@ -117,7 +117,7 @@ bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); SetBank(bank, gmno, resno); } - db.addInstrument(bnk, patchId, inst, ops); + db.addInstrument(bnk, patchId, inst, ops, fn); } db.addMidiBank(bankDb, false, bnkMelodique); diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index 6599a9f..e31a803 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -155,7 +155,7 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s SetBank(bank, (unsigned int)gmno, resno); } - db.addInstrument(bnk, patchId, inst, ops); + db.addInstrument(bnk, patchId, inst, ops, fn); /*const Doom_OPL2instrument& A = ins.patchdata[0]; const Doom_OPL2instrument& B = ins.patchdata[1]; diff --git a/utils/gen_adldata/file_formats/load_tmb.h b/utils/gen_adldata/file_formats/load_tmb.h index 66ced30..d9d57dd 100644 --- a/utils/gen_adldata/file_formats/load_tmb.h +++ b/utils/gen_adldata/file_formats/load_tmb.h @@ -80,7 +80,7 @@ bool BankFormats::LoadTMB(BanksDump &db, const char *fn, unsigned bank, const st size_t resno = InsertIns(tmp, tmp2, name, name2); SetBank(bank, gmno, resno); - db.addInstrument(bnk, patchId, inst, ops); + db.addInstrument(bnk, patchId, inst, ops, fn); } db.addMidiBank(bankDb, false, bnkMelodique); diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h index 0db911c..047ed7b 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -271,7 +271,7 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s SetBank(bank, gmno, resno); } } - db.addInstrument(bnk, i, inst, ops); + db.addInstrument(bnk, i, inst, ops, fn); } db.addMidiBank(bankDb, is_percussion, bnk); } -- 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_ail.h | 36 ++++++++++++------------- utils/gen_adldata/file_formats/load_bisqwit.h | 16 +++++------ utils/gen_adldata/file_formats/load_bnk.h | 20 +++++++------- utils/gen_adldata/file_formats/load_bnk2.h | 20 +++++++------- utils/gen_adldata/file_formats/load_ea.h | 32 +++++++++++----------- utils/gen_adldata/file_formats/load_ibk.h | 18 ++++++------- utils/gen_adldata/file_formats/load_jv.h | 20 +++++++------- utils/gen_adldata/file_formats/load_op2.h | 20 +++++++------- utils/gen_adldata/file_formats/load_tmb.h | 16 +++++------ utils/gen_adldata/file_formats/load_wopl.h | 38 +++++++++++++-------------- 10 files changed, 118 insertions(+), 118 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h index a12789b..abeda95 100644 --- a/utils/gen_adldata/file_formats/load_ail.h +++ b/utils/gen_adldata/file_formats/load_ail.h @@ -89,10 +89,10 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, BanksDump::MidiBank &bnk = isPerc ? bnkPercussion : bnkMelodic[h.bank]; int gmno = isPerc ? int(h.patch + 0x80) : int(h.patch); - int midi_index = gmno < 128 ? gmno - : gmno < 128 + 35 ? -1 - : gmno < 128 + 88 ? gmno - 35 - : -1; +// int midi_index = gmno < 128 ? gmno +// : gmno < 128 + 35 ? -1 +// : gmno < 128 + 88 ? gmno - 35 +// : -1; unsigned length = data[offset] + data[offset + 1] * 256; signed char notenum = ((signed char)data[offset + 2]); @@ -107,7 +107,7 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, insdata tmp[200]; const unsigned inscount = (length - 3) / 11; - bool twoOp = (inscount == 1); +// bool twoOp = (inscount == 1); for(unsigned i = 0; i < inscount; ++i) { @@ -156,13 +156,13 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, tmp2.voice2_fine_tune = 0.0; tmp2.midi_velocity_offset = 0; tmp2.rhythmModeDrum = 0; - std::string name; - if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index]; - if(h.bank == 0 || h.bank == 0x7F) - { - size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, twoOp); - SetBank(bank, (unsigned int)gmno, resno); - } +// std::string name; +// if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index]; +// if(h.bank == 0 || h.bank == 0x7F) +// { +// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, twoOp); +// SetBank(bank, (unsigned int)gmno, resno); +// } //--------------------------------------------------------------- inst.percussionKeyNumber = isPerc ? static_cast(notenum) : 0; inst.noteOffset1 = isPerc ? 0 : notenum; @@ -173,12 +173,12 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, } } - AdlBankSetup setup; - setup.volumeModel = VOLUME_Generic; - setup.deepTremolo = true; - setup.deepVibrato = true; - setup.scaleModulators = false; - SetBankSetup(bank, setup); +// AdlBankSetup setup; +// setup.volumeModel = VOLUME_Generic; +// setup.deepTremolo = true; +// setup.deepVibrato = true; +// setup.scaleModulators = false; +// SetBankSetup(bank, setup); for(auto &b : bnkMelodic) db.addMidiBank(bankDb, false, b); diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h index 7ea3a38..2c803dd 100644 --- a/utils/gen_adldata/file_formats/load_bisqwit.h +++ b/utils/gen_adldata/file_formats/load_bisqwit.h @@ -58,8 +58,8 @@ bool BankFormats::LoadBisqwit(BanksDump &db, const char *fn, unsigned bank, cons tmp[1].diff = (tmp[0] != tmp[1]); tmp2.real4op = tmp[1].diff; - size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, (tmp[0] == tmp[1])); - SetBank(bank, gmno, resno); +// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, (tmp[0] == tmp[1])); +// SetBank(bank, gmno, resno); db.toOps(tmp[0], ops, 0); if(tmp[0] != tmp[1]) @@ -78,12 +78,12 @@ bool BankFormats::LoadBisqwit(BanksDump &db, const char *fn, unsigned bank, cons db.addMidiBank(bankDb, false, bnkMelodique); db.addMidiBank(bankDb, true, bnkPercussion); - AdlBankSetup setup; - setup.volumeModel = VOLUME_Generic; - setup.deepTremolo = true; - setup.deepVibrato = true; - setup.scaleModulators = false; - SetBankSetup(bank, setup); +// AdlBankSetup setup; +// setup.volumeModel = VOLUME_Generic; +// setup.deepTremolo = true; +// setup.deepVibrato = true; +// setup.scaleModulators = false; +// SetBankSetup(bank, setup); return true; } diff --git a/utils/gen_adldata/file_formats/load_bnk.h b/utils/gen_adldata/file_formats/load_bnk.h index 9379de5..4021831 100644 --- a/utils/gen_adldata/file_formats/load_bnk.h +++ b/utils/gen_adldata/file_formats/load_bnk.h @@ -127,17 +127,17 @@ bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank, 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); +// size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); if(!is_fat) { - SetBank(bank, (unsigned int)gmno, resno); +// SetBank(bank, (unsigned int)gmno, resno); db.addInstrument(bnk, n & 127, inst, ops, fn); } else { - if(name[2] == 'O' || name[1] == 'M') SetBank(bank + 0, (unsigned int)gmno, resno); - if(name[2] == 'S' || name[1] == 'M') SetBank(bank + 1, (unsigned int)gmno, resno); +// if(name[2] == 'O' || name[1] == 'M') SetBank(bank + 0, (unsigned int)gmno, resno); +// if(name[2] == 'S' || name[1] == 'M') SetBank(bank + 1, (unsigned int)gmno, resno); } /* @@ -166,12 +166,12 @@ bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank, db.addMidiBank(bankDb, percussive, bnk); - 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; } 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; } diff --git a/utils/gen_adldata/file_formats/load_ea.h b/utils/gen_adldata/file_formats/load_ea.h index 4b40b0f..0e2d294 100644 --- a/utils/gen_adldata/file_formats/load_ea.h +++ b/utils/gen_adldata/file_formats/load_ea.h @@ -16,10 +16,10 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, BanksDump::MidiBank bnkPercussion = db.midiBanks[db.banks[0].percussion[0]]; // Copy all instruments from bank 0 - for(unsigned gmno = 0; gmno < 128; ++gmno) - progs[bank][gmno] = progs[0][gmno]; - for(unsigned gmno = 35; gmno < 80; ++gmno) - progs[bank][0x80 + gmno] = progs[0][0x80 + gmno]; +// for(unsigned gmno = 0; gmno < 128; ++gmno) +// progs[bank][gmno] = progs[0][gmno]; +// for(unsigned gmno = 35; gmno < 80; ++gmno) +// progs[bank][0x80 + gmno] = progs[0][0x80 + gmno]; uint16_t sources[20 + 8]; // Copy also the unused instruments @@ -110,15 +110,15 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, { snprintf(name2, 512, "%sunk%04X", prefix, offset); } - size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); - SetBank(bank, gmno, resno); +// size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); +// SetBank(bank, gmno, resno); db.addInstrument(bnkMelodic, gmno, inst, ops, fn); if(gmno == 10) { /*tmp.finetune=0;*/ tmp2.notenum = 0x49; - SetBank(bank, 0x80 + 0x36, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x36 - 35], std::string(1, '\377') + prefix + "P54")); +// SetBank(bank, 0x80 + 0x36, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x36 - 35], std::string(1, '\377') + prefix + "P54")); inst.percussionKeyNumber = 0x49; db.addInstrument(bnkPercussion, 0x36, inst, ops, fn); } @@ -126,7 +126,7 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, if(gmno == 18) { /*tmp.finetune=0;*/ tmp2.notenum = 0x17; - SetBank(bank, 0x80 + 0x2A, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x2A - 35], std::string(1, '\377') + prefix + "P42")); +// SetBank(bank, 0x80 + 0x2A, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x2A - 35], std::string(1, '\377') + prefix + "P42")); inst.percussionKeyNumber = 0x17; db.addInstrument(bnkPercussion, 0x2A, inst, ops, fn); } @@ -134,7 +134,7 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, if(gmno == 16) { /*tmp.finetune=0;*/ tmp2.notenum = 0x0C; - SetBank(bank, 0x80 + 0x24, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x24 - 35], std::string(1, '\377') + prefix + "P36")); +// SetBank(bank, 0x80 + 0x24, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x24 - 35], std::string(1, '\377') + prefix + "P36")); inst.percussionKeyNumber = 0x0C; db.addInstrument(bnkPercussion, 0x24, inst, ops, fn); } @@ -142,7 +142,7 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, if(gmno == 17) { /*tmp.finetune=0;*/ tmp2.notenum = 0x01; - SetBank(bank, 0x80 + 0x26, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x26 - 35], std::string(1, '\377') + prefix + "P38")); +// SetBank(bank, 0x80 + 0x26, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x26 - 35], std::string(1, '\377') + prefix + "P38")); inst.percussionKeyNumber = 0x01; db.addInstrument(bnkPercussion, 0x26, inst, ops, fn); } @@ -150,12 +150,12 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, std::fclose(fp); - AdlBankSetup setup; - setup.volumeModel = VOLUME_CMF; - setup.deepTremolo = false; - setup.deepVibrato = false; - setup.scaleModulators = false; - SetBankSetup(bank, setup); +// AdlBankSetup setup; +// setup.volumeModel = VOLUME_CMF; +// setup.deepTremolo = false; +// setup.deepVibrato = false; +// setup.scaleModulators = false; +// SetBankSetup(bank, setup); db.addMidiBank(bankDb, false, bnkMelodic); db.addMidiBank(bankDb, true, bnkPercussion); diff --git a/utils/gen_adldata/file_formats/load_ibk.h b/utils/gen_adldata/file_formats/load_ibk.h index d4b54f6..6ae907e 100644 --- a/utils/gen_adldata/file_formats/load_ibk.h +++ b/utils/gen_adldata/file_formats/load_ibk.h @@ -107,25 +107,25 @@ bool BankFormats::LoadIBK(BanksDump &db, const char *fn, unsigned bank, break; default: // IBK logic: make non-percussion instrument be silent - tmp = MakeNoSoundIns(); +// tmp = MakeNoSoundIns(); break; } } - size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); - SetBank(bank, (unsigned int)gmno, resno); +// size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); +// SetBank(bank, (unsigned int)gmno, resno); db.addInstrument(bnk, a, inst, ops, fn); } db.addMidiBank(bankDb, percussive, bnk); - 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; } diff --git a/utils/gen_adldata/file_formats/load_jv.h b/utils/gen_adldata/file_formats/load_jv.h index bb4fbdb..1cb6a16 100644 --- a/utils/gen_adldata/file_formats/load_jv.h +++ b/utils/gen_adldata/file_formats/load_jv.h @@ -109,13 +109,13 @@ bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, if(!data[offset]) { - size_t resno = InsertIns(tmp[0], tmp2, name, name2); - SetBank(bank, gmno, resno); +// size_t resno = InsertIns(tmp[0], tmp2, name, name2); +// SetBank(bank, gmno, resno); } else // Double instrument { - size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); - SetBank(bank, gmno, resno); +// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); +// SetBank(bank, gmno, resno); } db.addInstrument(bnk, patchId, inst, ops, fn); } @@ -123,12 +123,12 @@ bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, db.addMidiBank(bankDb, false, bnkMelodique); db.addMidiBank(bankDb, true, bnkPercussion); - AdlBankSetup setup; - setup.volumeModel = VOLUME_9X; - setup.deepTremolo = true; - setup.deepVibrato = true; - setup.scaleModulators = false; - SetBankSetup(bank, setup); +// AdlBankSetup setup; +// setup.volumeModel = VOLUME_9X; +// setup.deepTremolo = true; +// setup.deepVibrato = true; +// setup.scaleModulators = false; +// SetBankSetup(bank, setup); return true; } diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index e31a803..70b23de 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -139,8 +139,8 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s if(!(ins.flags & FL_DOUBLE_VOICE)) { - 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); } else // Double instrument { @@ -151,8 +151,8 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s else if(ins.finetune == 127) tmp2.voice2_fine_tune = -0.000025; //printf("/*DOOM FINE TUNE (flags %000X instrument is %d) IS %d -> %lf*/\n", ins.flags, a, ins.finetune, tmp2.fine_tune); - 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); } db.addInstrument(bnk, patchId, inst, ops, fn); @@ -181,12 +181,12 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s db.addMidiBank(bankDb, false, bnkMelodique); db.addMidiBank(bankDb, true, bnkPercussion); - AdlBankSetup setup; - setup.volumeModel = VOLUME_DMX; - setup.deepTremolo = false; - setup.deepVibrato = false; - setup.scaleModulators = false; - SetBankSetup(bank, setup); +// AdlBankSetup setup; +// setup.volumeModel = VOLUME_DMX; +// setup.deepTremolo = false; +// setup.deepVibrato = false; +// setup.scaleModulators = false; +// SetBankSetup(bank, setup); return true; } diff --git a/utils/gen_adldata/file_formats/load_tmb.h b/utils/gen_adldata/file_formats/load_tmb.h index d9d57dd..e0b0e31 100644 --- a/utils/gen_adldata/file_formats/load_tmb.h +++ b/utils/gen_adldata/file_formats/load_tmb.h @@ -77,8 +77,8 @@ bool BankFormats::LoadTMB(BanksDump &db, const char *fn, unsigned bank, const st sprintf(name2, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); - size_t resno = InsertIns(tmp, tmp2, name, name2); - SetBank(bank, gmno, resno); +// size_t resno = InsertIns(tmp, tmp2, name, name2); +// SetBank(bank, gmno, resno); db.addInstrument(bnk, patchId, inst, ops, fn); } @@ -86,12 +86,12 @@ bool BankFormats::LoadTMB(BanksDump &db, const char *fn, unsigned bank, const st db.addMidiBank(bankDb, false, bnkMelodique); db.addMidiBank(bankDb, true, bnkPercussion); - AdlBankSetup setup; - setup.volumeModel = VOLUME_APOGEE; - setup.deepTremolo = false; - setup.deepVibrato = false; - setup.scaleModulators = false; - SetBankSetup(bank, setup); +// AdlBankSetup setup; +// setup.volumeModel = VOLUME_APOGEE; +// setup.deepTremolo = false; +// setup.deepVibrato = false; +// setup.scaleModulators = false; +// SetBankSetup(bank, setup); return true; } diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h index 047ed7b..265c6bf 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -58,11 +58,11 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s uint16_t mbanks_count = toUint16BE((const uint8_t *)data.data() + 0x0d); uint16_t pbanks_count = toUint16BE((const uint8_t *)data.data() + 0x0f); - AdlBankSetup setup; - setup.deepTremolo = (data[0x11] & 0x01) != 0; - setup.deepVibrato = (data[0x11] & 0x02) != 0; - setup.volumeModel = (int)data[0x12]; - setup.scaleModulators = false; +// AdlBankSetup setup; +// setup.deepTremolo = (data[0x11] & 0x01) != 0; +// setup.deepVibrato = (data[0x11] & 0x02) != 0; +// setup.volumeModel = (int)data[0x12]; +// setup.scaleModulators = false; size_t bankDb = db.initBank(bank, bankTitle, static_cast((static_cast(data[0x11]) << 8) | static_cast(data[0x12]))); @@ -258,26 +258,26 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s else snprintf(name2, 512, "%sM%u", prefix, i); - if(bankno == 0) - { - if(!real4op && !tmp2.pseudo4op) - { - size_t resno = InsertIns(tmp[0], tmp2, name, name2); - SetBank(bank, gmno, resno); - } - else - { - size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); - SetBank(bank, gmno, resno); - } - } +// if(bankno == 0) +// { +// if(!real4op && !tmp2.pseudo4op) +// { +// size_t resno = InsertIns(tmp[0], tmp2, name, name2); +// SetBank(bank, gmno, resno); +// } +// else +// { +// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); +// SetBank(bank, gmno, resno); +// } +// } db.addInstrument(bnk, i, inst, ops, fn); } db.addMidiBank(bankDb, is_percussion, bnk); } } - SetBankSetup(bank, setup); +// SetBankSetup(bank, setup); return true; } -- cgit v1.2.3 From f0bdcdb297b41f29c3a51a8b3a1a2d12c929d7ba Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Sun, 23 Aug 2020 20:42:08 +0300 Subject: gen_adldata: Fixed DMX bank importing A silly mistake causes a wrong value of FB-CONN byte on some instruments that distorts sounding of them. --- utils/gen_adldata/file_formats/load_op2.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index 494655d..169ed34 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -111,7 +111,7 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s tmp[index].data[9] = src.scale_2 | src.level_2; tmp[index].data[10] = src.feedback; tmp[index].finetune = int8_t(src.basenote + 12); - inst.fbConn |= (uint_fast16_t(src.feedback) << (a == 1 ? 8 : 0)); + inst.fbConn |= (uint_fast16_t(src.feedback) << (index == 1 ? 8 : 0)); db.toOps(tmp[index], ops, index * 2); } struct ins tmp2; -- 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_ail.h | 11 ++--------- utils/gen_adldata/file_formats/load_bisqwit.h | 7 ------- utils/gen_adldata/file_formats/load_bnk.h | 24 ++++-------------------- utils/gen_adldata/file_formats/load_bnk2.h | 13 ------------- utils/gen_adldata/file_formats/load_ea.h | 13 ------------- utils/gen_adldata/file_formats/load_ibk.h | 14 ++------------ utils/gen_adldata/file_formats/load_jv.h | 25 ++++--------------------- utils/gen_adldata/file_formats/load_op2.h | 21 +++------------------ utils/gen_adldata/file_formats/load_tmb.h | 14 ++------------ utils/gen_adldata/file_formats/load_wopl.h | 21 --------------------- 10 files changed, 17 insertions(+), 146 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h index abeda95..3ab38ef 100644 --- a/utils/gen_adldata/file_formats/load_ail.h +++ b/utils/gen_adldata/file_formats/load_ail.h @@ -15,9 +15,9 @@ struct GTL_Head // GTL file header entry structure bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix) { - #ifdef HARD_BANKS +#ifdef HARD_BANKS writeIni("AIL", fn, prefix, bank, INI_Both); - #endif +#endif FILE *fp = std::fopen(fn, "rb"); if(!fp) return false; @@ -173,13 +173,6 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, } } -// AdlBankSetup setup; -// setup.volumeModel = VOLUME_Generic; -// setup.deepTremolo = true; -// setup.deepVibrato = true; -// setup.scaleModulators = false; -// SetBankSetup(bank, setup); - for(auto &b : bnkMelodic) db.addMidiBank(bankDb, false, b); db.addMidiBank(bankDb, true, bnkPercussion); diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h index 2c803dd..478935f 100644 --- a/utils/gen_adldata/file_formats/load_bisqwit.h +++ b/utils/gen_adldata/file_formats/load_bisqwit.h @@ -78,13 +78,6 @@ bool BankFormats::LoadBisqwit(BanksDump &db, const char *fn, unsigned bank, cons db.addMidiBank(bankDb, false, bnkMelodique); db.addMidiBank(bankDb, true, bnkPercussion); -// AdlBankSetup setup; -// setup.volumeModel = VOLUME_Generic; -// setup.deepTremolo = true; -// setup.deepVibrato = true; -// setup.scaleModulators = false; -// SetBankSetup(bank, setup); - return true; } diff --git a/utils/gen_adldata/file_formats/load_bnk.h b/utils/gen_adldata/file_formats/load_bnk.h index 4021831..ed47567 100644 --- a/utils/gen_adldata/file_formats/load_bnk.h +++ b/utils/gen_adldata/file_formats/load_bnk.h @@ -11,9 +11,9 @@ 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 +#ifdef HARD_BANKS writeIni("HMI", fn, prefix, bank, percussive ? INI_Drums : INI_Melodic); - #endif +#endif FILE *fp = std::fopen(fn, "rb"); if(!fp) return false; @@ -121,24 +121,15 @@ bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank, tmp2.midi_velocity_offset = 0; tmp2.rhythmModeDrum = 0; - if(is_fat) tmp.data[10] ^= 1; + 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, fn); - } - else - { -// if(name[2] == 'O' || name[1] == 'M') SetBank(bank + 0, (unsigned int)gmno, resno); -// if(name[2] == 'S' || name[1] == 'M') SetBank(bank + 1, (unsigned int)gmno, resno); - } /* for(unsigned p=0; p<30; ++p) @@ -166,13 +157,6 @@ bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank, db.addMidiBank(bankDb, percussive, bnk); -// AdlBankSetup setup; -// setup.volumeModel = VOLUME_Generic; -// setup.deepTremolo = false; -// setup.deepVibrato = false; -// setup.scaleModulators = false; -// SetBankSetup(bank, setup); - return true; } 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; } diff --git a/utils/gen_adldata/file_formats/load_ea.h b/utils/gen_adldata/file_formats/load_ea.h index 0e2d294..43d4d5d 100644 --- a/utils/gen_adldata/file_formats/load_ea.h +++ b/utils/gen_adldata/file_formats/load_ea.h @@ -110,15 +110,12 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, { snprintf(name2, 512, "%sunk%04X", prefix, offset); } -// size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); -// SetBank(bank, gmno, resno); db.addInstrument(bnkMelodic, gmno, inst, ops, fn); if(gmno == 10) { /*tmp.finetune=0;*/ tmp2.notenum = 0x49; -// SetBank(bank, 0x80 + 0x36, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x36 - 35], std::string(1, '\377') + prefix + "P54")); inst.percussionKeyNumber = 0x49; db.addInstrument(bnkPercussion, 0x36, inst, ops, fn); } @@ -126,7 +123,6 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, if(gmno == 18) { /*tmp.finetune=0;*/ tmp2.notenum = 0x17; -// SetBank(bank, 0x80 + 0x2A, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x2A - 35], std::string(1, '\377') + prefix + "P42")); inst.percussionKeyNumber = 0x17; db.addInstrument(bnkPercussion, 0x2A, inst, ops, fn); } @@ -134,7 +130,6 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, if(gmno == 16) { /*tmp.finetune=0;*/ tmp2.notenum = 0x0C; -// SetBank(bank, 0x80 + 0x24, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x24 - 35], std::string(1, '\377') + prefix + "P36")); inst.percussionKeyNumber = 0x0C; db.addInstrument(bnkPercussion, 0x24, inst, ops, fn); } @@ -142,7 +137,6 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, if(gmno == 17) { /*tmp.finetune=0;*/ tmp2.notenum = 0x01; -// SetBank(bank, 0x80 + 0x26, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x26 - 35], std::string(1, '\377') + prefix + "P38")); inst.percussionKeyNumber = 0x01; db.addInstrument(bnkPercussion, 0x26, inst, ops, fn); } @@ -150,13 +144,6 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, std::fclose(fp); -// AdlBankSetup setup; -// setup.volumeModel = VOLUME_CMF; -// setup.deepTremolo = false; -// setup.deepVibrato = false; -// setup.scaleModulators = false; -// SetBankSetup(bank, setup); - db.addMidiBank(bankDb, false, bnkMelodic); db.addMidiBank(bankDb, true, bnkPercussion); diff --git a/utils/gen_adldata/file_formats/load_ibk.h b/utils/gen_adldata/file_formats/load_ibk.h index 6ae907e..d5794c5 100644 --- a/utils/gen_adldata/file_formats/load_ibk.h +++ b/utils/gen_adldata/file_formats/load_ibk.h @@ -7,9 +7,9 @@ bool BankFormats::LoadIBK(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix, bool percussive, bool noRhythmMode) { - #ifdef HARD_BANKS +#ifdef HARD_BANKS writeIni("IBK", fn, prefix, bank, percussive ? INI_Drums : INI_Melodic); - #endif +#endif FILE *fp = std::fopen(fn, "rb"); if(!fp) return false; @@ -112,21 +112,11 @@ bool BankFormats::LoadIBK(BanksDump &db, const char *fn, unsigned bank, } } -// size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); -// SetBank(bank, (unsigned int)gmno, resno); - db.addInstrument(bnk, a, inst, ops, fn); } db.addMidiBank(bankDb, percussive, bnk); -// AdlBankSetup setup; -// setup.volumeModel = VOLUME_Generic; -// setup.deepTremolo = false; -// setup.deepVibrato = false; -// setup.scaleModulators = false; -// SetBankSetup(bank, setup); - return true; } diff --git a/utils/gen_adldata/file_formats/load_jv.h b/utils/gen_adldata/file_formats/load_jv.h index 1cb6a16..381f562 100644 --- a/utils/gen_adldata/file_formats/load_jv.h +++ b/utils/gen_adldata/file_formats/load_jv.h @@ -6,9 +6,9 @@ bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix) { - #ifdef HARD_BANKS +#ifdef HARD_BANKS writeIni("Junglevision", fn, prefix, bank, INI_Both); - #endif +#endif FILE *fp = std::fopen(fn, "rb"); if(!fp) return false; @@ -101,37 +101,20 @@ bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, db.toOps(tmp[1], ops, 2); std::string name; - if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index]; + if(midi_index >= 0) + name = std::string(1, '\377') + MidiInsName[midi_index]; char name2[512]; sprintf(name2, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); - if(!data[offset]) - { -// size_t resno = InsertIns(tmp[0], tmp2, name, name2); -// SetBank(bank, gmno, resno); - } - else // Double instrument - { -// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); -// SetBank(bank, gmno, resno); - } db.addInstrument(bnk, patchId, inst, ops, fn); } db.addMidiBank(bankDb, false, bnkMelodique); db.addMidiBank(bankDb, true, bnkPercussion); -// AdlBankSetup setup; -// setup.volumeModel = VOLUME_9X; -// setup.deepTremolo = true; -// setup.deepVibrato = true; -// setup.scaleModulators = false; -// SetBankSetup(bank, setup); - return true; } #endif // LOAD_JV_H - diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index 169ed34..0c56ef6 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -51,9 +51,9 @@ struct Doom_opl_instr bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix) { - #ifdef HARD_BANKS +#ifdef HARD_BANKS writeIni("OP2", fn, prefix, bank, INI_Both); - #endif +#endif FILE *fp = std::fopen(fn, "rb"); if(!fp) return false; @@ -137,19 +137,11 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s inst.percussionKeyNumber = tmp2.notenum; inst.secondVoiceDetune = static_cast(static_cast(ins.finetune) - 128); - if(!(ins.flags & FL_DOUBLE_VOICE)) - { -// size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2); -// SetBank(bank, (unsigned int)gmno, resno); - } - else // Double instrument + if((ins.flags & FL_DOUBLE_VOICE) != 0) { tmp2.pseudo4op = true; // Simulate behavior of DMX second voice detune tmp2.voice2_fine_tune = (double)((ins.finetune >> 1) - 64) / 32.0; - //printf("/*DOOM FINE TUNE (flags %000X instrument is %d) IS %d -> %lf*/\n", ins.flags, a, ins.finetune, tmp2.fine_tune); -// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, std::string(1, '\377') + name, name2); -// SetBank(bank, (unsigned int)gmno, resno); } db.addInstrument(bnk, patchId, inst, ops, fn); @@ -178,13 +170,6 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s db.addMidiBank(bankDb, false, bnkMelodique); db.addMidiBank(bankDb, true, bnkPercussion); -// AdlBankSetup setup; -// setup.volumeModel = VOLUME_DMX; -// setup.deepTremolo = false; -// setup.deepVibrato = false; -// setup.scaleModulators = false; -// SetBankSetup(bank, setup); - return true; } diff --git a/utils/gen_adldata/file_formats/load_tmb.h b/utils/gen_adldata/file_formats/load_tmb.h index e0b0e31..76478d1 100644 --- a/utils/gen_adldata/file_formats/load_tmb.h +++ b/utils/gen_adldata/file_formats/load_tmb.h @@ -6,9 +6,9 @@ bool BankFormats::LoadTMB(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix) { - #ifdef HARD_BANKS +#ifdef HARD_BANKS writeIni("TMB", fn, prefix, bank, INI_Both); - #endif +#endif FILE *fp = std::fopen(fn, "rb"); if(!fp) return false; @@ -77,22 +77,12 @@ bool BankFormats::LoadTMB(BanksDump &db, const char *fn, unsigned bank, const st sprintf(name2, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); -// size_t resno = InsertIns(tmp, tmp2, name, name2); -// SetBank(bank, gmno, resno); - db.addInstrument(bnk, patchId, inst, ops, fn); } db.addMidiBank(bankDb, false, bnkMelodique); db.addMidiBank(bankDb, true, bnkPercussion); -// AdlBankSetup setup; -// setup.volumeModel = VOLUME_APOGEE; -// setup.deepTremolo = false; -// setup.deepVibrato = false; -// setup.scaleModulators = false; -// SetBankSetup(bank, setup); - return true; } diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h index a60cbc4..1d24dc6 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -58,12 +58,6 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s uint16_t mbanks_count = toUint16BE((const uint8_t *)data.data() + 0x0d); uint16_t pbanks_count = toUint16BE((const uint8_t *)data.data() + 0x0f); -// AdlBankSetup setup; -// setup.deepTremolo = (data[0x11] & 0x01) != 0; -// setup.deepVibrato = (data[0x11] & 0x02) != 0; -// setup.volumeModel = (int)data[0x12]; -// setup.scaleModulators = false; - size_t bankDb = db.initBank(bank, bankTitle, static_cast((static_cast(data[0x11]) << 8) | static_cast(data[0x12]))); // Validate file format by size calculation @@ -254,27 +248,12 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s else snprintf(name2, 512, "%sM%u", prefix, i); -// if(bankno == 0) -// { -// if(!real4op && !tmp2.pseudo4op) -// { -// size_t resno = InsertIns(tmp[0], tmp2, name, name2); -// SetBank(bank, gmno, resno); -// } -// else -// { -// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); -// SetBank(bank, gmno, resno); -// } -// } db.addInstrument(bnk, i, inst, ops, fn); } db.addMidiBank(bankDb, is_percussion, bnk); } } -// 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/common.h | 1 + utils/gen_adldata/file_formats/load_ail.h | 23 +++---- utils/gen_adldata/file_formats/load_bisqwit.h | 31 ++++------ utils/gen_adldata/file_formats/load_bnk.h | 14 +---- utils/gen_adldata/file_formats/load_bnk2.h | 16 +---- utils/gen_adldata/file_formats/load_ea.h | 15 +---- utils/gen_adldata/file_formats/load_ibk.h | 18 +----- utils/gen_adldata/file_formats/load_jv.h | 35 +++++------ utils/gen_adldata/file_formats/load_op2.h | 86 ++++++++++++--------------- utils/gen_adldata/file_formats/load_tmb.h | 14 +---- utils/gen_adldata/file_formats/load_wopl.h | 72 ++++++++-------------- 11 files changed, 113 insertions(+), 212 deletions(-) (limited to 'utils/gen_adldata/file_formats') diff --git a/utils/gen_adldata/file_formats/common.h b/utils/gen_adldata/file_formats/common.h index a03ca5d..644e7a6 100644 --- a/utils/gen_adldata/file_formats/common.h +++ b/utils/gen_adldata/file_formats/common.h @@ -1,3 +1,4 @@ +#pragma once #ifndef COMMON_H #define COMMON_H diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h index 3ab38ef..d6fa014 100644 --- a/utils/gen_adldata/file_formats/load_ail.h +++ b/utils/gen_adldata/file_formats/load_ail.h @@ -104,7 +104,7 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, sprintf(name2, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); - insdata tmp[200]; + InstBuffer tmp[200]; const unsigned inscount = (length - 3) / 11; // bool twoOp = (inscount == 1); @@ -114,8 +114,8 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, if(i >= 2) break; unsigned o = offset + 3 + i * 11; - tmp[i].finetune = (gmno < 128 && i == 0) ? notenum : 0; - tmp[i].diff = (i == 1); +// tmp[i].finetune = (gmno < 128 && i == 0) ? notenum : 0; +// tmp[i].diff = (i == 1); uint8_t temp[11] = {0}; if(o < data.size()) @@ -144,18 +144,19 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank, tmp[0].data[10] = fb_c & 0x0F; tmp[1].data[10] = uint8_t((fb_c & 0x0E) | (fb_c >> 7)); } - db.toOps(tmp[i], ops, i * 2); + db.toOps(tmp[i].d, ops, i * 2); } if(inscount <= 2) { - struct ins tmp2; - tmp2.notenum = gmno < 128 ? 0 : (unsigned char)notenum; - tmp2.pseudo4op = false; - tmp2.real4op = (inscount > 1); - tmp2.voice2_fine_tune = 0.0; - tmp2.midi_velocity_offset = 0; - tmp2.rhythmModeDrum = 0; +// struct ins tmp2; +// tmp2.notenum = gmno < 128 ? 0 : (unsigned char)notenum; +// tmp2.pseudo4op = false; +// tmp2.real4op = (inscount > 1); +// tmp2.voice2_fine_tune = 0.0; +// tmp2.midi_velocity_offset = 0; +// tmp2.rhythmModeDrum = 0; + // std::string name; // if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index]; // if(h.bank == 0 || h.bank == 0x7F) diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h index 478935f..63d133f 100644 --- a/utils/gen_adldata/file_formats/load_bisqwit.h +++ b/utils/gen_adldata/file_formats/load_bisqwit.h @@ -6,9 +6,9 @@ bool BankFormats::LoadBisqwit(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix) { - #ifdef HARD_BANKS +#ifdef HARD_BANKS writeIni("Bisqwit", fn, prefix, bank, INI_Both); - #endif +#endif FILE *fp = std::fopen(fn, "rb"); if(!fp) return false; @@ -33,18 +33,12 @@ bool BankFormats::LoadBisqwit(BanksDump &db, const char *fn, unsigned bank, cons BanksDump::InstrumentEntry inst; BanksDump::Operator ops[5]; - struct ins tmp2; - tmp2.notenum = (uint8_t)std::fgetc(fp); - tmp2.pseudo4op = false; - tmp2.voice2_fine_tune = 0.0; - tmp2.midi_velocity_offset = 0; - tmp2.rhythmModeDrum = 0; + uint8_t notenum = static_cast(std::fgetc(fp)); - insdata tmp[2]; + InstBuffer tmp[2]; for(int side = 0; side < 2; ++side) { - tmp[side].finetune = (int8_t)std::fgetc(fp); - tmp[side].diff = false; + std::fseek(fp, +1, SEEK_CUR); // skip first byte, unused "fine tune" if(std::fread(tmp[side].data, 1, 11, fp) != 11) return false; } @@ -56,21 +50,16 @@ bool BankFormats::LoadBisqwit(BanksDump &db, const char *fn, unsigned bank, cons sprintf(name2, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); - tmp[1].diff = (tmp[0] != tmp[1]); - tmp2.real4op = tmp[1].diff; -// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, (tmp[0] == tmp[1])); -// SetBank(bank, gmno, resno); - - db.toOps(tmp[0], ops, 0); - if(tmp[0] != tmp[1]) + db.toOps(tmp[0].d, ops, 0); + if(tmp[0].d != tmp[1].d) { inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; - db.toOps(tmp[1], ops, 2); + db.toOps(tmp[1].d, ops, 2); } inst.fbConn = uint_fast16_t(tmp[0].data[10]) | (uint_fast16_t(tmp[1].data[10]) << 8); - inst.percussionKeyNumber = a >= 128 ? tmp2.notenum : 0; - inst.noteOffset1 = a < 128 ? tmp2.notenum : 0; + inst.percussionKeyNumber = a >= 128 ? notenum : 0; + inst.noteOffset1 = a < 128 ? notenum : 0; db.addInstrument(bnk, patchId, inst, ops, fn); } std::fclose(fp); diff --git a/utils/gen_adldata/file_formats/load_bnk.h b/utils/gen_adldata/file_formats/load_bnk.h index ed47567..29f5494 100644 --- a/utils/gen_adldata/file_formats/load_bnk.h +++ b/utils/gen_adldata/file_formats/load_bnk.h @@ -88,7 +88,7 @@ bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank, BanksDump::InstrumentEntry inst; BanksDump::Operator ops[5]; - insdata tmp; + InstBuffer tmp; tmp.data[0] = uint8_t( (op1[ 9] << 7) // TREMOLO FLAG + (op1[10] << 6) // VIBRATO FLAG @@ -110,21 +110,13 @@ bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank, tmp.data[8] = op1[0] * 0x40 + op1[8]; // KSL , LEVEL tmp.data[9] = op2[0] * 0x40 + op2[8]; // KSL , LEVEL tmp.data[10] = op1[2] * 2 + op1[12]; // FEEDBACK, ADDITIVEFLAG - tmp.finetune = 0; - tmp.diff = false; + // Note: op2[2] and op2[12] are unused and contain garbage. - ins tmp2; - tmp2.notenum = is_fat ? voice_num : (percussive ? usage_flag : 0); - tmp2.pseudo4op = false; - tmp2.real4op = false; - tmp2.voice2_fine_tune = 0.0; - tmp2.midi_velocity_offset = 0; - tmp2.rhythmModeDrum = 0; if(is_fat) tmp.data[10] ^= 1; - db.toOps(tmp, ops, 0); + db.toOps(tmp.d, ops, 0); inst.percussionKeyNumber = is_fat ? voice_num : (percussive ? usage_flag : 0); inst.setFbConn(op1[2] * 2 + op1[12]); 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); } diff --git a/utils/gen_adldata/file_formats/load_ea.h b/utils/gen_adldata/file_formats/load_ea.h index 43d4d5d..5e5711e 100644 --- a/utils/gen_adldata/file_formats/load_ea.h +++ b/utils/gen_adldata/file_formats/load_ea.h @@ -69,7 +69,7 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, BanksDump::InstrumentEntry inst; BanksDump::Operator ops[5]; - insdata tmp; + InstBuffer tmp; tmp.data[0] = bytes[0]; // reg 0x20: modulator AM/VIG/EG/KSR tmp.data[8] = bytes[1]; // reg 0x40: modulator ksl/attenuation tmp.data[2] = bytes[2]; // reg 0x60: modulator attack/decay @@ -86,17 +86,10 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, tmp.data[10] = bytes[8]; // reg 0xC0 (feedback and connection) - tmp.finetune = int8_t(bytes[9] + 12); // finetune tmp.data[6] = 0; // reg 0xE0: modulator, never seems to be set tmp.data[7] = 0; // reg 0xE0: carrier, never seems to be set - ins tmp2; - tmp2.notenum = 0; - tmp2.pseudo4op = false; - tmp2.real4op = false; - tmp2.rhythmModeDrum = 0; - - db.toOps(tmp, ops, 0); + db.toOps(tmp.d, ops, 0); inst.setFbConn(bytes[8]); inst.noteOffset1 = int8_t(bytes[9] + 12); @@ -115,28 +108,24 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank, if(gmno == 10) { - /*tmp.finetune=0;*/ tmp2.notenum = 0x49; inst.percussionKeyNumber = 0x49; db.addInstrument(bnkPercussion, 0x36, inst, ops, fn); } if(gmno == 18) { - /*tmp.finetune=0;*/ tmp2.notenum = 0x17; inst.percussionKeyNumber = 0x17; db.addInstrument(bnkPercussion, 0x2A, inst, ops, fn); } if(gmno == 16) { - /*tmp.finetune=0;*/ tmp2.notenum = 0x0C; inst.percussionKeyNumber = 0x0C; db.addInstrument(bnkPercussion, 0x24, inst, ops, fn); } if(gmno == 17) { - /*tmp.finetune=0;*/ tmp2.notenum = 0x01; inst.percussionKeyNumber = 0x01; db.addInstrument(bnkPercussion, 0x26, inst, ops, fn); } diff --git a/utils/gen_adldata/file_formats/load_ibk.h b/utils/gen_adldata/file_formats/load_ibk.h index d5794c5..f95a244 100644 --- a/utils/gen_adldata/file_formats/load_ibk.h +++ b/utils/gen_adldata/file_formats/load_ibk.h @@ -51,7 +51,7 @@ bool BankFormats::LoadIBK(BanksDump &db, const char *fn, unsigned bank, BanksDump::InstrumentEntry inst; BanksDump::Operator ops[5]; - insdata tmp; + InstBuffer tmp; tmp.data[0] = data[offset2 + 0]; tmp.data[1] = data[offset2 + 1]; tmp.data[8] = data[offset2 + 2]; @@ -65,44 +65,30 @@ bool BankFormats::LoadIBK(BanksDump &db, const char *fn, unsigned bank, tmp.data[10] = data[offset2 + 10]; // bisqwit: [+11] seems to be used also, what is it for? // Wohlstand: You wanna know? It's the rhythm-mode drum number! If 0 - melodic, >0 - rhythm-mode drum - tmp.finetune = percussive ? 0 : data[offset2 + 12]; - tmp.diff = false; - struct ins tmp2; - tmp2.notenum = percussive ? data[offset2 + 13] : 0; - tmp2.pseudo4op = false; - tmp2.real4op = false; - tmp2.voice2_fine_tune = 0.0; - tmp2.midi_velocity_offset = 0; - db.toOps(tmp, ops, 0); + db.toOps(tmp.d, ops, 0); inst.noteOffset1 = percussive ? 0 : data[offset2 + 12]; inst.percussionKeyNumber = percussive ? data[offset2 + 13] : 0; inst.setFbConn(data[offset2 + 10]); - tmp2.rhythmModeDrum = 0; if(percussive && !noRhythmMode) { int rm = data[offset2 + 11]; switch(rm) { case 6: - tmp2.rhythmModeDrum = ins::Flag_RM_BassDrum; inst.instFlags |= BanksDump::InstrumentEntry::WOPL_RM_BassDrum; break; case 7: - tmp2.rhythmModeDrum = ins::Flag_RM_Snare; inst.instFlags |= BanksDump::InstrumentEntry::WOPL_RM_Snare; break; case 8: - tmp2.rhythmModeDrum = ins::Flag_RM_TomTom; inst.instFlags |= BanksDump::InstrumentEntry::WOPL_RM_TomTom; break; case 9: - tmp2.rhythmModeDrum = ins::Flag_RM_Cymbal; inst.instFlags |= BanksDump::InstrumentEntry::WOPL_RM_Cymbal; break; case 10: - tmp2.rhythmModeDrum = ins::Flag_RM_HiHat; inst.instFlags |= BanksDump::InstrumentEntry::WOPL_RM_HiHat; break; default: diff --git a/utils/gen_adldata/file_formats/load_jv.h b/utils/gen_adldata/file_formats/load_jv.h index 381f562..9281114 100644 --- a/utils/gen_adldata/file_formats/load_jv.h +++ b/utils/gen_adldata/file_formats/load_jv.h @@ -47,8 +47,9 @@ bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, BanksDump::MidiBank &bnk = isPercussion ? bnkPercussion : bnkMelodique; BanksDump::InstrumentEntry inst; BanksDump::Operator ops[5]; + uint8_t notenum; - insdata tmp[2]; + InstBuffer tmp[2]; tmp[0].data[0] = data[offset + 2]; tmp[0].data[1] = data[offset + 8]; @@ -61,8 +62,7 @@ bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, tmp[0].data[8] = data[offset + 3]; tmp[0].data[9] = data[offset + 9]; tmp[0].data[10] = data[offset + 7] & 0x0F;//~0x30; - tmp[0].finetune = 0; - tmp[0].diff = false; + inst.noteOffset1 = 0; tmp[1].data[0] = data[offset + 2 + 11]; tmp[1].data[1] = data[offset + 8 + 11]; @@ -75,30 +75,23 @@ bool BankFormats::LoadJunglevision(BanksDump &db, const char *fn, unsigned bank, tmp[1].data[8] = data[offset + 3 + 11]; tmp[1].data[9] = data[offset + 9 + 11]; tmp[1].data[10] = data[offset + 7 + 11] & 0x0F;//~0x30; - tmp[1].finetune = 0; - tmp[1].diff = (data[offset] != 0); - - struct ins tmp2; - tmp2.notenum = data[offset + 1]; - tmp2.pseudo4op = false; - tmp2.real4op = (data[offset] != 0); - tmp2.voice2_fine_tune = 0.0; - tmp2.midi_velocity_offset = 0; - tmp2.rhythmModeDrum = 0; - - while(tmp2.notenum && tmp2.notenum < 20) + inst.noteOffset2 = 0; + + notenum = data[offset + 1]; + + while(notenum && notenum < 20) { - tmp2.notenum += 12; - tmp[0].finetune -= 12; - tmp[1].finetune -= 12; + notenum += 12; + inst.noteOffset1 -= 12; + inst.noteOffset2 -= 12; } if(data[offset] != 0) inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op; - inst.percussionKeyNumber = data[offset + 1]; + inst.percussionKeyNumber = notenum; inst.setFbConn(data[offset + 7], data[offset + 7 + 11]); - db.toOps(tmp[0], ops, 0); - db.toOps(tmp[1], ops, 2); + db.toOps(tmp[0].d, ops, 0); + db.toOps(tmp[1].d, ops, 2); std::string name; if(midi_index >= 0) diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index 0c56ef6..e43f17f 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -2,6 +2,9 @@ #define LOAD_OP2_H #include "../progs_cache.h" +#ifndef COMMON_H +#include "common.h" +#endif #ifndef _MSC_VER #define PACKED_STRUCT __attribute__((packed)) @@ -15,32 +18,32 @@ struct Doom_OPL2instrument { - unsigned char trem_vibr_1; /* OP 1: tremolo/vibrato/sustain/KSR/multi */ - unsigned char att_dec_1; /* OP 1: attack rate/decay rate */ - unsigned char sust_rel_1; /* OP 1: sustain level/release rate */ - unsigned char wave_1; /* OP 1: waveform select */ - unsigned char scale_1; /* OP 1: key scale level */ - unsigned char level_1; /* OP 1: output level */ - unsigned char feedback; /* feedback/AM-FM (both operators) */ - unsigned char trem_vibr_2; /* OP 2: tremolo/vibrato/sustain/KSR/multi */ - unsigned char att_dec_2; /* OP 2: attack rate/decay rate */ - unsigned char sust_rel_2; /* OP 2: sustain level/release rate */ - unsigned char wave_2; /* OP 2: waveform select */ - unsigned char scale_2; /* OP 2: key scale level */ - unsigned char level_2; /* OP 2: output level */ - unsigned char unused; - short basenote; /* base note offset */ + uint8_t trem_vibr_1; /* OP 1: tremolo/vibrato/sustain/KSR/multi */ + uint8_t att_dec_1; /* OP 1: attack rate/decay rate */ + uint8_t sust_rel_1; /* OP 1: sustain level/release rate */ + uint8_t wave_1; /* OP 1: waveform select */ + uint8_t scale_1; /* OP 1: key scale level */ + uint8_t level_1; /* OP 1: output level */ + uint8_t feedback; /* feedback/AM-FM (both operators) */ + uint8_t trem_vibr_2; /* OP 2: tremolo/vibrato/sustain/KSR/multi */ + uint8_t att_dec_2; /* OP 2: attack rate/decay rate */ + uint8_t sust_rel_2; /* OP 2: sustain level/release rate */ + uint8_t wave_2; /* OP 2: waveform select */ + uint8_t scale_2; /* OP 2: key scale level */ + uint8_t level_2; /* OP 2: output level */ + uint8_t unused; + uint8_t basenote[2]; /* base note offset */ } PACKED_STRUCT; struct Doom_opl_instr { - unsigned short flags; + uint8_t flags[2]; #define FL_FIXED_PITCH 0x0001 // note has fixed pitch (drum note) -#define FL_UNKNOWN 0x0002 // ??? (used in instrument #65 only) +#define FL_VIB_DELAY 0x0002 // vib_delay (used in instrument #65 only) #define FL_DOUBLE_VOICE 0x0004 // use two voices instead of one - unsigned char finetune; - unsigned char note; + uint8_t finetune; + uint8_t note; struct Doom_OPL2instrument patchdata[2]; } PACKED_STRUCT; @@ -92,10 +95,11 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s snprintf(name2, 512, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); Doom_opl_instr &ins = *(Doom_opl_instr *) &data[offset2]; + uint16_t flags = toSint16LE(ins.flags); + + InstBuffer tmp[2] = {MakeNoSoundIns1(), MakeNoSoundIns1()}; + int16_t noteOffset[2]; - insdata tmp[2] = {MakeNoSoundIns(), MakeNoSoundIns()}; - tmp[0].diff = false; - tmp[1].diff = false; for(size_t index = 0; index < 2; ++index) { const Doom_OPL2instrument &src = ins.patchdata[index]; @@ -110,40 +114,28 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s tmp[index].data[8] = src.scale_1 | src.level_1; tmp[index].data[9] = src.scale_2 | src.level_2; tmp[index].data[10] = src.feedback; - tmp[index].finetune = int8_t(src.basenote + 12); + noteOffset[index] = toSint16LE(src.basenote) + 12; inst.fbConn |= (uint_fast16_t(src.feedback) << (index == 1 ? 8 : 0)); - db.toOps(tmp[index], ops, index * 2); + db.toOps(tmp[index].d, ops, index * 2); } - struct ins tmp2; - tmp2.notenum = ins.note; - tmp2.pseudo4op = false; - tmp2.real4op = false; - tmp2.voice2_fine_tune = 0.0; - tmp2.midi_velocity_offset = 0; - tmp2.rhythmModeDrum = 0; - - while(tmp2.notenum && tmp2.notenum < 20) + + uint8_t notenum = ins.note; + + while(notenum && notenum < 20) { - tmp2.notenum += 12; - tmp[0].finetune -= 12; - tmp[1].finetune -= 12; + notenum += 12; + noteOffset[0] -= 12; + noteOffset[1] -= 12; } - inst.noteOffset1 = int8_t(tmp[0].finetune); - inst.noteOffset2 = int8_t(tmp[1].finetune); + inst.noteOffset1 = noteOffset[0]; + inst.noteOffset2 = noteOffset[1]; - if((ins.flags & FL_DOUBLE_VOICE) != 0) + if((flags & FL_DOUBLE_VOICE) != 0) inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op | BanksDump::InstrumentEntry::WOPL_Ins_Pseudo4op; - inst.percussionKeyNumber = tmp2.notenum; + inst.percussionKeyNumber = notenum; inst.secondVoiceDetune = static_cast(static_cast(ins.finetune) - 128); - if((ins.flags & FL_DOUBLE_VOICE) != 0) - { - tmp2.pseudo4op = true; - // Simulate behavior of DMX second voice detune - tmp2.voice2_fine_tune = (double)((ins.finetune >> 1) - 64) / 32.0; - } - db.addInstrument(bnk, patchId, inst, ops, fn); /*const Doom_OPL2instrument& A = ins.patchdata[0]; diff --git a/utils/gen_adldata/file_formats/load_tmb.h b/utils/gen_adldata/file_formats/load_tmb.h index 76478d1..d6fa588 100644 --- a/utils/gen_adldata/file_formats/load_tmb.h +++ b/utils/gen_adldata/file_formats/load_tmb.h @@ -41,7 +41,7 @@ bool BankFormats::LoadTMB(BanksDump &db, const char *fn, unsigned bank, const st BanksDump::InstrumentEntry inst; BanksDump::Operator ops[5]; - insdata tmp; + InstBuffer tmp; tmp.data[0] = data[offset + 0]; tmp.data[1] = data[offset + 1]; @@ -54,21 +54,11 @@ bool BankFormats::LoadTMB(BanksDump &db, const char *fn, unsigned bank, const st tmp.data[8] = data[offset + 2]; tmp.data[9] = data[offset + 3]; tmp.data[10] = data[offset + 10]; - tmp.finetune = 0; - tmp.diff = false; - - struct ins tmp2; - tmp2.notenum = data[offset + 11]; - tmp2.pseudo4op = false; - tmp2.real4op = false; - tmp2.voice2_fine_tune = 0.0; - tmp2.midi_velocity_offset = (int8_t)data[offset + 12]; - tmp2.rhythmModeDrum = 0; inst.percussionKeyNumber = data[offset + 11]; inst.midiVelocityOffset = (int8_t)data[offset + 12]; inst.fbConn = data[offset + 10]; - db.toOps(tmp, ops, 0); + db.toOps(tmp.d, ops, 0); std::string name; if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index]; diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h index 1d24dc6..6705bd9 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -128,7 +128,7 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s { uint32_t offset = bank_offset + uint32_t(i * insSize); std::string name; - insdata tmp[2]; + InstBuffer tmp[2]; BanksDump::InstrumentEntry inst; BanksDump::Operator ops[5]; @@ -151,53 +151,40 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s 8 Systain and Release register data 9 Wave form */ - tmp[0].data[0] = data[offset + 42 + 5];//AMVIB op1 - tmp[0].data[1] = data[offset + 42 + 0];//AMVIB op2 - tmp[0].data[2] = data[offset + 42 + 7];//AtDec op1 - tmp[0].data[3] = data[offset + 42 + 2];//AtDec op2 - tmp[0].data[4] = data[offset + 42 + 8];//SusRel op1 - tmp[0].data[5] = data[offset + 42 + 3];//SusRel op2 - tmp[0].data[6] = data[offset + 42 + 9];//Wave op1 - tmp[0].data[7] = data[offset + 42 + 4];//Wave op2 - tmp[0].data[8] = data[offset + 42 + 6];//KSL op1 - tmp[0].data[9] = data[offset + 42 + 1];//KSL op2 - tmp[0].data[10] = data[offset + 40]; //FeedBack/Connection - - tmp[1].data[0] = data[offset + 52 + 5]; - tmp[1].data[1] = data[offset + 52 + 0]; - tmp[1].data[2] = data[offset + 52 + 7]; - tmp[1].data[3] = data[offset + 52 + 2]; - tmp[1].data[4] = data[offset + 52 + 8]; - tmp[1].data[5] = data[offset + 52 + 3]; - tmp[1].data[6] = data[offset + 52 + 9]; - tmp[1].data[7] = data[offset + 52 + 4]; - tmp[1].data[8] = data[offset + 52 + 6]; - tmp[1].data[9] = data[offset + 52 + 1]; - tmp[1].data[10] = data[offset + 41]; + tmp[0].d.op1_amvib = data[offset + 42 + 5];//AMVIB op1 + tmp[0].d.op2_amvib = data[offset + 42 + 0];//AMVIB op2 + tmp[0].d.op1_atdec = data[offset + 42 + 7];//AtDec op1 + tmp[0].d.op2_atdec = data[offset + 42 + 2];//AtDec op2 + tmp[0].d.op1_susrel = data[offset + 42 + 8];//SusRel op1 + tmp[0].d.op2_susrel = data[offset + 42 + 3];//SusRel op2 + tmp[0].d.op1_wave = data[offset + 42 + 9];//Wave op1 + tmp[0].d.op2_wave = data[offset + 42 + 4];//Wave op2 + tmp[0].d.op1_ksltl = data[offset + 42 + 6];//KSL op1 + tmp[0].d.op2_ksltl = data[offset + 42 + 1];//KSL op2 + tmp[0].d.fbconn = data[offset + 40]; //FeedBack/Connection + + tmp[1].d.op1_amvib = data[offset + 52 + 5]; + tmp[1].d.op2_amvib = data[offset + 52 + 0]; + tmp[1].d.op1_atdec = data[offset + 52 + 7]; + tmp[1].d.op2_atdec = data[offset + 52 + 2]; + tmp[1].d.op1_susrel = data[offset + 52 + 8]; + tmp[1].d.op2_susrel = data[offset + 52 + 3]; + tmp[1].d.op1_wave = data[offset + 52 + 9]; + tmp[1].d.op2_wave = data[offset + 52 + 4]; + tmp[1].d.op1_ksltl = data[offset + 52 + 6]; + tmp[1].d.op2_ksltl = data[offset + 52 + 1]; + tmp[1].d.fbconn = data[offset + 41]; /* * We will don't read two millisecond delays on tail of instrument * as there are will be re-calculated by measurer here. * Those fields are made for hot-loading while runtime, but not * for generation of embedded banks database. */ - db.toOps(tmp[0], ops, 0); - db.toOps(tmp[1], ops, 2); + db.toOps(tmp[0].d, ops, 0); + db.toOps(tmp[1].d, ops, 2); - - tmp[0].finetune = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 32)); - tmp[1].finetune = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 34)); uint8_t flags = data[offset + 39]; - struct ins tmp2; - tmp2.notenum = is_percussion ? data[offset + 38] : 0; - bool real4op = (flags & (uint8_t)WOPL_Flags::Mode_4op) != 0; - tmp2.pseudo4op = (flags & (uint8_t)WOPL_Flags::Mode_DoubleVoice) != 0; - tmp2.real4op = real4op && !tmp2.pseudo4op; - tmp2.voice2_fine_tune = 0; - tmp2.midi_velocity_offset = (int8_t)data[offset + 36]; - tmp2.rhythmModeDrum = (flags & (uint8_t)WOPL_Flags::WOPL_RhythmModeMask); - tmp[0].diff = false; - tmp[1].diff = real4op && !tmp2.pseudo4op; //---------------- inst.instFlags = flags; inst.percussionKeyNumber = is_percussion ? data[offset + 38] : 0; @@ -214,13 +201,6 @@ bool BankFormats::LoadWopl(BanksDump &db, const char *fn, unsigned bank, const s } //---------------- - int8_t fine_tune = (int8_t)data[offset + 37]; - if(fine_tune != 0) - { - // Simulate behavior of DMX second voice detune - tmp2.voice2_fine_tune = (double)((((int)fine_tune + 128) >> 1) - 64) / 32.0; - } - uint32_t gmno = is_percussion ? i + 128 : i; if(is_percussion) -- cgit v1.2.3