aboutsummaryrefslogtreecommitdiff
path: root/utils/gen_adldata
diff options
context:
space:
mode:
authorVitaly Novichkov <admin@wohlnet.ru>2019-07-08 03:13:54 +0300
committerVitaly Novichkov <admin@wohlnet.ru>2019-07-08 03:13:54 +0300
commit9cf0445116c8e69dc3d4c2768af74af9281914d1 (patch)
tree169a45545a041f6ea1d5c5cb5caf59a8ef7b5f5b /utils/gen_adldata
parentbfd932874f5e107eaf81c40b87d5c722170a5ace (diff)
downloadlibADLMIDI-9cf0445116c8e69dc3d4c2768af74af9281914d1.tar.gz
libADLMIDI-9cf0445116c8e69dc3d4c2768af74af9281914d1.tar.bz2
libADLMIDI-9cf0445116c8e69dc3d4c2768af74af9281914d1.zip
Minor fixes
Looks like need to correct 4-op sounding, looks like it really silent inside measurer when it must give an actual sound!
Diffstat (limited to 'utils/gen_adldata')
-rw-r--r--utils/gen_adldata/measurer.cpp11
-rw-r--r--utils/gen_adldata/progs_cache.cpp2
2 files changed, 8 insertions, 5 deletions
diff --git a/utils/gen_adldata/measurer.cpp b/utils/gen_adldata/measurer.cpp
index 4e47723..9dd5e68 100644
--- a/utils/gen_adldata/measurer.cpp
+++ b/utils/gen_adldata/measurer.cpp
@@ -253,7 +253,7 @@ struct TinySynth
m_noteOffsets[1] = ins.noteOffset2;
if(isPseudo4ops)
m_voice1Detune = ins.secondVoiceDetune;
- m_chip->writeReg(0x104, is4ops ? (1 << 6) - 1 : 0x00);
+ m_chip->writeReg(0x104, is4ops ? 0x3F : 0x00);
//For cleaner measurement, disable tremolo and vibrato
ops[0].d_E862 &= 0xFFFFFF3F;
@@ -730,7 +730,7 @@ DurationInfo MeasureDurations(BanksDump &db, const BanksDump::InstrumentEntry &i
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));
+ result.nosound = (peak_amplitude_value < 0.5) || ((sound_min >= -19) && (sound_max <= 18));
db.instruments[ins.instId].delay_on_ms = result.ms_sound_kon;
db.instruments[ins.instId].delay_off_ms = result.ms_sound_koff;
@@ -748,7 +748,7 @@ DurationInfo MeasureDurations(BanksDump &db, const BanksDump::InstrumentEntry &i
if(silent1 != silent2)
{
std::fprintf(stdout,
- "\n\n%04lu - %s AN=%u NN=%u -- con1=%lu, con2=%lu\n%s computed - %s actual (%g peak)\n\n",
+ "\n\n%04lu - %s AN=%u NN=%u -- con1=%lu, con2=%lu\n%s computed - %s actual (%g peak, %d<%d)\n\n",
ins.instId, synth.m_isPseudo4op ? "pseudo4op" :
synth.m_isReal4op ? "4op" : "2op",
synth.m_actualNotesNum,
@@ -757,13 +757,16 @@ DurationInfo MeasureDurations(BanksDump &db, const BanksDump::InstrumentEntry &i
(ins.fbConn >> 8) & 0x01,
silent2 ? "silent" : "sound",
silent1 ? "silent" : "sound",
- peak_amplitude_value);
+ peak_amplitude_value,
+ sound_min,
+ sound_max);
for(auto &sss : ins.instMetas)
std::fprintf(stdout, "%s\n", sss.c_str());
BanksDump::isSilent(db, ins, true);
std::fprintf(stdout, "\n\n");
std::fflush(stdout);
assert(silent1 == silent2);
+ exit(1);
}
}
diff --git a/utils/gen_adldata/progs_cache.cpp b/utils/gen_adldata/progs_cache.cpp
index d4ba10e..0e087d3 100644
--- a/utils/gen_adldata/progs_cache.cpp
+++ b/utils/gen_adldata/progs_cache.cpp
@@ -420,7 +420,7 @@ struct OpCheckData
attack = static_cast<uint_fast8_t>((d_E862 >> 12) & 0x0F);
release = static_cast<uint_fast8_t>((d_E862 >> 16) & 0x0F);
sustain = static_cast<uint_fast8_t>((d_E862 >> 20) & 0x0F);
- level = static_cast<uint_fast8_t>(d_40);
+ level = static_cast<uint_fast8_t>(d_40 & 0x3F);
}
bool isOpSilent(bool moreInfo)