|
From: <sag...@us...> - 2011-09-19 00:34:43
|
Revision: 1044
http://modplug.svn.sourceforge.net/modplug/?rev=1044&view=rev
Author: saga-games
Date: 2011-09-19 00:34:36 +0000 (Mon, 19 Sep 2011)
Log Message:
-----------
[Fix] Revision 1034 severely broke global volume ramping (rapid changes suddenly became very smooth)
Revision Links:
--------------
http://modplug.svn.sourceforge.net/modplug/?rev=1034&view=rev
Modified Paths:
--------------
trunk/OpenMPT/soundlib/Sndfile.cpp
trunk/OpenMPT/soundlib/Sndfile.h
trunk/OpenMPT/soundlib/Sndmix.cpp
Modified: trunk/OpenMPT/soundlib/Sndfile.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Sndfile.cpp 2011-09-18 23:40:27 UTC (rev 1043)
+++ trunk/OpenMPT/soundlib/Sndfile.cpp 2011-09-19 00:34:36 UTC (rev 1044)
@@ -737,7 +737,8 @@
m_nGlobalVolume = m_nDefaultGlobalVolume;
m_lHighResRampingGlobalVolume = m_nGlobalVolume<<VOLUMERAMPPRECISION;
m_nGlobalVolumeDestination = m_nGlobalVolume;
- m_nSamplesToGlobalVolRampDest=0;
+ m_nSamplesToGlobalVolRampDest = 0;
+ m_nGlobalVolumeRampAmount = 0;
m_nNextPattern = 0;
m_nCurrentPattern = 0;
m_nPattern = 0;
Modified: trunk/OpenMPT/soundlib/Sndfile.h
===================================================================
--- trunk/OpenMPT/soundlib/Sndfile.h 2011-09-18 23:40:27 UTC (rev 1043)
+++ trunk/OpenMPT/soundlib/Sndfile.h 2011-09-19 00:34:36 UTC (rev 1044)
@@ -711,7 +711,7 @@
ORDERINDEX m_nCurrentPattern, m_nNextPattern, m_nRestartPos, m_nSeqOverride;
//NOTE: m_nCurrentPattern and m_nNextPattern refer to order index - not pattern index.
bool m_bPatternTransitionOccurred;
- UINT m_nMasterVolume, m_nGlobalVolume, m_nSamplesToGlobalVolRampDest,
+ UINT m_nMasterVolume, m_nGlobalVolume, m_nSamplesToGlobalVolRampDest, m_nGlobalVolumeRampAmount,
m_nGlobalVolumeDestination, m_nSamplePreAmp, m_nVSTiVolume;
long m_lHighResRampingGlobalVolume;
UINT m_nFreqFactor, m_nTempoFactor, m_nOldGlbVolSlide;
Modified: trunk/OpenMPT/soundlib/Sndmix.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Sndmix.cpp 2011-09-18 23:40:27 UTC (rev 1043)
+++ trunk/OpenMPT/soundlib/Sndmix.cpp 2011-09-19 00:34:36 UTC (rev 1044)
@@ -2572,11 +2572,9 @@
// User has provided new global volume
const bool rampUp = m_nGlobalVolumeDestination > m_nGlobalVolume;
m_nGlobalVolumeDestination = m_nGlobalVolume;
- m_nSamplesToGlobalVolRampDest = rampUp ? gnVolumeRampUpSamples : gnVolumeRampDownSamples;
+ m_nSamplesToGlobalVolRampDest = m_nGlobalVolumeRampAmount = rampUp ? gnVolumeRampUpSamples : gnVolumeRampDownSamples;
}
- const long rampLength = m_nSamplesToGlobalVolRampDest;
-
if (m_nSamplesToGlobalVolRampDest > 0)
{
// Still some ramping left to do.
@@ -2585,10 +2583,12 @@
const long delta = highResGlobalVolumeDestination - m_lHighResRampingGlobalVolume;
step = delta / static_cast<long>(m_nSamplesToGlobalVolRampDest);
- UINT maxStep = max(50, (10000 / (rampLength + 1))); // Define max step size as some factor of user defined ramping value: the lower the value, the more likely the click.
- while(abs(step) > maxStep) // If step is too big (might cause click), extend ramp length.
+ // Define max step size as some factor of user defined ramping value: the lower the value, the more likely the click.
+ // If step is too big (might cause click), extend ramp length.
+ UINT maxStep = max(50, (10000 / (m_nGlobalVolumeRampAmount + 1)));
+ while(static_cast<UINT>(abs(step)) > maxStep)
{
- m_nSamplesToGlobalVolRampDest += rampLength;
+ m_nSamplesToGlobalVolRampDest += m_nGlobalVolumeRampAmount;
step = delta / static_cast<long>(m_nSamplesToGlobalVolRampDest);
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|