aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/mixer_inc.c
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2014-03-23 06:57:00 -0700
committerChris Robinson <[email protected]>2014-03-23 06:57:00 -0700
commit81e049bd47cc2423dc6983c47d9f99e70c3135ac (patch)
tree74424462f69b97dffaebdc04dc263bf5eeb6183c /Alc/mixer_inc.c
parent0ce0a88fd67ddcf7cb5248ac08d36cfa1c0013eb (diff)
Step mixing gains per-sample for non-HRTF mixing
This fades the dry mixing gains using a logarithmic curve, which should produce a smoother transition than a linear one. It functions similarly to a linear fade except that step = (target - current) / numsteps; ... gain += step; becomes step = powf(target / current, 1.0f / numsteps); ... gain *= step; where 'target' and 'current' are clamped to a lower bound that is greater than 0 (which makes no sense on a logarithmic scale). Consequently, the non-HRTF direct mixers do not do not feed into the click removal and pending click buffers, as this per-sample fading would do an adequate job of stopping clicks and pops caused by extreme gain changes. These buffers should be removed shortly.
Diffstat (limited to 'Alc/mixer_inc.c')
-rw-r--r--Alc/mixer_inc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/Alc/mixer_inc.c b/Alc/mixer_inc.c
index 1cb1967d..d27cb979 100644
--- a/Alc/mixer_inc.c
+++ b/Alc/mixer_inc.c
@@ -43,8 +43,8 @@ void MixDirect_Hrtf(DirectParams *params, const ALfloat *restrict data, ALuint s
const ALuint *restrict TargetDelay = params->Mix.Hrtf.Params.Delay[srcchan];
ALfloat *restrict History = params->Mix.Hrtf.State.History[srcchan];
ALfloat (*restrict Values)[2] = params->Mix.Hrtf.State.Values[srcchan];
- ALuint Offset = params->Mix.Hrtf.State.Offset + OutPos;
ALint Counter = maxu(params->Counter, OutPos) - OutPos;
+ ALuint Offset = params->Offset + OutPos;
ALIGN(16) ALfloat Coeffs[HRIR_LENGTH][2];
ALuint Delay[2];
ALfloat left, right;