@@ -32,9 +32,6 @@ void GOSoundFader::Process(
32
32
unsigned nFrames, float *buffer, float externalVolume) {
33
33
// setup process
34
34
35
- // Consider the velocity volume as part of the external volume
36
- externalVolume *= m_VelocityVolume;
37
-
38
35
float startTargetVolumePoint = m_LastTargetVolumePoint;
39
36
40
37
// Calculate new m_LastTargetVolumePoint
@@ -82,12 +79,19 @@ void GOSoundFader::Process(
82
79
}
83
80
}
84
81
82
+ // Calculate the external volume
83
+ float newExternalVolume = m_VelocityVolume * externalVolume;
84
+
85
+ if (m_LastExternalVolumePoint < 0 .0f )
86
+ m_LastExternalVolumePoint = newExternalVolume;
87
+
85
88
float startExternalVolumePoint = m_LastExternalVolumePoint;
89
+
86
90
// Calculate new m_LastExternalVolumePoint
87
91
// the target volume will be changed from startExternalVolumePoint to
88
92
// m_LastExternalVolumePoint during the nFrames period
89
- if (externalVolume != startExternalVolumePoint)
90
- m_LastExternalVolumePoint += (externalVolume - startExternalVolumePoint)
93
+ if (newExternalVolume != startExternalVolumePoint)
94
+ m_LastExternalVolumePoint += (newExternalVolume - startExternalVolumePoint)
91
95
// Assume that external volume is to be reached in MAX_FRAME_SIZE frames
92
96
* std::max (nFrames, EXTERNAL_VOLUME_CHANGE_FRAMES)
93
97
/ EXTERNAL_VOLUME_CHANGE_FRAMES;
0 commit comments