diff options
author | Chris Robinson <[email protected]> | 2014-03-23 06:57:00 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2014-03-23 06:57:00 -0700 |
commit | 81e049bd47cc2423dc6983c47d9f99e70c3135ac (patch) | |
tree | 74424462f69b97dffaebdc04dc263bf5eeb6183c /Alc/mixer.c | |
parent | 0ce0a88fd67ddcf7cb5248ac08d36cfa1c0013eb (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.c')
-rw-r--r-- | Alc/mixer.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Alc/mixer.c b/Alc/mixer.c index 8ce7d845..96acb3e8 100644 --- a/Alc/mixer.c +++ b/Alc/mixer.c @@ -411,7 +411,7 @@ ALvoid MixSource(ALactivesource *src, ALCdevice *Device, ALuint SamplesToDo) Source->BuffersPlayed = BuffersPlayed; Source->position = DataPosInt; Source->position_fraction = DataPosFrac; - src->Direct.Mix.Hrtf.State.Offset += OutPos; + src->Direct.Offset += OutPos; if(State == AL_PLAYING) src->Direct.Counter = maxu(src->Direct.Counter, OutPos) - OutPos; else |