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_ibk.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats/load_ibk.h') 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); -- 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 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats/load_ibk.h') 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; -- 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_ibk.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils/gen_adldata/file_formats/load_ibk.h') 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); -- 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_ibk.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_ibk.h') 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; } -- 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_ibk.h | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_ibk.h') 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; } -- 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_ibk.h | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) (limited to 'utils/gen_adldata/file_formats/load_ibk.h') 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: -- cgit v1.2.3