diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2018-05-31 02:05:58 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2018-05-31 02:05:58 +0300 |
commit | 56c0cd7f2439898080df2e0a8129b72d2d85ca70 (patch) | |
tree | be843a7c9a7ca52457d110ba04e79dcc28f67b97 /src/adlmidi_load.cpp | |
parent | 30bd206493e8b2dae81e99cffb22266bd3029d3d (diff) | |
download | libADLMIDI-56c0cd7f2439898080df2e0a8129b72d2d85ca70.tar.gz libADLMIDI-56c0cd7f2439898080df2e0a8129b72d2d85ca70.tar.bz2 libADLMIDI-56c0cd7f2439898080df2e0a8129b72d2d85ca70.zip |
Small polishing of volume model and CMF/RSXX tempo
- Removed "Logarithmic volumes" flag as volume models concept successfuly serves this task. "Logarithmic volumes" flag is useless when we have volume models.
- Fixed "too fast" tempo while playing CMF and EA-MUS (aka RSXX) files
Diffstat (limited to 'src/adlmidi_load.cpp')
-rw-r--r-- | src/adlmidi_load.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/adlmidi_load.cpp b/src/adlmidi_load.cpp index 35fba3b..0c2fe48 100644 --- a/src/adlmidi_load.cpp +++ b/src/adlmidi_load.cpp @@ -438,10 +438,9 @@ riffskip: DeltaTicks = (size_t)ticks; opl.AdlBank = ~0u; // Ignore AdlBank number, use dynamic banks instead //std::printf("CMF deltas %u ticks %u, basictempo = %u\n", deltas, ticks, basictempo); - opl.LogarithmicVolumes = true; opl.AdlPercussionMode = true; opl.m_musicMode = OPL3::MODE_CMF; - opl.m_volumeScale = OPL3::VOLUME_CMF; + opl.m_volumeScale = OPL3::VOLUME_NATIVE; } else { @@ -456,10 +455,9 @@ riffskip: fr.seek(0x7D, SEEK_SET); TrackCount = 1; DeltaTicks = 60; - opl.LogarithmicVolumes = true; //opl.CartoonersVolumes = true; opl.m_musicMode = OPL3::MODE_RSXX; - opl.m_volumeScale = OPL3::VOLUME_CMF; + opl.m_volumeScale = OPL3::VOLUME_NATIVE; } } @@ -518,7 +516,10 @@ riffskip: TrackData.clear(); TrackData.resize(TrackCount, std::vector<uint8_t>()); InvDeltaTicks = fraction<uint64_t>(1, 1000000l * static_cast<uint64_t>(DeltaTicks)); - Tempo = fraction<uint64_t>(1, static_cast<uint64_t>(DeltaTicks) * 2); + if(is_CMF || is_RSXX) + Tempo = fraction<uint64_t>(1, static_cast<uint64_t>(DeltaTicks)); + else + Tempo = fraction<uint64_t>(1, static_cast<uint64_t>(DeltaTicks) * 2); static const unsigned char EndTag[4] = {0xFF, 0x2F, 0x00, 0x00}; size_t totalGotten = 0; |