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/load_wopl.h') 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/load_wopl.h') 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/load_wopl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_wopl.h') 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 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/load_wopl.h') 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 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_wopl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats/load_wopl.h') 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 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_wopl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats/load_wopl.h') 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_wopl.h | 38 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_wopl.h') 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 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_wopl.h | 21 --------------------- 1 file changed, 21 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_wopl.h') 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/load_wopl.h | 72 +++++++++++------------------- 1 file changed, 26 insertions(+), 46 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_wopl.h') 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