|
From: <sag...@us...> - 2014-03-07 21:26:42
|
Revision: 3846
http://sourceforge.net/p/modplug/code/3846
Author: saga-games
Date: 2014-03-07 21:26:33 +0000 (Fri, 07 Mar 2014)
Log Message:
-----------
[Fix] Mixer: Very small ping-pong loops were detuned sometimes, depending on the mixing frequency (http://schismtracker.org/scdev/read/1447/)
[Imp] XM: Auto-clamp envelope values when saving (to auto-fix old files with pan env value 64)
Modified Paths:
--------------
trunk/OpenMPT/soundlib/Fastmix.cpp
trunk/OpenMPT/soundlib/XMTools.cpp
Modified: trunk/OpenMPT/soundlib/Fastmix.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Fastmix.cpp 2014-03-07 17:34:52 UTC (rev 3845)
+++ trunk/OpenMPT/soundlib/Fastmix.cpp 2014-03-07 21:26:33 UTC (rev 3846)
@@ -151,7 +151,7 @@
{
// Invert loop for bidi loops
int32 nDelta = ((nLoopStart - chn.nPos) << 16) - (chn.nPosLo & 0xffff);
- chn.nPos = nLoopStart | (nDelta >> 16);
+ chn.nPos = nLoopStart + (nDelta >> 16);
chn.nPosLo = nDelta & 0xffff;
if (((int32)chn.nPos < nLoopStart) || (chn.nPos >= (nLoopStart+chn.nLength)/2))
{
@@ -473,8 +473,10 @@
void CSoundFile::ProcessPlugins(UINT nCount)
//------------------------------------------
{
+#ifdef MPT_INTMIXER
const float IntToFloat = m_PlayConfig.getIntToFloat();
const float FloatToInt = m_PlayConfig.getFloatToInt();
+#endif // MPT_INTMIXER
// Setup float inputs
for(PLUGINDEX plug = 0; plug < MAX_MIXPLUGINS; plug++)
{
Modified: trunk/OpenMPT/soundlib/XMTools.cpp
===================================================================
--- trunk/OpenMPT/soundlib/XMTools.cpp 2014-03-07 17:34:52 UTC (rev 3845)
+++ trunk/OpenMPT/soundlib/XMTools.cpp 2014-03-07 21:26:33 UTC (rev 3846)
@@ -61,11 +61,11 @@
{
case EnvTypeVol:
volEnv[i * 2] = std::min(mptEnv.Ticks[i], uint16_max);
- volEnv[i * 2 + 1] = mptEnv.Values[i];
+ volEnv[i * 2 + 1] = std::min(mptEnv.Values[i], uint8(64));
break;
case EnvTypePan:
panEnv[i * 2] = std::min(mptEnv.Ticks[i], uint16_max);
- panEnv[i * 2 + 1] = mptEnv.Values[i];
+ panEnv[i * 2 + 1] = std::min(mptEnv.Values[i], uint8(63));
break;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|