diff options
Diffstat (limited to 'utils/gen_adldata')
-rw-r--r-- | utils/gen_adldata/file_formats/load_ail.h | 9 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_bisqwit.h | 9 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_bnk.h | 9 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_bnk2.h | 9 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_ea.h | 9 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_ibk.h | 9 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_jv.h | 9 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_op2.h | 9 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_tmb.h | 9 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_wopl.h | 9 | ||||
-rw-r--r-- | utils/gen_adldata/gen_adldata.cc | 144 | ||||
-rw-r--r-- | utils/gen_adldata/progs_cache.cpp | 8 | ||||
-rw-r--r-- | utils/gen_adldata/progs_cache.h | 24 |
13 files changed, 204 insertions, 62 deletions
diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h index af2d3b4..a10ff92 100644 --- a/utils/gen_adldata/file_formats/load_ail.h +++ b/utils/gen_adldata/file_formats/load_ail.h @@ -96,6 +96,15 @@ static bool LoadMiles(const char *fn, unsigned bank, const char *prefix) SetBank(bank, (unsigned int)gmno, resno); } } + + AdlBankSetup setup; + setup.volumeModel = VOLUME_Generic; + setup.deepTremolo = true; + setup.deepVibrato = true; + setup.adLibPercussions = false; + setup.scaleModulators = false; + SetBankSetup(bank, setup); + return true; } diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h index 0ba4524..015b0eb 100644 --- a/utils/gen_adldata/file_formats/load_bisqwit.h +++ b/utils/gen_adldata/file_formats/load_bisqwit.h @@ -48,6 +48,15 @@ static bool LoadBisqwit(const char *fn, unsigned bank, const char *prefix) SetBank(bank, gmno, resno); } std::fclose(fp); + + AdlBankSetup setup; + setup.volumeModel = VOLUME_Generic; + setup.deepTremolo = true; + setup.deepVibrato = true; + setup.adLibPercussions = false; + 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 984855c..a41185a 100644 --- a/utils/gen_adldata/file_formats/load_bnk.h +++ b/utils/gen_adldata/file_formats/load_bnk.h @@ -146,6 +146,15 @@ static bool LoadBNK(const char *fn, unsigned bank, const char *prefix, bool is_f printf("\n"); */ } + + AdlBankSetup setup; + setup.volumeModel = VOLUME_Generic; + setup.deepTremolo = false; + setup.deepVibrato = false; + setup.adLibPercussions = 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 c52af5d..1f3d4a1 100644 --- a/utils/gen_adldata/file_formats/load_bnk2.h +++ b/utils/gen_adldata/file_formats/load_bnk2.h @@ -97,6 +97,15 @@ static bool LoadBNK2(const char *fn, unsigned bank, const char *prefix, SetBank(bank, (unsigned int)gmno, resno); } } + + AdlBankSetup setup; + setup.volumeModel = VOLUME_Generic; + setup.deepTremolo = false; + setup.deepVibrato = false; + setup.adLibPercussions = 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 8653e2a..5e0baa4 100644 --- a/utils/gen_adldata/file_formats/load_ea.h +++ b/utils/gen_adldata/file_formats/load_ea.h @@ -125,6 +125,15 @@ static bool LoadEA(const char *fn, unsigned bank, const char *prefix) } std::fclose(fp); + + AdlBankSetup setup; + setup.volumeModel = VOLUME_CMF; + setup.deepTremolo = false; + setup.deepVibrato = false; + setup.adLibPercussions = false; + setup.scaleModulators = false; + SetBankSetup(bank, setup); + return true; } diff --git a/utils/gen_adldata/file_formats/load_ibk.h b/utils/gen_adldata/file_formats/load_ibk.h index d5909f3..bc03962 100644 --- a/utils/gen_adldata/file_formats/load_ibk.h +++ b/utils/gen_adldata/file_formats/load_ibk.h @@ -66,6 +66,15 @@ static bool LoadIBK(const char *fn, unsigned bank, const char *prefix, bool perc size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); SetBank(bank, (unsigned int)gmno, resno); } + + AdlBankSetup setup; + setup.volumeModel = VOLUME_Generic; + setup.deepTremolo = false; + setup.deepVibrato = false; + setup.adLibPercussions = 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 f0bcbea..125356a 100644 --- a/utils/gen_adldata/file_formats/load_jv.h +++ b/utils/gen_adldata/file_formats/load_jv.h @@ -98,6 +98,15 @@ static bool LoadJunglevision(const char *fn, unsigned bank, const char *prefix) SetBank(bank, gmno, resno); } } + + AdlBankSetup setup; + setup.volumeModel = VOLUME_9X; + setup.deepTremolo = true; + setup.deepVibrato = true; + setup.adLibPercussions = false; + 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 9b5b452..8b7fec6 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -154,6 +154,15 @@ static bool LoadDoom(const char *fn, unsigned bank, const char *prefix) printf(" %s VS %s\n", name.c_str(), MidiInsName[a]); printf("------------------------------------------------------------\n");*/ } + + AdlBankSetup setup; + setup.volumeModel = VOLUME_DMX; + setup.deepTremolo = false; + setup.deepVibrato = false; + setup.adLibPercussions = 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 cd9087a..ab1ff37 100644 --- a/utils/gen_adldata/file_formats/load_tmb.h +++ b/utils/gen_adldata/file_formats/load_tmb.h @@ -62,6 +62,15 @@ static bool LoadTMB(const char *fn, unsigned bank, const char *prefix) size_t resno = InsertIns(tmp, tmp2, name, name2); SetBank(bank, gmno, resno); } + + AdlBankSetup setup; + setup.volumeModel = VOLUME_APOGEE; + setup.deepTremolo = false; + setup.deepVibrato = false; + setup.adLibPercussions = 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 533a717..a14ed71 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -53,6 +53,13 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) 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] & 0x80; + setup.deepVibrato = data[0x11] & 0x40; + setup.volumeModel = (int)data[0x12]; + setup.adLibPercussions = false; + setup.scaleModulators = false; + // Validate file format by size calculation if(version == 1) { @@ -205,6 +212,8 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) } } + SetBankSetup(bank, setup); + return true; } diff --git a/utils/gen_adldata/gen_adldata.cc b/utils/gen_adldata/gen_adldata.cc index ae78df2..21ed4d0 100644 --- a/utils/gen_adldata/gen_adldata.cc +++ b/utils/gen_adldata/gen_adldata.cc @@ -28,7 +28,7 @@ int main(int argc, char**argv) { if(argc == 1) { - printf("Usage:\n" + std::printf("Usage:\n" "\n" "bin/gen_adldata src/adldata.cpp\n" "\n"); @@ -37,14 +37,14 @@ int main(int argc, char**argv) const char *outFile_s = argv[1]; - FILE *outFile = fopen(outFile_s, "w"); + FILE *outFile = std::fopen(outFile_s, "w"); if(!outFile) { - fprintf(stderr, "Can't open %s file for write!\n", outFile_s); + std::fprintf(stderr, "Can't open %s file for write!\n", outFile_s); return 1; } - fprintf(outFile, "\ + std::fprintf(outFile, "\ #include \"adldata.hh\"\n\ \n\ /* THIS OPL-3 FM INSTRUMENT DATA IS AUTOMATICALLY GENERATED\n\ @@ -56,7 +56,7 @@ int main(int argc, char**argv) IniProcessing ini; if(!ini.open("banks.ini")) { - fprintf(stderr, "Can't open banks.ini!\n"); + std::fprintf(stderr, "Can't open banks.ini!\n"); return 1; } @@ -67,7 +67,7 @@ int main(int argc, char**argv) if(!banks_count) { - fprintf(stderr, "Zero count of banks found in banks.ini!\n"); + std::fprintf(stderr, "Zero count of banks found in banks.ini!\n"); return 1; } @@ -75,7 +75,7 @@ int main(int argc, char**argv) { if(!ini.beginGroup(std::string("bank-") + std::to_string(bank))) { - fprintf(stderr, "Failed to find bank %u!\n", bank); + std::fprintf(stderr, "Failed to find bank %u!\n", bank); return 1; } std::string bank_name; @@ -98,7 +98,7 @@ int main(int argc, char**argv) if(filepath.empty()) { - fprintf(stderr, "Failed to load bank %u, file is empty!\n", bank); + std::fprintf(stderr, "Failed to load bank %u, file is empty!\n", bank); return 1; } @@ -110,7 +110,7 @@ int main(int argc, char**argv) { if(!LoadMiles(filepath.c_str(), bank, prefix.c_str())) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } } @@ -119,7 +119,7 @@ int main(int argc, char**argv) { if(!LoadBisqwit(filepath.c_str(), bank, prefix.c_str())) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } } @@ -128,7 +128,7 @@ int main(int argc, char**argv) { if(!LoadWopl(filepath.c_str(), bank, prefix.c_str())) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } } @@ -137,7 +137,7 @@ int main(int argc, char**argv) { if(!LoadDoom(filepath.c_str(), bank, prefix.c_str())) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } } @@ -146,7 +146,7 @@ int main(int argc, char**argv) { if(!LoadEA(filepath.c_str(), bank, prefix.c_str())) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } } @@ -155,7 +155,7 @@ int main(int argc, char**argv) { if(!LoadTMB(filepath.c_str(), bank, prefix.c_str())) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } } @@ -164,7 +164,7 @@ int main(int argc, char**argv) { if(!LoadJunglevision(filepath.c_str(), bank, prefix.c_str())) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } } @@ -173,7 +173,7 @@ int main(int argc, char**argv) { if(!LoadBNK2(filepath.c_str(), bank, prefix.c_str(), filter_m, filter_p)) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } } @@ -182,14 +182,14 @@ int main(int argc, char**argv) { if(!LoadBNK(filepath.c_str(), bank, prefix.c_str(), false, false)) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } if(!filepath_d.empty()) { if(!LoadBNK(filepath_d.c_str(),bank, prefix_d.c_str(), false, true)) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } } @@ -199,7 +199,7 @@ int main(int argc, char**argv) { if(!LoadIBK(filepath.c_str(), bank, prefix.c_str(), false)) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } if(!filepath_d.empty()) @@ -207,14 +207,14 @@ int main(int argc, char**argv) //printf("Loading %s... \n", filepath_d.c_str()); if(!LoadIBK(filepath_d.c_str(),bank, prefix_d.c_str(), true)) { - fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); + std::fprintf(stderr, "Failed to load bank %u, file %s!\n", bank, filepath.c_str()); return 1; } } } else { - fprintf(stderr, "Failed to load bank %u, file %s!\nUnknown format type %s\n", + std::fprintf(stderr, "Failed to load bank %u, file %s!\nUnknown format type %s\n", bank, filepath.c_str(), format.c_str()); @@ -225,8 +225,8 @@ int main(int argc, char**argv) ini.endGroup(); } - printf("Loaded %u banks!\n", banks_count); - fflush(stdout); + std::printf("Loaded %u banks!\n", banks_count); + std::fflush(stdout); } #if 0 @@ -245,21 +245,21 @@ int main(int argc, char**argv) correlations.push_back(std::make_pair(i->second, i->first)); } std::sort(correlations.begin(), correlations.end()); - fprintf(outFile, "Byte %2u bit %u=mask %02X:\n", a / 8, a % 8, 1 << (a % 8)); + std::fprintf(outFile, "Byte %2u bit %u=mask %02X:\n", a / 8, a % 8, 1 << (a % 8)); for(size_t c = 0; c < correlations.size() && c < 10; ++c) { unsigned count = correlations[correlations.size() - 1 - c ].first; unsigned index = correlations[correlations.size() - 1 - c ].second; - fprintf(outFile, "\tAdldata index %u, bit %u=mask %02X (%u matches)\n", + std::fprintf(outFile, "\tAdldata index %u, bit %u=mask %02X (%u matches)\n", index / 8, index % 8, 1 << (index % 8), count); } } #endif - printf("Writing raw instrument data...\n"); - fflush(stdout); + std::printf("Writing raw instrument data...\n"); + std::fflush(stdout); { - fprintf(outFile, + std::fprintf(outFile, /* "static const struct\n" "{\n" @@ -289,7 +289,7 @@ int main(int argc, char**argv) ++i) { if(i->second.first != c) continue; - fprintf(outFile, " { "); + std::fprintf(outFile, " { "); uint32_t carrier_E862 = uint32_t(i->first.data[6] << 24) @@ -302,7 +302,7 @@ int main(int argc, char**argv) + uint32_t(i->first.data[3] << 8) + uint32_t(i->first.data[1] << 0); - fprintf(outFile, "0x%07X,0x%07X, 0x%02X,0x%02X, 0x%X, %+d", + std::fprintf(outFile, "0x%07X,0x%07X, 0x%02X,0x%02X, 0x%X, %+d", carrier_E862, modulator_E862, i->first.data[8], @@ -322,13 +322,13 @@ int main(int argc, char**argv) else names += *j; } - fprintf(outFile, " }, // %u: %s\n", (unsigned)c, names.c_str()); + std::fprintf(outFile, " }, // %u: %s\n", (unsigned)c, names.c_str()); } } - fprintf(outFile, "};\n"); + std::fprintf(outFile, "};\n"); } - /*fprintf(outFile, "static const struct\n" + /*std::fprintf(outFile, "static const struct\n" "{\n" " unsigned short adlno1, adlno2;\n" " unsigned char tone;\n" @@ -337,8 +337,8 @@ int main(int argc, char**argv) " long ms_sound_koff;\n" "} adlins[] =\n");*/ - fprintf(outFile, "const struct adlinsdata adlins[%u] =\n", (unsigned)instab.size()); - fprintf(outFile, "{\n"); + std::fprintf(outFile, "const struct adlinsdata adlins[%u] =\n", (unsigned)instab.size()); + std::fprintf(outFile, "{\n"); MeasureThreaded measureCounter; { @@ -378,7 +378,7 @@ int main(int argc, char**argv) { if(info.peak_amplitude_time == 0) { - fprintf(outFile, + std::fprintf(outFile, " // Amplitude begins at %6.1f,\n" " // fades to 20%% at %.1fs, keyoff fades to 20%% in %.1fs.\n", info.begin_amplitude, @@ -387,7 +387,7 @@ int main(int argc, char**argv) } else { - fprintf(outFile, + std::fprintf(outFile, " // Amplitude begins at %6.1f, peaks %6.1f at %.1fs,\n" " // fades to 20%% at %.1fs, keyoff fades to 20%% in %.1fs.\n", info.begin_amplitude, @@ -400,8 +400,8 @@ int main(int argc, char**argv) unsigned flags = (i->first.pseudo4op ? 1 : 0) | (info.nosound ? 2 : 0); - fprintf(outFile, " {"); - fprintf(outFile, "%4d,%4d,%3d, %d, %6" PRId64 ",%6" PRId64 ",%lf", + std::fprintf(outFile, " {"); + std::fprintf(outFile, "%4d,%4d,%3d, %d, %6" PRId64 ",%6" PRId64 ",%lf", (unsigned) i->first.insno1, (unsigned) i->first.insno2, (int)(i->first.notenum), @@ -421,15 +421,15 @@ int main(int argc, char**argv) else names += *j; } - fprintf(outFile, " }, // %u: %s\n\n", (unsigned)c, names.c_str()); - fflush(outFile); + std::fprintf(outFile, " }, // %u: %s\n\n", (unsigned)c, names.c_str()); + std::fflush(outFile); adlins_flags.push_back(flags); } - fprintf(outFile, "};\n\n"); + std::fprintf(outFile, "};\n\n"); - printf("Writing banks data...\n"); - fflush(stdout); + std::printf("Writing banks data...\n"); + std::fflush(stdout); //fprintf(outFile, "static const unsigned short banks[][256] =\n"); #ifdef HARD_BANKS @@ -458,23 +458,23 @@ int main(int argc, char**argv) } std::set<size_t> listed; - fprintf(outFile, + std::fprintf(outFile, "\n\n//Returns total number of generated banks\n" "int maxAdlBanks()\n" "{" " return %u;\n" "}\n\n" "const char* const banknames[%u] =\n", (unsigned int)bankcount, (unsigned int)bankcount); - fprintf(outFile, "{\n"); + std::fprintf(outFile, "{\n"); for(unsigned bank = 0; bank < bankcount; ++bank) - fprintf(outFile, " \"%s\",\n", banknames[bank].c_str()); - fprintf(outFile, "};\n"); + std::fprintf(outFile, " \"%s\",\n", banknames[bank].c_str()); + std::fprintf(outFile, "};\n"); - fprintf(outFile, "const unsigned short banks[%u][256] =\n", (unsigned int)bankcount); - fprintf(outFile, "{\n"); + std::fprintf(outFile, "const unsigned short banks[%u][256] =\n", (unsigned int)bankcount); + std::fprintf(outFile, "{\n"); for(unsigned bank = 0; bank < bankcount; ++bank) { - fprintf(outFile, " { // bank %u, %s\n", bank, banknames[bank].c_str()); + std::fprintf(outFile, " { // bank %u, %s\n", bank, banknames[bank].c_str()); bool redundant = true; for(unsigned p = 0; p < 256; ++p) { @@ -484,13 +484,13 @@ int main(int argc, char**argv) listed.insert(v); redundant = false; } - fprintf(outFile, "%4d,", (unsigned int)v); + std::fprintf(outFile, "%4d,", (unsigned int)v); if(p % 16 == 15) fprintf(outFile, "\n"); } - fprintf(outFile, " },\n"); + std::fprintf(outFile, " },\n"); if(redundant) { - fprintf(outFile, " // Bank %u defines nothing new.\n", bank); + std::fprintf(outFile, " // Bank %u defines nothing new.\n", bank); for(unsigned refbank = 0; refbank < bank; ++refbank) { bool match = true; @@ -502,16 +502,40 @@ int main(int argc, char**argv) break; } if(match) - fprintf(outFile, " // Bank %u is just a subset of bank %u!\n", + std::fprintf(outFile, " // Bank %u is just a subset of bank %u!\n", bank, refbank); } } } - fprintf(outFile, "};\n"); - fflush(outFile); - fclose(outFile); + std::fprintf(outFile, "};\n\n"); + std::fflush(outFile); - printf("Generation of ADLMIDI data has been completed!\n"); - fflush(stdout); + std::fprintf(outFile, "const AdlBankSetup adlbanksetup[%u] =\n", (unsigned)banksetup.size()); + std::fprintf(outFile, "{\n"); + { + BankSetupData::iterator last = banksetup.end(); + last--; + for(BankSetupData::iterator it = banksetup.begin(); it != banksetup.end(); it++) + { + AdlBankSetup &setup = it->second; + std::fprintf(outFile, " {%d, %d, %d, %d, %d}", + setup.volumeModel, + setup.deepTremolo, + setup.deepVibrato, + setup.adLibPercussions, + setup.scaleModulators); + if(it != last) + std::fprintf(outFile, ", //Bank %u, %s\n", (unsigned)it->first, banknames[it->first].c_str()); + else + std::fprintf(outFile, " //Bank %u, %s\n", (unsigned)it->first, banknames[it->first].c_str()); + } + } + std::fprintf(outFile, "};\n"); + std::fflush(outFile); + + std::fclose(outFile); + + std::printf("Generation of ADLMIDI data has been completed!\n"); + std::fflush(stdout); } diff --git a/utils/gen_adldata/progs_cache.cpp b/utils/gen_adldata/progs_cache.cpp index 04960e4..a59e7b7 100644 --- a/utils/gen_adldata/progs_cache.cpp +++ b/utils/gen_adldata/progs_cache.cpp @@ -4,16 +4,22 @@ InstrumentDataTab insdatatab; InstrumentsData instab; InstProgsData progs; +BankSetupData banksetup; std::vector<std::string> banknames; //unsigned maxvalues[30] = { 0 }; -void SetBank(unsigned bank, unsigned patch, size_t insno) +void SetBank(size_t bank, unsigned patch, size_t insno) { progs[bank][patch] = insno + 1; } +void SetBankSetup(size_t bank, const AdlBankSetup &setup) +{ + banksetup[bank] = setup; +} + size_t InsertIns(const insdata &id, ins &in, const std::string &name, const std::string &name2) { return InsertIns(id, id, in, name, name2, true); diff --git a/utils/gen_adldata/progs_cache.h b/utils/gen_adldata/progs_cache.h index c7eb9da..aa29c8a 100644 --- a/utils/gen_adldata/progs_cache.h +++ b/utils/gen_adldata/progs_cache.h @@ -76,6 +76,24 @@ struct ins } }; +enum VolumesModels +{ + VOLUME_Generic, + VOLUME_CMF, + VOLUME_DMX, + VOLUME_APOGEE, + VOLUME_9X +}; + +struct AdlBankSetup +{ + int volumeModel; + bool deepTremolo; + bool deepVibrato; + bool adLibPercussions; + bool scaleModulators; +}; + typedef std::map<insdata, std::pair<size_t, std::set<std::string> > > InstrumentDataTab; extern InstrumentDataTab insdatatab; @@ -85,12 +103,16 @@ extern InstrumentsData instab; typedef std::map<size_t, std::map<size_t, size_t> > InstProgsData; extern InstProgsData progs; +typedef std::map<size_t, AdlBankSetup> BankSetupData; +extern BankSetupData banksetup; + extern std::vector<std::string> banknames; //static std::map<unsigned, std::map<unsigned, unsigned> > Correlate; //extern unsigned maxvalues[30]; -void SetBank(unsigned bank, unsigned patch, size_t insno); +void SetBank(size_t bank, unsigned patch, size_t insno); +void SetBankSetup(size_t bank, const AdlBankSetup &setup); /* 2op voice instrument */ size_t InsertIns(const insdata &id, ins &in, |