aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_load.cpp
diff options
context:
space:
mode:
authorVitaly Novichkov <admin@wohlnet.ru>2018-05-31 02:05:58 +0300
committerVitaly Novichkov <admin@wohlnet.ru>2018-05-31 02:05:58 +0300
commit56c0cd7f2439898080df2e0a8129b72d2d85ca70 (patch)
treebe843a7c9a7ca52457d110ba04e79dcc28f67b97 /src/adlmidi_load.cpp
parent30bd206493e8b2dae81e99cffb22266bd3029d3d (diff)
downloadlibADLMIDI-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.cpp11
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;