From c34d78f41718f859709700b06bdfdf6640890275 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 28 Apr 2012 08:24:09 -0700 Subject: [PATCH] Use ComputeAngleGains for the echo and dedicated effects --- Alc/alcDedicated.c | 10 +--------- Alc/alcEcho.c | 24 ++++-------------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/Alc/alcDedicated.c b/Alc/alcDedicated.c index 9f331e8e..81c7a3a4 100644 --- a/Alc/alcDedicated.c +++ b/Alc/alcDedicated.c @@ -53,9 +53,7 @@ static ALboolean DedicatedDeviceUpdate(ALeffectState *effect, ALCdevice *Device) static ALvoid DedicatedUpdate(ALeffectState *effect, ALCdevice *device, const ALeffectslot *Slot) { ALdedicatedState *state = (ALdedicatedState*)effect; - const ALfloat *ChannelGain; ALfloat Gain; - ALint pos; ALsizei s; Gain = Slot->Gain * Slot->effect.Dedicated.Gain; @@ -63,13 +61,7 @@ static ALvoid DedicatedUpdate(ALeffectState *effect, ALCdevice *device, const AL state->gains[s] = 0.0f; if(Slot->effect.type == AL_EFFECT_DEDICATED_DIALOGUE) - { - pos = aluCart2LUTpos(0.0f, 1.0f); - ChannelGain = device->PanningLUT[pos]; - - for(s = 0;s < MAXCHANNELS;s++) - state->gains[s] = ChannelGain[s] * Gain; - } + ComputeAngleGains(device, aluAtan2(0.0f, 1.0f), 0.0f, Gain, state->gains); else if(Slot->effect.type == AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT) state->gains[LFE] = Gain; } diff --git a/Alc/alcEcho.c b/Alc/alcEcho.c index 2448397c..711b763c 100644 --- a/Alc/alcEcho.c +++ b/Alc/alcEcho.c @@ -94,10 +94,9 @@ static ALvoid EchoUpdate(ALeffectState *effect, ALCdevice *Device, const ALeffec { ALechoState *state = (ALechoState*)effect; ALuint frequency = Device->Frequency; - ALfloat dirGain, ambientGain; - const ALfloat *ChannelGain; ALfloat lrpan, cw, g, gain; - ALuint i, pos; + ALfloat dirGain; + ALuint i; state->Tap[0].delay = fastf2u(Slot->effect.Echo.Delay * frequency) + 1; state->Tap[1].delay = fastf2u(Slot->effect.Echo.LRDelay * frequency); @@ -118,28 +117,13 @@ static ALvoid EchoUpdate(ALeffectState *effect, ALCdevice *Device, const ALeffec state->Gain[1][i] = 0.0f; } - ambientGain = aluSqrt(1.0f/Device->NumChan); dirGain = aluFabs(lrpan); /* First tap panning */ - pos = aluCart2LUTpos(((lrpan>0.0f)?-1.0f:1.0f), 0.0f); - ChannelGain = Device->PanningLUT[pos]; - - for(i = 0;i < Device->NumChan;i++) - { - enum Channel chan = Device->Speaker2Chan[i]; - state->Gain[0][chan] = lerp(ambientGain, ChannelGain[chan], dirGain) * gain; - } + ComputeAngleGains(Device, aluAtan2(-lrpan, 0.0f), (1.0f-dirGain)*F_PI, gain, state->Gain[0]); /* Second tap panning */ - pos = aluCart2LUTpos(((lrpan>0.0f)?1.0f:-1.0f), 0.0f); - ChannelGain = Device->PanningLUT[pos]; - - for(i = 0;i < Device->NumChan;i++) - { - enum Channel chan = Device->Speaker2Chan[i]; - state->Gain[1][chan] = lerp(ambientGain, ChannelGain[chan], dirGain) * gain; - } + ComputeAngleGains(Device, aluAtan2(+lrpan, 0.0f), (1.0f-dirGain)*F_PI, gain, state->Gain[1]); } static ALvoid EchoProcess(ALeffectState *effect, ALuint SamplesToDo, const ALfloat *SamplesIn, ALfloat (*SamplesOut)[MAXCHANNELS]) -- 2.11.4.GIT