aboutsummaryrefslogtreecommitdiff
path: root/utils/gen_adldata
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2020-08-23 22:10:46 +0300
committerWohlstand <admin@wohlnet.ru>2020-08-23 22:10:46 +0300
commitf656802667e93be893ebc30a18b0f12482586e6f (patch)
treecfc7288ee0b7cb05168e84b99abe892420ea29b9 /utils/gen_adldata
parent5c34909e6c77fabc2e5bfa33190b9994707e6b9e (diff)
downloadlibADLMIDI-f656802667e93be893ebc30a18b0f12482586e6f.tar.gz
libADLMIDI-f656802667e93be893ebc30a18b0f12482586e6f.tar.bz2
libADLMIDI-f656802667e93be893ebc30a18b0f12482586e6f.zip
gen_adldata: remove the rest of old code
Diffstat (limited to 'utils/gen_adldata')
-rw-r--r--utils/gen_adldata/file_formats/load_ail.h11
-rw-r--r--utils/gen_adldata/file_formats/load_bisqwit.h7
-rw-r--r--utils/gen_adldata/file_formats/load_bnk.h24
-rw-r--r--utils/gen_adldata/file_formats/load_bnk2.h13
-rw-r--r--utils/gen_adldata/file_formats/load_ea.h13
-rw-r--r--utils/gen_adldata/file_formats/load_ibk.h14
-rw-r--r--utils/gen_adldata/file_formats/load_jv.h25
-rw-r--r--utils/gen_adldata/file_formats/load_op2.h21
-rw-r--r--utils/gen_adldata/file_formats/load_tmb.h14
-rw-r--r--utils/gen_adldata/file_formats/load_wopl.h21
-rw-r--r--utils/gen_adldata/gen_adldata.cc274
-rw-r--r--utils/gen_adldata/measurer.cpp594
-rw-r--r--utils/gen_adldata/measurer.h12
-rw-r--r--utils/gen_adldata/progs_cache.cpp120
-rw-r--r--utils/gen_adldata/progs_cache.h38
15 files changed, 46 insertions, 1155 deletions
diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h
index abeda95..3ab38ef 100644
--- a/utils/gen_adldata/file_formats/load_ail.h
+++ b/utils/gen_adldata/file_formats/load_ail.h
@@ -15,9 +15,9 @@ struct GTL_Head // GTL file header entry structure
bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank,
const std::string &bankTitle, const char *prefix)
{
- #ifdef HARD_BANKS
+#ifdef HARD_BANKS
writeIni("AIL", fn, prefix, bank, INI_Both);
- #endif
+#endif
FILE *fp = std::fopen(fn, "rb");
if(!fp)
return false;
@@ -173,13 +173,6 @@ bool BankFormats::LoadMiles(BanksDump &db, const char *fn, unsigned bank,
}
}
-// AdlBankSetup setup;
-// setup.volumeModel = VOLUME_Generic;
-// setup.deepTremolo = true;
-// setup.deepVibrato = true;
-// setup.scaleModulators = false;
-// SetBankSetup(bank, setup);
-
for(auto &b : bnkMelodic)
db.addMidiBank(bankDb, false, b);
db.addMidiBank(bankDb, true, bnkPercussion);
diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h
index 2c803dd..478935f 100644
--- a/utils/gen_adldata/file_formats/load_bisqwit.h
+++ b/utils/gen_adldata/file_formats/load_bisqwit.h
@@ -78,13 +78,6 @@ bool BankFormats::LoadBisqwit(BanksDump &db, const char *fn, unsigned bank, cons
db.addMidiBank(bankDb, false, bnkMelodique);
db.addMidiBank(bankDb, true, bnkPercussion);
-// AdlBankSetup setup;
-// setup.volumeModel = VOLUME_Generic;
-// setup.deepTremolo = true;
-// setup.deepVibrato = true;
-// 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 4021831..ed47567 100644
--- a/utils/gen_adldata/file_formats/load_bnk.h
+++ b/utils/gen_adldata/file_formats/load_bnk.h
@@ -11,9 +11,9 @@ bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank,
const std::string &bankTitle, const char *prefix,
bool is_fat, bool percussive)
{
- #ifdef HARD_BANKS
+#ifdef HARD_BANKS
writeIni("HMI", fn, prefix, bank, percussive ? INI_Drums : INI_Melodic);
- #endif
+#endif
FILE *fp = std::fopen(fn, "rb");
if(!fp)
return false;
@@ -121,24 +121,15 @@ bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank,
tmp2.midi_velocity_offset = 0;
tmp2.rhythmModeDrum = 0;
- if(is_fat) tmp.data[10] ^= 1;
+ if(is_fat)
+ tmp.data[10] ^= 1;
db.toOps(tmp, ops, 0);
inst.percussionKeyNumber = is_fat ? voice_num : (percussive ? usage_flag : 0);
inst.setFbConn(op1[2] * 2 + op1[12]);
-// size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2);
-
if(!is_fat)
- {
-// SetBank(bank, (unsigned int)gmno, resno);
db.addInstrument(bnk, n & 127, inst, ops, fn);
- }
- else
- {
-// if(name[2] == 'O' || name[1] == 'M') SetBank(bank + 0, (unsigned int)gmno, resno);
-// if(name[2] == 'S' || name[1] == 'M') SetBank(bank + 1, (unsigned int)gmno, resno);
- }
/*
for(unsigned p=0; p<30; ++p)
@@ -166,13 +157,6 @@ bool BankFormats::LoadBNK(BanksDump &db, const char *fn, unsigned bank,
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;
}
diff --git a/utils/gen_adldata/file_formats/load_bnk2.h b/utils/gen_adldata/file_formats/load_bnk2.h
index fc36dd2..1d78c4b 100644
--- a/utils/gen_adldata/file_formats/load_bnk2.h
+++ b/utils/gen_adldata/file_formats/load_bnk2.h
@@ -120,18 +120,12 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank,
// dual-op
tmp2.real4op = true;
tmp[1].diff = true;
-// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, std::string(1, '\377') + name, name2);
-// SetBank(bank, (unsigned int)gmno, resno);
-
inst.instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_4op;
db.addInstrument(bnk, patchId, inst, opsD, fn);
}
else
{
// single-op
-// size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2);
-// SetBank(bank, (unsigned int)gmno, resno);
-
db.addInstrument(bnk, patchId, inst, opsD, fn);
}
}
@@ -139,13 +133,6 @@ bool BankFormats::LoadBNK2(BanksDump &db, const char *fn, unsigned bank,
db.addMidiBank(bankDb, false, bnkMelodic);
db.addMidiBank(bankDb, true, bnkPercussion);
-// AdlBankSetup setup;
-// setup.volumeModel = VOLUME_Generic;
-// setup.deepTremolo = false;
-// setup.deepVibrato = 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 0e2d294..43d4d5d 100644
--- a/utils/gen_adldata/file_formats/load_ea.h
+++ b/utils/gen_adldata/file_formats/load_ea.h
@@ -110,15 +110,12 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank,
{
snprintf(name2, 512, "%sunk%04X", prefix, offset);
}
-// size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2);
-// SetBank(bank, gmno, resno);
db.addInstrument(bnkMelodic, gmno, inst, ops, fn);
if(gmno == 10)
{
/*tmp.finetune=0;*/ tmp2.notenum = 0x49;
-// SetBank(bank, 0x80 + 0x36, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x36 - 35], std::string(1, '\377') + prefix + "P54"));
inst.percussionKeyNumber = 0x49;
db.addInstrument(bnkPercussion, 0x36, inst, ops, fn);
}
@@ -126,7 +123,6 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank,
if(gmno == 18)
{
/*tmp.finetune=0;*/ tmp2.notenum = 0x17;
-// SetBank(bank, 0x80 + 0x2A, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x2A - 35], std::string(1, '\377') + prefix + "P42"));
inst.percussionKeyNumber = 0x17;
db.addInstrument(bnkPercussion, 0x2A, inst, ops, fn);
}
@@ -134,7 +130,6 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank,
if(gmno == 16)
{
/*tmp.finetune=0;*/ tmp2.notenum = 0x0C;
-// SetBank(bank, 0x80 + 0x24, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x24 - 35], std::string(1, '\377') + prefix + "P36"));
inst.percussionKeyNumber = 0x0C;
db.addInstrument(bnkPercussion, 0x24, inst, ops, fn);
}
@@ -142,7 +137,6 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank,
if(gmno == 17)
{
/*tmp.finetune=0;*/ tmp2.notenum = 0x01;
-// SetBank(bank, 0x80 + 0x26, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x26 - 35], std::string(1, '\377') + prefix + "P38"));
inst.percussionKeyNumber = 0x01;
db.addInstrument(bnkPercussion, 0x26, inst, ops, fn);
}
@@ -150,13 +144,6 @@ bool BankFormats::LoadEA(BanksDump &db, const char *fn, unsigned bank,
std::fclose(fp);
-// AdlBankSetup setup;
-// setup.volumeModel = VOLUME_CMF;
-// setup.deepTremolo = false;
-// setup.deepVibrato = false;
-// setup.scaleModulators = false;
-// SetBankSetup(bank, setup);
-
db.addMidiBank(bankDb, false, bnkMelodic);
db.addMidiBank(bankDb, true, bnkPercussion);
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;
}
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
-
diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h
index 169ed34..0c56ef6 100644
--- a/utils/gen_adldata/file_formats/load_op2.h
+++ b/utils/gen_adldata/file_formats/load_op2.h
@@ -51,9 +51,9 @@ struct Doom_opl_instr
bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix)
{
- #ifdef HARD_BANKS
+#ifdef HARD_BANKS
writeIni("OP2", fn, prefix, bank, INI_Both);
- #endif
+#endif
FILE *fp = std::fopen(fn, "rb");
if(!fp)
return false;
@@ -137,19 +137,11 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s
inst.percussionKeyNumber = tmp2.notenum;
inst.secondVoiceDetune = static_cast<char>(static_cast<int>(ins.finetune) - 128);
- if(!(ins.flags & FL_DOUBLE_VOICE))
- {
-// size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2);
-// SetBank(bank, (unsigned int)gmno, resno);
- }
- else // Double instrument
+ if((ins.flags & FL_DOUBLE_VOICE) != 0)
{
tmp2.pseudo4op = true;
// Simulate behavior of DMX second voice detune
tmp2.voice2_fine_tune = (double)((ins.finetune >> 1) - 64) / 32.0;
- //printf("/*DOOM FINE TUNE (flags %000X instrument is %d) IS %d -> %lf*/\n", ins.flags, a, ins.finetune, tmp2.fine_tune);
-// size_t resno = InsertIns(tmp[0], tmp[1], tmp2, std::string(1, '\377') + name, name2);
-// SetBank(bank, (unsigned int)gmno, resno);
}
db.addInstrument(bnk, patchId, inst, ops, fn);
@@ -178,13 +170,6 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s
db.addMidiBank(bankDb, false, bnkMelodique);
db.addMidiBank(bankDb, true, bnkPercussion);
-// AdlBankSetup setup;
-// setup.volumeModel = VOLUME_DMX;
-// setup.deepTremolo = false;
-// setup.deepVibrato = 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 e0b0e31..76478d1 100644
--- a/utils/gen_adldata/file_formats/load_tmb.h
+++ b/utils/gen_adldata/file_formats/load_tmb.h
@@ -6,9 +6,9 @@
bool BankFormats::LoadTMB(BanksDump &db, const char *fn, unsigned bank, const std::string &bankTitle, const char *prefix)
{
- #ifdef HARD_BANKS
+#ifdef HARD_BANKS
writeIni("TMB", fn, prefix, bank, INI_Both);
- #endif
+#endif
FILE *fp = std::fopen(fn, "rb");
if(!fp)
return false;
@@ -77,22 +77,12 @@ bool BankFormats::LoadTMB(BanksDump &db, const char *fn, unsigned bank, const st
sprintf(name2, "%s%c%u", prefix,
(gmno < 128 ? 'M' : 'P'), gmno & 127);
-// size_t resno = InsertIns(tmp, 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_APOGEE;
-// setup.deepTremolo = false;
-// setup.deepVibrato = 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 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<uint_fast16_t>((static_cast<unsigned>(data[0x11]) << 8) | static_cast<unsigned>(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;
}
diff --git a/utils/gen_adldata/gen_adldata.cc b/utils/gen_adldata/gen_adldata.cc
index e62ddf2..b67e53b 100644
--- a/utils/gen_adldata/gen_adldata.cc
+++ b/utils/gen_adldata/gen_adldata.cc
@@ -28,29 +28,8 @@ int main(int argc, char**argv)
const char *outFile_s = argv[1];
-#if 0
- FILE *outFile = std::fopen(outFile_s, "w");
- if(!outFile)
- {
- std::fprintf(stderr, "Can't open %s file for write!\n", outFile_s);
- return 1;
- }
-#endif
-
BanksDump db;
-#if 0
- std::fprintf(outFile, "\
-#include \"adldata.hh\"\n\
-\n\
-/* THIS OPL-3 FM INSTRUMENT DATA IS AUTOMATICALLY GENERATED\n\
- * FROM A NUMBER OF SOURCES, MOSTLY PC GAMES.\n\
- * PREPROCESSED, CONVERTED, AND POSTPROCESSED OFF-SCREEN.\n\
- */\n\
-");
-#endif
-
-
{
IniProcessing ini;
if(!ini.open("banks.ini"))
@@ -230,260 +209,7 @@ int main(int argc, char**argv)
std::fflush(stdout);
}
- #if 0
- for(unsigned a = 0; a < 36 * 8; ++a)
- {
- if((1 << (a % 8)) > maxvalues[a / 8]) continue;
-
- const std::map<unsigned, unsigned> &data = Correlate[a];
- if(data.empty()) continue;
- std::vector< std::pair<unsigned, unsigned> > correlations;
- for(std::map<unsigned, unsigned>::const_iterator
- i = data.begin();
- i != data.end();
- ++i)
- {
- correlations.push_back(std::make_pair(i->second, i->first));
- }
- std::sort(correlations.begin(), correlations.end());
- 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;
- std::fprintf(outFile, "\tAdldata index %u, bit %u=mask %02X (%u matches)\n",
- index / 8, index % 8, 1 << (index % 8), count);
- }
- }
- #endif
-
-// std::printf("Writing raw instrument data...\n");
-// std::fflush(stdout);
-
MeasureThreaded measureCounter;
-//#ifndef GEN_ADLDATA_DEEP_DEBUG // Skip slowest place to work with a debug
-// {
-// std::printf("Beginning to generate measures data... (hardware concurrency of %d)\n", std::thread::hardware_concurrency());
-// std::fflush(stdout);
-// measureCounter.LoadCache("fm_banks/adldata-cache.dat");
-// measureCounter.m_total = instab.size();
-// for(size_t b = instab.size(), c = 0; c < b; ++c)
-// {
-// for(std::map<ins, std::pair<size_t, std::set<std::string> > >::const_iterator i = instab.begin(); i != instab.end(); ++i)
-// {
-// if(i->second.first != c) continue;
-// measureCounter.run(i);
-// }
-// }
-// std::fflush(stdout);
-// measureCounter.waitAll();
-// measureCounter.SaveCache("fm_banks/adldata-cache.dat");
-// }
-//#endif
-
-// std::printf("Writing generated measure data...\n");
-// std::fflush(stdout);
-
-#if 0
- std::vector<unsigned> adlins_flags;
-
- for(size_t b = instab.size(), c = 0; c < b; ++c)
- for(std::map<ins, std::pair<size_t, std::set<std::string> > >
- ::const_iterator
- i = instab.begin();
- i != instab.end();
- ++i)
- {
- if(i->second.first != c) continue;
- //DurationInfo info = MeasureDurations(i->first);
- MeasureThreaded::DurationInfoCache::iterator indo_i = measureCounter.m_durationInfo.find(i->first);
- DurationInfo info = indo_i->second;
-#ifdef ADLDATA_WITH_COMMENTS
- {
- if(info.peak_amplitude_time == 0)
- {
- std::fprintf(outFile,
- " // Amplitude begins at %6.1f,\n"
- " // fades to 20%% at %.1fs, keyoff fades to 20%% in %.1fs.\n",
- info.begin_amplitude,
- info.quarter_amplitude_time / double(info.interval),
- info.keyoff_out_time / double(info.interval));
- }
- else
- {
- 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,
- info.peak_amplitude_value,
- info.peak_amplitude_time / double(info.interval),
- info.quarter_amplitude_time / double(info.interval),
- info.keyoff_out_time / double(info.interval));
- }
- }
-#endif
-
- unsigned flags = (i->first.pseudo4op ? ins::Flag_Pseudo4op : 0)|
- (i->first.real4op ? ins::Flag_Real4op : 0) |
- (info.nosound ? ins::Flag_NoSound : 0) | i->first.rhythmModeDrum;
-
- std::fprintf(outFile, " {");
- std::fprintf(outFile, "%4d,%4d,%3d, %d, %6" PRId64 ",%6" PRId64 ", %6d, %g",
- (unsigned) i->first.insno1,
- (unsigned) i->first.insno2,
- (int)(i->first.notenum),
- flags,
- info.ms_sound_kon,
- info.ms_sound_koff,
- i->first.midi_velocity_offset,
- i->first.voice2_fine_tune);
- std::string names;
- for(std::set<std::string>::const_iterator
- j = i->second.second.begin();
- j != i->second.second.end();
- ++j)
- {
- if(!names.empty()) names += "; ";
- if((*j)[0] == '\377')
- names += j->substr(1);
- else
- names += *j;
- }
-#ifdef ADLDATA_WITH_COMMENTS
- std::fprintf(outFile, " }, // %u: %s\n\n", (unsigned)c, names.c_str());
-#else
- std::fprintf(outFile, " },\n");
-#endif
- std::fflush(outFile);
- adlins_flags.push_back(flags);
- }
- std::fprintf(outFile, "};\n\n");
-
-
- std::printf("Writing banks data...\n");
- std::fflush(stdout);
-
- //fprintf(outFile, "static const unsigned short banks[][256] =\n");
-#ifdef HARD_BANKS
- const unsigned bankcount = sizeof(banknames) / sizeof(*banknames);
-#else
- const size_t bankcount = banknames.size();
-#endif
-
- size_t nosound = InsertNoSoundIns();
-
- std::map<size_t, std::vector<size_t> > bank_data;
- for(size_t bank = 0; bank < bankcount; ++bank)
- {
- //bool redundant = true;
- std::vector<size_t> data(256);
- for(size_t p = 0; p < 256; ++p)
- {
- size_t v = progs[bank][p];
- if(v == 0 || (adlins_flags[v - 1] & 2))
- v = nosound; // Blank.in
- else
- v -= 1;
- data[p] = v;
- }
- bank_data[bank] = data;
- }
- std::set<size_t> listed;
-
-
- std::fprintf(outFile,
- "\n\n//Returns total number of generated banks\n"
- "int maxAdlBanks()\n"
- "{\n"
- " return %u;\n"
- "}\n\n"
- "const char* const banknames[%u] =\n",
- (unsigned int)bankcount,
- (unsigned int)(bankcount + 1));
- std::fprintf(outFile, "{\n");
- for(size_t bank = 0; bank < bankcount; ++bank)
- std::fprintf(outFile, " \"%s\",\n", banknames[bank].c_str());
- std::fprintf(outFile, " NULL\n};\n");
-
- std::fprintf(outFile, "const unsigned short banks[%u][256] =\n", (unsigned int)bankcount);
- std::fprintf(outFile, "{\n");
- for(size_t bank = 0; bank < bankcount; ++bank)
- {
-#ifdef ADLDATA_WITH_COMMENTS
- std::fprintf(outFile, " { // bank %u, %s\n", bank, banknames[bank].c_str());
-#else
- std::fprintf(outFile, " {\n");
- #endif
-#ifdef ADLDATA_WITH_COMMENTS
- bool redundant = true;
-#endif
- for(size_t p = 0; p < 256; ++p)
- {
- size_t v = bank_data[bank][p];
- if(listed.find(v) == listed.end())
- {
- listed.insert(v);
-#ifdef ADLDATA_WITH_COMMENTS
- redundant = false;
-#endif
- }
- std::fprintf(outFile, "%4d,", (unsigned int)v);
- if(p % 16 == 15) fprintf(outFile, "\n");
- }
- std::fprintf(outFile, " },\n");
-#ifdef ADLDATA_WITH_COMMENTS
- if(redundant)
- {
- std::fprintf(outFile, " // Bank %u defines nothing new.\n", bank);
- for(unsigned refbank = 0; refbank < bank; ++refbank)
- {
- bool match = true;
- for(unsigned p = 0; p < 256; ++p)
- if(bank_data[bank][p] != nosound
- && bank_data[bank][p] != bank_data[refbank][p])
- {
- match = false;
- break;
- }
- if(match)
- std::fprintf(outFile, " // Bank %u is just a subset of bank %u!\n",
- bank, refbank);
- }
- }
-#endif
- }
-
-#endif
-
-
-#if 0
- std::fprintf(outFile, "};\n\n");
- std::fflush(outFile);
-
- 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}",
- setup.volumeModel,
- setup.deepTremolo,
- setup.deepVibrato,
- 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);
-#endif
{
measureCounter.LoadCacheX("fm_banks/adldata-cache.dat");
diff --git a/utils/gen_adldata/measurer.cpp b/utils/gen_adldata/measurer.cpp
index 3eb6dbd..d9df679 100644
--- a/utils/gen_adldata/measurer.cpp
+++ b/utils/gen_adldata/measurer.cpp
@@ -175,60 +175,6 @@ struct TinySynth
writeReg((uint16_t)initdata[a], (uint8_t)initdata[a + 1]);
}
-// void setInstrument(const ins &in)
-// {
-// insdata rawData[2];
-// bool found[2] = {false, false};
-// for(InstrumentDataTab::const_iterator j = insdatatab.begin();
-// j != insdatatab.end();
-// ++j)
-// {
-// if(j->second.first == in.insno1)
-// {
-// rawData[0] = j->first;
-// found[0] = true;
-// if(found[1]) break;
-// }
-// if(j->second.first == in.insno2)
-// {
-// rawData[1] = j->first;
-// found[1] = true;
-// if(found[0]) break;
-// }
-// }
-
-// std::memset(m_x, 0, sizeof(m_x));
-// m_isRhythmMode = false;
-// m_playNoteNum = in.notenum >= 128 ? (in.notenum - 128) : in.notenum;
-// m_isReal4op = in.real4op && !in.pseudo4op;
-// m_isPseudo4op = in.pseudo4op;
-// if(m_playNoteNum == 0)
-// m_playNoteNum = 25;
-// m_notesNum = in.insno1 == in.insno2 ? 1 : 2;
-// m_actualNotesNum = (m_isReal4op ? 1 : m_notesNum);
-// m_voice1Detune = 0;
-// m_noteOffsets[0] = rawData[0].finetune;
-// m_noteOffsets[1] = rawData[1].finetune;
-// if(in.pseudo4op)
-// m_voice1Detune = in.voice2_fine_tune;
-// writeReg(0x104, in.real4op ? (1 << 6) - 1 : 0x00);
-
-// //For cleaner measurement, disable tremolo and vibrato
-// rawData[0].data[0] &= 0x3F;
-// rawData[0].data[1] &= 0x3F;
-// rawData[1].data[0] &= 0x3F;
-// rawData[1].data[1] &= 0x3F;
-
-// for(unsigned n = 0; n < m_notesNum; ++n)
-// {
-// static const unsigned char patchdata[11] =
-// {0x20, 0x23, 0x60, 0x63, 0x80, 0x83, 0xE0, 0xE3, 0x40, 0x43, 0xC0};
-// for(unsigned a = 0; a < 10; ++a)
-// writeReg(patchdata[a] + n * 8, rawData[n].data[a]);
-// writeReg(patchdata[10] + n * 8, rawData[n].data[10] | 0x30);
-// }
-// }
-
void setInstrument(const BanksDump &db, const BanksDump::InstrumentEntry &ins)
{
bool isPseudo4ops = ((ins.instFlags & BanksDump::InstrumentEntry::WOPL_Ins_Pseudo4op) != 0);
@@ -332,198 +278,6 @@ struct TinySynth
}
};
-#if 0
-DurationInfo MeasureDurations(const ins &in, OPLChipBase *chip)
-{
- AudioHistory<double> audioHistory;
-
- const unsigned interval = 150;
- const unsigned samples_per_interval = g_outputRate / interval;
-
- const double historyLength = 0.1; // maximum duration to memorize (seconds)
- audioHistory.reset(std::ceil(historyLength * g_outputRate));
-
- std::unique_ptr<double[]> window;
- window.reset(new double[audioHistory.capacity()]);
- unsigned winsize = 0;
-
- TinySynth synth;
- synth.m_chip = chip;
- synth.resetChip();
- synth.setInstrument(in);
- synth.noteOn();
-
- /* For capturing */
- const unsigned max_silent = 6;
- const unsigned max_on = 40;
- const unsigned max_off = 60;
-
- unsigned max_period_on = max_on * interval;
- unsigned max_period_off = max_off * interval;
-
- const double min_coefficient_on = 0.008;
- const double min_coefficient_off = 0.003;
-
- unsigned windows_passed_on = 0;
- unsigned windows_passed_off = 0;
-
- /* For Analyze the results */
- double begin_amplitude = 0;
- double peak_amplitude_value = 0;
- size_t peak_amplitude_time = 0;
- size_t quarter_amplitude_time = max_period_on;
- bool quarter_amplitude_time_found = false;
- size_t keyoff_out_time = 0;
- bool keyoff_out_time_found = false;
-
- const size_t audioBufferLength = 256;
- const size_t audioBufferSize = 2 * audioBufferLength;
- int16_t audioBuffer[audioBufferSize];
-
- // For up to 40 seconds, measure mean amplitude.
- double highest_sofar = 0;
- short sound_min = 0, sound_max = 0;
-
- for(unsigned period = 0; period < max_period_on; ++period, ++windows_passed_on)
- {
- for(unsigned i = 0; i < samples_per_interval;)
- {
- size_t blocksize = samples_per_interval - i;
- blocksize = (blocksize < audioBufferLength) ? blocksize : audioBufferLength;
- synth.generate(audioBuffer, blocksize);
- for (unsigned j = 0; j < blocksize; ++j)
- {
- int16_t s = audioBuffer[2 * j];
- audioHistory.add(s);
- if(sound_min > s) sound_min = s;
- if(sound_max < s) sound_max = s;
- }
- i += blocksize;
- }
-
- if(winsize != audioHistory.size())
- {
- winsize = audioHistory.size();
- HannWindow(window.get(), winsize);
- }
-
- double rms = MeasureRMS(audioHistory.data(), window.get(), winsize);
- /* ======== Peak time detection ======== */
- if(period == 0)
- {
- begin_amplitude = rms;
- peak_amplitude_value = rms;
- peak_amplitude_time = 0;
- }
- else if(rms > peak_amplitude_value)
- {
- peak_amplitude_value = rms;
- peak_amplitude_time = period;
- // In next step, update the quater amplitude time
- quarter_amplitude_time_found = false;
- }
- else if(!quarter_amplitude_time_found && (rms <= peak_amplitude_value * min_coefficient_on))
- {
- quarter_amplitude_time = period;
- quarter_amplitude_time_found = true;
- }
- /* ======== Peak time detection =END==== */
- if(rms > highest_sofar)
- highest_sofar = rms;
-
- if((period > max_silent * interval) &&
- ( (rms < highest_sofar * min_coefficient_on) || (sound_min >= -1 && sound_max <= 1) )
- )
- break;
- }
-
- if(!quarter_amplitude_time_found)
- quarter_amplitude_time = windows_passed_on;
-
- if(windows_passed_on >= max_period_on)
- {
- // Just Keyoff the note
- synth.noteOff();
- }
- else
- {
- // Reset the emulator and re-run the "ON" simulation until reaching the peak time
- synth.resetChip();
- synth.setInstrument(in);
- synth.noteOn();
-
- audioHistory.reset(std::ceil(historyLength * g_outputRate));
- for(unsigned period = 0;
- ((period < peak_amplitude_time) || (period == 0)) && (period < max_period_on);
- ++period)
- {
- for(unsigned i = 0; i < samples_per_interval;)
- {
- size_t blocksize = samples_per_interval - i;
- blocksize = (blocksize < audioBufferLength) ? blocksize : audioBufferLength;
- synth.generate(audioBuffer, blocksize);
- for (unsigned j = 0; j < blocksize; ++j)
- audioHistory.add(audioBuffer[2 * j]);
- i += blocksize;
- }
- }
- synth.noteOff();
- }
-
- // Now, for up to 60 seconds, measure mean amplitude.
- for(unsigned period = 0; period < max_period_off; ++period, ++windows_passed_off)
- {
- for(unsigned i = 0; i < samples_per_interval;)
- {
- size_t blocksize = samples_per_interval - i;
- blocksize = (blocksize < 256) ? blocksize : 256;
- synth.generate(audioBuffer, blocksize);
- for (unsigned j = 0; j < blocksize; ++j)
- {
- int16_t s = audioBuffer[2 * j];
- audioHistory.add(s);
- if(sound_min > s) sound_min = s;
- if(sound_max < s) sound_max = s;
- }
- i += blocksize;
- }
-
- if(winsize != audioHistory.size())
- {
- winsize = audioHistory.size();
- HannWindow(window.get(), winsize);
- }
-
- double rms = MeasureRMS(audioHistory.data(), window.get(), winsize);
- /* ======== Find Key Off time ======== */
- if(!keyoff_out_time_found && (rms <= peak_amplitude_value * min_coefficient_off))
- {
- keyoff_out_time = period;
- keyoff_out_time_found = true;
- }
- /* ======== Find Key Off time ==END=== */
- if(rms < highest_sofar * min_coefficient_off)
- break;
-
- if((period > max_silent * interval) && (sound_min >= -1 && sound_max <= 1))
- break;
- }
-
- DurationInfo result;
- result.peak_amplitude_time = peak_amplitude_time;
- result.peak_amplitude_value = peak_amplitude_value;
- result.begin_amplitude = begin_amplitude;
- result.quarter_amplitude_time = (double)quarter_amplitude_time;
- result.keyoff_out_time = (double)keyoff_out_time;
-
- result.ms_sound_kon = (int64_t)(quarter_amplitude_time * 1000.0 / interval);
- result.ms_sound_koff = (int64_t)(keyoff_out_time * 1000.0 / interval);
- result.nosound = (peak_amplitude_value < 0.5) || ((sound_min >= -1) && (sound_max <= 1));
-
- return result;
-}
-#endif
-
DurationInfo MeasureDurations(BanksDump &db, const BanksDump::InstrumentEntry &ins, OPLChipBase *chip)
{
AudioHistory<double> audioHistory;
@@ -791,243 +545,6 @@ MeasureThreaded::MeasureThreaded() :
DosBoxOPL3::globalPreInit();
}
-#if 0
-void MeasureThreaded::LoadCache(const char *fileName)
-{
- m_durationInfo.clear();
-
- FILE *in = std::fopen(fileName, "rb");
- if(!in)
- {
- std::printf("Failed to load cache: file is not exists.\n"
- "Complete data will be generated from scratch.\n");
- std::fflush(stdout);
- return;
- }
-
- char magic[32];
- if(std::fread(magic, 1, 32, in) != 32)
- {
- std::fclose(in);
- std::printf("Failed to load cache: can't read magic.\n"
- "Complete data will be generated from scratch.\n");
- std::fflush(stdout);
- return;
- }
-
- if(memcmp(magic, "ADLMIDI-DURATION-CACHE-FILE-V1.0", 32) != 0)
- {
- std::fclose(in);
- std::printf("Failed to load cache: magic missmatch.\n"
- "Complete data will be generated from scratch.\n");
- std::fflush(stdout);
- return;
- }
-
- while(!std::feof(in))
- {
- DurationInfo info;
- ins inst;
- //got by instrument
- insdata id[2];
- size_t insNo[2] = {0, 0};
- bool found[2] = {false, false};
- //got from file
- insdata id_f[2];
- bool found_f[2] = {false, false};
- bool isMatches = false;
-
- memset(id, 0, sizeof(insdata) * 2);
- memset(id_f, 0, sizeof(insdata) * 2);
- memset(&info, 0, sizeof(DurationInfo));
- memset(&inst, 0, sizeof(ins));
-
- //Instrument
- uint64_t inval;
- if(std::fread(&inval, 1, sizeof(uint64_t), in) != sizeof(uint64_t))
- break;
- inst.insno1 = inval;
- if(std::fread(&inval, 1, sizeof(uint64_t), in) != sizeof(uint64_t))
- break;
- inst.insno2 = inval;
- if(std::fread(&inst.instCache1.data, 1, 11, in) != 11)
- break;
- if(std::fread(&inst.instCache1.finetune, 1, 1, in) != 1)
- break;
- if(std::fread(&inst.instCache1.diff, 1, sizeof(bool), in) != sizeof(bool))
- break;
- if(std::fread(&inst.instCache2.data, 1, 11, in) != 11)
- break;
- if(std::fread(&inst.instCache2.finetune, 1, 1, in) != 1)
- break;
- if(std::fread(&inst.instCache2.diff, 1, sizeof(bool), in) != sizeof(bool))
- break;
-
- if(std::fread(&inst.notenum, 1, 1, in) != 1)
- break;
- if(std::fread(&inst.real4op, 1, 1, in) != 1)
- break;
- if(std::fread(&inst.pseudo4op, 1, 1, in) != 1)
- break;
- int64_t voice2detune = 0;
- if(std::fread(&voice2detune, sizeof(int64_t), 1, in) != 1)
- break;
- inst.voice2_fine_tune = static_cast<double>(voice2detune) / 1000000.0;
-
- //Instrument data
- if(fread(found_f, 1, 2 * sizeof(bool), in) != sizeof(bool) * 2)
- break;
- for(size_t i = 0; i < 2; i++)
- {
- if(fread(id_f[i].data, 1, 11, in) != 11)
- break;
- if(fread(&id_f[i].finetune, 1, 1, in) != 1)
- break;
- if(fread(&id_f[i].diff, 1, sizeof(bool), in) != sizeof(bool))
- break;
- }
-
- if(found_f[0] || found_f[1])
- {
- for(InstrumentDataTab::const_iterator j = insdatatab.begin(); j != insdatatab.end(); ++j)
- {
- if(j->second.first == inst.insno1)
- {
- id[0] = j->first;
- found[0] = (id[0] == id_f[0]);
- insNo[0] = inst.insno1;
- if(found[1]) break;
- }
- if(j->second.first == inst.insno2)
- {
- id[1] = j->first;
- found[1] = (id[1] == id_f[1]);
- insNo[1] = inst.insno2;
- if(found[0]) break;
- }
- }
-
- //Find instrument entries are matching
- if((found[0] != found_f[0]) || (found[1] != found_f[1]))
- {
- for(InstrumentDataTab::const_iterator j = insdatatab.begin(); j != insdatatab.end(); ++j)
- {
- if(found_f[0] && (j->first == id_f[0]))
- {
- found[0] = true;
- insNo[0] = j->second.first;
- }
- if(found_f[1] && (j->first == id_f[1]))
- {
- found[1] = true;
- insNo[1] = j->second.first;
- }
- if(found[0] && !found_f[1])
- {
- isMatches = true;
- break;
- }
- if(found[0] && found[1])
- {
- isMatches = true;
- break;
- }
- }
- }
- else
- {
- isMatches = true;
- }
-
- //Then find instrument entry that uses found instruments
- if(isMatches)
- {
- inst.insno1 = insNo[0];
- inst.insno2 = insNo[1];
- InstrumentsData::iterator d = instab.find(inst);
- if(d == instab.end())
- isMatches = false;
- }
- }
-
- //Duration data
- if(std::fread(&info.ms_sound_kon, 1, sizeof(int64_t), in) != sizeof(int64_t))
- break;
- if(std::fread(&info.ms_sound_koff, 1, sizeof(int64_t), in) != sizeof(int64_t))
- break;
- if(std::fread(&info.nosound, 1, sizeof(bool), in) != sizeof(bool))
- break;
-
- if(isMatches)//Store only if cached entry matches actual raw instrument data
- m_durationInfo.insert({inst, info});
- }
-
- std::printf("Cache loaded!\n");
- std::fflush(stdout);
-
- std::fclose(in);
-}
-
-void MeasureThreaded::SaveCache(const char *fileName)
-{
- FILE *out = std::fopen(fileName, "wb");
- fprintf(out, "ADLMIDI-DURATION-CACHE-FILE-V1.0");
- for(DurationInfoCache::iterator it = m_durationInfo.begin(); it != m_durationInfo.end(); it++)
- {
- const ins &in = it->first;
- insdata id[2];
- bool found[2] = {false, false};
- memset(id, 0, sizeof(insdata) * 2);
-
- uint64_t outval;
- outval = in.insno1;
- fwrite(&outval, 1, sizeof(uint64_t), out);
- outval = in.insno2;
- fwrite(&outval, 1, sizeof(uint64_t), out);
- fwrite(&in.instCache1.data, 1, 11, out);
- fwrite(&in.instCache1.finetune, 1, 1, out);
- fwrite(&in.instCache1.diff, 1, sizeof(bool), out);
- fwrite(&in.instCache2.data, 1, 11, out);
- fwrite(&in.instCache2.finetune, 1, 1, out);
- fwrite(&in.instCache2.diff, 1, sizeof(bool), out);
- fwrite(&in.notenum, 1, 1, out);
- fwrite(&in.real4op, 1, 1, out);
- fwrite(&in.pseudo4op, 1, 1, out);
- int64_t voice2detune = static_cast<int64_t>(in.voice2_fine_tune * 1000000.0);
- fwrite(&voice2detune, sizeof(int64_t), 1, out);
-
- for(InstrumentDataTab::const_iterator j = insdatatab.begin(); j != insdatatab.end(); ++j)
- {
- if(j->second.first == in.insno1)
- {
- id[0] = j->first;
- found[0] = true;
- if(found[1]) break;
- }
- if(j->second.first == in.insno2)
- {
- id[1] = j->first;
- found[1] = true;
- if(found[0]) break;
- }
- }
-
- fwrite(found, 1, 2 * sizeof(bool), out);
- for(size_t i = 0; i < 2; i++)
- {
- fwrite(id[i].data, 1, 11, out);
- fwrite(&id[i].finetune, 1, 1, out);
- fwrite(&id[i].diff, 1, sizeof(bool), out);
- }
-
- fwrite(&it->second.ms_sound_kon, 1, sizeof(int64_t), out);
- fwrite(&it->second.ms_sound_koff, 1, sizeof(int64_t), out);
- fwrite(&it->second.nosound, 1, sizeof(bool), out);
- }
- std::fclose(out);
-}
-#endif
-
void MeasureThreaded::LoadCacheX(const char *fileName)
{
m_durationInfoX.clear();
@@ -1195,37 +712,6 @@ void MeasureThreaded::printFinal()
std::fflush(stdout);
}
-#if 0
-void MeasureThreaded::run(InstrumentsData::const_iterator i)
-{
- m_semaphore.wait();
- if(m_threads.size() > 0)
- {
- for(std::vector<destData *>::iterator it = m_threads.begin(); it != m_threads.end();)
- {
- if(!(*it)->m_works)
- {
- delete(*it);
- it = m_threads.erase(it);
- }
- else
- it++;
- }
- }
-
- destData *dd = new destData;
- dd->i = i;
- dd->bd = nullptr;
- dd->bd_ins = nullptr;
- dd->myself = this;
- dd->start();
- m_threads.push_back(dd);
-#ifdef ADL_GENDATA_PRINT_PROGRESS
- printProgress();
-#endif
-}
-#endif
-
void MeasureThreaded::run(BanksDump &bd, BanksDump::InstrumentEntry &e)
{
m_semaphore.wait();
@@ -1276,58 +762,34 @@ void MeasureThreaded::destData::callback(void *myself)
{
destData *s = reinterpret_cast<destData *>(myself);
DurationInfo info;
- DosBoxOPL3 dosbox;
- // NukedOPL3 dosbox;
-
- if(s->bd)
- {
- OperatorsKey ok = {s->bd_ins->ops[0], s->bd_ins->ops[1], s->bd_ins->ops[2], s->bd_ins->ops[3],
- static_cast<int_fast32_t>(s->bd_ins->fbConn),
- s->bd_ins->noteOffset1, s->bd_ins->noteOffset2,
- static_cast<int_fast32_t>(s->bd_ins->percussionKeyNumber),
- static_cast<int_fast32_t>(s->bd_ins->instFlags),
- static_cast<int_fast32_t>(s->bd_ins->secondVoiceDetune)};
- s->myself->m_durationInfo_mx.lock();
- DurationInfoCacheX::iterator cachedEntry = s->myself->m_durationInfoX.find(ok);
- bool atEnd = cachedEntry == s->myself->m_durationInfoX.end();
- s->myself->m_durationInfo_mx.unlock();
-
- if(!atEnd)
- {
- const DurationInfo &di = cachedEntry->second;
- s->bd_ins->delay_on_ms = di.ms_sound_kon;
- s->bd_ins->delay_off_ms = di.ms_sound_koff;
- if(di.nosound)
- s->bd_ins->instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_IsBlank;
- s->myself->m_cache_matches++;
- goto endWork;
- }
- info = MeasureDurations(*s->bd, *s->bd_ins, &dosbox);
- s->myself->m_durationInfo_mx.lock();
- s->myself->m_durationInfoX.insert({ok, info});
- s->myself->m_durationInfo_mx.unlock();
- }
- else
- {
-#if 0
- const ins &ok = s->i->first;
- s->myself->m_durationInfo_mx.lock();
- DurationInfoCache::iterator cachedEntry = s->myself->m_durationInfo.find(ok);
- bool atEnd = cachedEntry == s->myself->m_durationInfo.end();
- s->myself->m_durationInfo_mx.unlock();
-
- if(!atEnd)
- {
- s->myself->m_cache_matches++;
- goto endWork;
- }
-
- info = MeasureDurations(ok, &dosbox);
- s->myself->m_durationInfo_mx.lock();
- s->myself->m_durationInfo.insert({ok, info});
- s->myself->m_durationInfo_mx.unlock();
-#endif
- }
+ DosBoxOPL3 chip;
+ // NukedOPL3 chip;
+
+ OperatorsKey ok = {s->bd_ins->ops[0], s->bd_ins->ops[1], s->bd_ins->ops[2], s->bd_ins->ops[3],
+ static_cast<int_fast32_t>(s->bd_ins->fbConn),
+ s->bd_ins->noteOffset1, s->bd_ins->noteOffset2,
+ static_cast<int_fast32_t>(s->bd_ins->percussionKeyNumber),
+ static_cast<int_fast32_t>(s->bd_ins->instFlags),
+ static_cast<int_fast32_t>(s->bd_ins->secondVoiceDetune)};
+ s->myself->m_durationInfo_mx.lock();
+ DurationInfoCacheX::iterator cachedEntry = s->myself->m_durationInfoX.find(ok);
+ bool atEnd = cachedEntry == s->myself->m_durationInfoX.end();
+ s->myself->m_durationInfo_mx.unlock();
+
+ if(!atEnd)
+ {
+ const DurationInfo &di = cachedEntry->second;
+ s->bd_ins->delay_on_ms = di.ms_sound_kon;
+ s->bd_ins->delay_off_ms = di.ms_sound_koff;
+ if(di.nosound)
+ s->bd_ins->instFlags |= BanksDump::InstrumentEntry::WOPL_Ins_IsBlank;
+ s->myself->m_cache_matches++;
+ goto endWork;
+ }
+ info = MeasureDurations(*s->bd, *s->bd_ins, &chip);
+ s->myself->m_durationInfo_mx.lock();
+ s->myself->m_durationInfoX.insert({ok, info});
+ s->myself->m_durationInfo_mx.unlock();
endWork:
s->myself->m_semaphore.notify();
diff --git a/utils/gen_adldata/measurer.h b/utils/gen_adldata/measurer.h
index f49b9bf..5a6acd1 100644
--- a/utils/gen_adldata/measurer.h
+++ b/utils/gen_adldata/measurer.h
@@ -70,11 +70,6 @@ struct MeasureThreaded
std::atomic<size_t> m_done;
std::atomic<size_t> m_cache_matches;
-#if 0
- void LoadCache(const char *fileName);
- void SaveCache(const char *fileName);
-#endif
-
void LoadCacheX(const char *fileName);
void SaveCacheX(const char *fileName);
@@ -103,17 +98,12 @@ struct MeasureThreaded
void printProgress();
void printFinal();
-#if 0
- void run(InstrumentsData::const_iterator i);
-#endif
+
void run(BanksDump &bd, BanksDump::InstrumentEntry &e);
void waitAll();
};
class OPLChipBase;
-#if 0
-extern DurationInfo MeasureDurations(const ins &in, OPLChipBase *chip);
-#endif
extern DurationInfo MeasureDurations(const BanksDump &db, const BanksDump::InstrumentEntry &ins, OPLChipBase *chip);
#endif // MEASURER_H
diff --git a/utils/gen_adldata/progs_cache.cpp b/utils/gen_adldata/progs_cache.cpp
index 73b05da..3ae5514 100644
--- a/utils/gen_adldata/progs_cache.cpp
+++ b/utils/gen_adldata/progs_cache.cpp
@@ -11,126 +11,6 @@
#include "file_formats/load_wopl.h"
#include "file_formats/load_ea.h"
-//InstrumentDataTab insdatatab;
-
-//InstrumentsData instab;
-//InstProgsData progs;
-//BankSetupData banksetup;
-
-//std::vector<std::string> banknames;
-
-//unsigned maxvalues[30] = { 0 };
-
-//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);
-//}
-
-//size_t InsertIns(
-// const insdata &id,
-// const insdata &id2,
-// ins &in,
-// const std::string &name,
-// const std::string &name2,
-// bool oneVoice)
-//{
-// {
-// InstrumentDataTab::iterator i = insdatatab.lower_bound(id);
-
-// size_t insno = ~size_t(0);
-// if(i == insdatatab.end() || i->first != id)
-// {
-// std::pair<insdata, std::pair<size_t, std::set<std::string> > > res;
-// res.first = id;
-// res.second.first = insdatatab.size();
-// if(!name.empty()) res.second.second.insert(name);
-// if(!name2.empty()) res.second.second.insert(name2);
-// insdatatab.insert(i, res);
-// insno = res.second.first;
-// }
-// else
-// {
-// if(!name.empty()) i->second.second.insert(name);
-// if(!name2.empty()) i->second.second.insert(name2);
-// insno = i->second.first;
-// }
-
-// in.insno1 = insno;
-// in.instCache1 = id;
-// }
-
-// if(oneVoice || (id == id2))
-// {
-// in.insno2 = in.insno1;
-// in.instCache2 = in.instCache1;
-// }
-// else
-// {
-// InstrumentDataTab::iterator i = insdatatab.lower_bound(id2);
-
-// size_t insno2 = ~size_t(0);
-// if(i == insdatatab.end() || i->first != id2)
-// {
-// std::pair<insdata, std::pair<size_t, std::set<std::string> > > res;
-// res.first = id2;
-// res.second.first = insdatatab.size();
-// if(!name.empty()) res.second.second.insert(name);
-// if(!name2.empty()) res.second.second.insert(name2);
-// insdatatab.insert(i, res);
-// insno2 = res.second.first;
-// }
-// else
-// {
-// if(!name.empty()) i->second.second.insert(name);
-// if(!name2.empty()) i->second.second.insert(name2);
-// insno2 = i->second.first;
-// }
-// in.insno2 = insno2;
-// in.instCache2 = id2;
-// }
-
-// {
-// InstrumentsData::iterator i = instab.lower_bound(in);
-
-// size_t resno = ~size_t(0);
-// if(i == instab.end() || i->first != in)
-// {
-// std::pair<ins, std::pair<size_t, std::set<std::string> > > res;
-// res.first = in;
-// res.second.first = instab.size();
-// if(!name.empty()) res.second.second.insert(name);
-// if(!name2.empty()) res.second.second.insert(name2);
-// instab.insert(i, res);
-// resno = res.second.first;
-// }
-// else
-// {
-// if(!name.empty()) i->second.second.insert(name);
-// if(!name2.empty()) i->second.second.insert(name2);
-// resno = i->second.first;
-// }
-// return resno;
-// }
-//}
-
-//// Create silent 'nosound' instrument
-//size_t InsertNoSoundIns()
-//{
-// // { 0x0F70700,0x0F70710, 0xFF,0xFF, 0x0,+0 },
-// insdata tmp1 = MakeNoSoundIns();
-// struct ins tmp2;
-// return InsertIns(tmp1, tmp1, tmp2, "nosound", "");
-//}
insdata MakeNoSoundIns()
{
diff --git a/utils/gen_adldata/progs_cache.h b/utils/gen_adldata/progs_cache.h
index 10e29aa..2780345 100644
--- a/utils/gen_adldata/progs_cache.h
+++ b/utils/gen_adldata/progs_cache.h
@@ -144,44 +144,6 @@ enum VolumesModels
VOLUME_9X
};
-//struct AdlBankSetup
-//{
-// int volumeModel;
-// bool deepTremolo;
-// bool deepVibrato;
-// bool scaleModulators;
-//};
-
-//typedef std::map<insdata, std::pair<size_t, std::set<std::string> > > InstrumentDataTab;
-//extern InstrumentDataTab insdatatab;
-
-//typedef std::map<ins, std::pair<size_t, std::set<std::string> > > InstrumentsData;
-//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(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,
-// const std::string &name, const std::string &name2);
-
-///* 4op voice instrument or double-voice 2-op instrument */
-//size_t InsertIns(const insdata &id, const insdata &id2, ins &in,
-// const std::string &name, const std::string &name2,
-// bool oneVoice = false);
-
-//size_t InsertNoSoundIns();
insdata MakeNoSoundIns();