Revert to hard pan law for L/R split.

This commit is contained in:
Robin E. R. Davies
2026-01-17 13:37:40 -05:00
parent 1afbcc30f0
commit 7cc2c084ca
+16 -17
View File
@@ -327,27 +327,26 @@ void SplitEffect::mixTo(float value)
this->targetBlendLBottom = this->targetBlendRBottom = blend; this->targetBlendLBottom = this->targetBlendRBottom = blend;
mixToTarget(); mixToTarget();
} }
static inline void applyPan(float pan, float*left, float*right) { static inline void applyHardPan(float pan, float*left, float*right) {
float panClipped = pan;
if (panClipped < -1) panClipped = -1;
if (panClipped > 1) panClipped = 1;
panClipped = (panClipped + 1) * 0.5f; // 0..1
// linear panning law. // linear panning law.
*left = 1.0f - panClipped;
*right = panClipped;
// float panClipped = pan; // float panClipped = pan;
// if (panClipped < -1) panClipped = -1; // if (panClipped < -1) panClipped = -1;
// if (panClipped > 1) panClipped = 1; // if (panClipped > 1) panClipped = 1;
// if (pan <= 0) { // panClipped = (panClipped + 1) * 0.5f; // 0..1
// *left = 1.0f;
// *right = 1.0f + panClipped;
// } else {
// *left = 1.0f - panClipped; // *left = 1.0f - panClipped;
// *right = 1.0f; // *right = panClipped;
// }
// return panClipped;
// Hard pan law
float panClipped = pan;
if (panClipped < -1) panClipped = -1;
if (panClipped > 1) panClipped = 1;
if (pan <= 0) {
*left = 1.0f;
*right = 1.0f + panClipped;
} else {
*left = 1.0f - panClipped;
*right = 1.0f;
}
} }
void SplitEffect::mixTo(float panL, float volL, float panR, float volR) void SplitEffect::mixTo(float panL, float volL, float panR, float volR)
@@ -363,9 +362,9 @@ void SplitEffect::mixTo(float panL, float volL, float panR, float volR)
else else
{ {
float panTopL, panTopR; float panTopL, panTopR;
applyPan(panL,&panTopL, &panTopR); applyHardPan(panL,&panTopL, &panTopR);
float panBottomL, panBottomR; float panBottomL, panBottomR;
applyPan(panR,&panBottomL, &panBottomR); applyHardPan(panR,&panBottomL, &panBottomR);
this->targetBlendLTop = panTopL * aTop; this->targetBlendLTop = panTopL * aTop;
this->targetBlendRTop = panTopR*aTop; this->targetBlendRTop = panTopR*aTop;