aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/gen_adldata/file_formats/load_ail.h9
-rw-r--r--utils/gen_adldata/file_formats/load_bisqwit.h9
-rw-r--r--utils/gen_adldata/file_formats/load_bnk.h9
-rw-r--r--utils/gen_adldata/file_formats/load_bnk2.h9
-rw-r--r--utils/gen_adldata/file_formats/load_ea.h9
-rw-r--r--utils/gen_adldata/file_formats/load_ibk.h9
-rw-r--r--utils/gen_adldata/file_formats/load_jv.h9
-rw-r--r--utils/gen_adldata/file_formats/load_op2.h9
-rw-r--r--utils/gen_adldata/file_formats/load_tmb.h9
-rw-r--r--utils/gen_adldata/file_formats/load_wopl.h9
-rw-r--r--utils/gen_adldata/gen_adldata.cc144
-rw-r--r--utils/gen_adldata/progs_cache.cpp8
-rw-r--r--utils/gen_adldata/progs_cache.h24
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,