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_jv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats/load_jv.h') 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); -- 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/load_jv.h') 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_jv.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_jv.h') 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 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/load_jv.h') 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 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_jv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats/load_jv.h') 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); -- 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_jv.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_jv.h') 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; } -- 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_jv.h | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_jv.h') 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 - -- 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_jv.h | 35 +++++++++++++------------------- 1 file changed, 14 insertions(+), 21 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_jv.h') 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) -- cgit v1.2.3