diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2019-07-15 01:03:54 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2019-07-15 01:03:54 +0300 |
commit | c8953f4fb0d4a39accf99f67baecd569670f8e6f (patch) | |
tree | 7d9b2d4c1204533d8b76af4be3e85c6ad3165e82 /utils | |
parent | 1529bbea9b3003bfb25853660cfa5db091fd7646 (diff) | |
download | libADLMIDI-c8953f4fb0d4a39accf99f67baecd569670f8e6f.tar.gz libADLMIDI-c8953f4fb0d4a39accf99f67baecd569670f8e6f.tar.bz2 libADLMIDI-c8953f4fb0d4a39accf99f67baecd569670f8e6f.zip |
Don't measure rhythm-mode drums. Yet.
Diffstat (limited to 'utils')
-rw-r--r-- | utils/gen_adldata/measurer.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/utils/gen_adldata/measurer.cpp b/utils/gen_adldata/measurer.cpp index 4ef615e..e39512d 100644 --- a/utils/gen_adldata/measurer.cpp +++ b/utils/gen_adldata/measurer.cpp @@ -145,6 +145,7 @@ struct TinySynth unsigned m_actualNotesNum; bool m_isReal4op; bool m_isPseudo4op; + bool m_isRhythmMode; int m_playNoteNum; int8_t m_voice1Detune; int16_t m_noteOffsets[2]; @@ -197,6 +198,7 @@ struct TinySynth } 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; @@ -231,6 +233,7 @@ struct TinySynth { bool isPseudo4ops = ((ins.instFlags & BanksDump::InstrumentEntry::WOPL_Ins_Pseudo4op) != 0); bool is4ops = ((ins.instFlags & BanksDump::InstrumentEntry::WOPL_Ins_4op) != 0) && !isPseudo4ops; + m_isRhythmMode = ((ins.instFlags & BanksDump::InstrumentEntry::WOPL_RhythmModeMask) != 0); size_t opsNum = (is4ops || isPseudo4ops) ? 4 : 2; BanksDump::Operator ops[4]; assert(ins.ops[0] >= 0); @@ -541,6 +544,18 @@ DurationInfo MeasureDurations(BanksDump &db, const BanksDump::InstrumentEntry &i synth.setInstrument(db, ins); synth.noteOn(); + if(synth.m_isRhythmMode) // Skip rhythm-mode check + { + DurationInfo result; + std::memset(&result, 0, sizeof(DurationInfo)); + result.ms_sound_kon = 1000; + result.ms_sound_koff = 10; + result.nosound = false; + db.instruments[ins.instId].delay_on_ms = result.ms_sound_kon; + db.instruments[ins.instId].delay_off_ms = result.ms_sound_koff; + return result; + } + #ifdef GEN_ADLDATA_DEEP_DEBUG /*****************DEBUG******************/ char waveFileOut[80] = ""; |