136 |
CrossfadeVolume = 1.0f; |
CrossfadeVolume = 1.0f; |
137 |
} |
} |
138 |
|
|
139 |
PanLeft = 1.0f - float(RTMath::Max(pDimRgn->Pan, 0)) / 63.0f; |
PanLeft = Engine::PanCurve[64 - pDimRgn->Pan]; |
140 |
PanRight = 1.0f - float(RTMath::Min(pDimRgn->Pan, 0)) / -64.0f; |
PanRight = Engine::PanCurve[64 + pDimRgn->Pan]; |
141 |
|
|
142 |
finalSynthesisParameters.dPos = pDimRgn->SampleStartOffset; // offset where we should start playback of sample (0 - 2000 sample points) |
finalSynthesisParameters.dPos = pDimRgn->SampleStartOffset; // offset where we should start playback of sample (0 - 2000 sample points) |
143 |
Pos = pDimRgn->SampleStartOffset; |
Pos = pDimRgn->SampleStartOffset; |
225 |
|
|
226 |
// setup initial volume in synthesis parameters |
// setup initial volume in synthesis parameters |
227 |
fFinalVolume = getVolume() * EG1.getLevel(); |
fFinalVolume = getVolume() * EG1.getLevel(); |
228 |
finalSynthesisParameters.fFinalVolumeLeft = fFinalVolume * PanLeft; |
finalSynthesisParameters.fFinalVolumeLeft = fFinalVolume * PanLeft * pEngineChannel->GlobalPanLeft; |
229 |
finalSynthesisParameters.fFinalVolumeRight = fFinalVolume * PanRight; |
finalSynthesisParameters.fFinalVolumeRight = fFinalVolume * PanRight * pEngineChannel->GlobalPanRight; |
230 |
|
|
231 |
|
|
232 |
// setup EG 2 (VCF Cutoff EG) |
// setup EG 2 (VCF Cutoff EG) |
763 |
uint killPos; |
uint killPos; |
764 |
if (itKillEvent) killPos = RTMath::Min(itKillEvent->FragmentPos(), pEngine->MaxFadeOutPos); |
if (itKillEvent) killPos = RTMath::Min(itKillEvent->FragmentPos(), pEngine->MaxFadeOutPos); |
765 |
|
|
766 |
|
float fFinalPanLeft = PanLeft * pEngineChannel->GlobalPanLeft; |
767 |
|
float fFinalPanRight = PanRight * pEngineChannel->GlobalPanRight; |
768 |
|
|
769 |
uint i = Skip; |
uint i = Skip; |
770 |
while (i < Samples) { |
while (i < Samples) { |
771 |
int iSubFragmentEnd = RTMath::Min(i + CONFIG_DEFAULT_SUBFRAGMENT_SIZE, Samples); |
int iSubFragmentEnd = RTMath::Min(i + CONFIG_DEFAULT_SUBFRAGMENT_SIZE, Samples); |
835 |
finalSynthesisParameters.uiToGo = iSubFragmentEnd - i; |
finalSynthesisParameters.uiToGo = iSubFragmentEnd - i; |
836 |
#ifdef CONFIG_INTERPOLATE_VOLUME |
#ifdef CONFIG_INTERPOLATE_VOLUME |
837 |
finalSynthesisParameters.fFinalVolumeDeltaLeft = |
finalSynthesisParameters.fFinalVolumeDeltaLeft = |
838 |
(fFinalVolume * PanLeft - finalSynthesisParameters.fFinalVolumeLeft) / finalSynthesisParameters.uiToGo; |
(fFinalVolume * fFinalPanLeft - finalSynthesisParameters.fFinalVolumeLeft) / finalSynthesisParameters.uiToGo; |
839 |
finalSynthesisParameters.fFinalVolumeDeltaRight = |
finalSynthesisParameters.fFinalVolumeDeltaRight = |
840 |
(fFinalVolume * PanRight - finalSynthesisParameters.fFinalVolumeRight) / finalSynthesisParameters.uiToGo; |
(fFinalVolume * fFinalPanRight - finalSynthesisParameters.fFinalVolumeRight) / finalSynthesisParameters.uiToGo; |
841 |
#else |
#else |
842 |
finalSynthesisParameters.fFinalVolumeLeft = fFinalVolume * PanLeft; |
finalSynthesisParameters.fFinalVolumeLeft = fFinalVolume * fFinalPanLeft; |
843 |
finalSynthesisParameters.fFinalVolumeRight = fFinalVolume * PanRight; |
finalSynthesisParameters.fFinalVolumeRight = fFinalVolume * fFinalPanRight; |
844 |
#endif |
#endif |
845 |
// render audio for one subfragment |
// render audio for one subfragment |
846 |
RunSynthesisFunction(SynthesisMode, &finalSynthesisParameters, &loop); |
RunSynthesisFunction(SynthesisMode, &finalSynthesisParameters, &loop); |