diff options
author | Chris Robinson <[email protected]> | 2016-01-23 03:38:15 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2016-01-23 03:38:15 -0800 |
commit | 94816d007375295a8d767b06a483a060be292692 (patch) | |
tree | f66f29a492d2b4d93dc3b857f6003faa0f2cb44b /Alc/effects | |
parent | 352d9afd642e94651e69dbb28ade50eea88eae0d (diff) |
Reorder filterstate properties
Diffstat (limited to 'Alc/effects')
-rw-r--r-- | Alc/effects/autowah.c | 26 | ||||
-rw-r--r-- | Alc/effects/modulator.c | 11 |
2 files changed, 18 insertions, 19 deletions
diff --git a/Alc/effects/autowah.c b/Alc/effects/autowah.c index 6770f719..e97083e0 100644 --- a/Alc/effects/autowah.c +++ b/Alc/effects/autowah.c @@ -92,6 +92,7 @@ static ALvoid ALautowahState_process(ALautowahState *state, ALuint SamplesToDo, for(it = 0;it < td;it++) { ALfloat smp = SamplesIn[it+base]; + ALfloat a[3], b[3]; ALfloat alpha, w0; ALfloat amplitude; ALfloat cutoff; @@ -117,19 +118,18 @@ static ALvoid ALautowahState_process(ALautowahState *state, ALuint SamplesToDo, /* FIXME: Resonance controls the resonant peak, or Q. How? Not sure * that Q = resonance*0.1. */ alpha = sinf(w0) / (2.0f * state->Resonance*0.1f); - state->LowPass.b[0] = (1.0f - cosf(w0)) / 2.0f; - state->LowPass.b[1] = 1.0f - cosf(w0); - state->LowPass.b[2] = (1.0f - cosf(w0)) / 2.0f; - state->LowPass.a[0] = 1.0f + alpha; - state->LowPass.a[1] = -2.0f * cosf(w0); - state->LowPass.a[2] = 1.0f - alpha; - - state->LowPass.b[2] /= state->LowPass.a[0]; - state->LowPass.b[1] /= state->LowPass.a[0]; - state->LowPass.b[0] /= state->LowPass.a[0]; - state->LowPass.a[2] /= state->LowPass.a[0]; - state->LowPass.a[1] /= state->LowPass.a[0]; - state->LowPass.a[0] /= state->LowPass.a[0]; + b[0] = (1.0f - cosf(w0)) / 2.0f; + b[1] = 1.0f - cosf(w0); + b[2] = (1.0f - cosf(w0)) / 2.0f; + a[0] = 1.0f + alpha; + a[1] = -2.0f * cosf(w0); + a[2] = 1.0f - alpha; + + state->LowPass.a1 = a[1] / a[0]; + state->LowPass.a2 = a[2] / a[0]; + state->LowPass.b1 = b[1] / a[0]; + state->LowPass.b2 = b[2] / a[0]; + state->LowPass.input_gain = b[0] / a[0]; temps[it] = ALfilterState_processSingle(&state->LowPass, smp); } diff --git a/Alc/effects/modulator.c b/Alc/effects/modulator.c index dceb408e..32d25c76 100644 --- a/Alc/effects/modulator.c +++ b/Alc/effects/modulator.c @@ -142,12 +142,11 @@ static ALvoid ALmodulatorState_update(ALmodulatorState *state, ALCdevice *Device cw = cosf(F_TAU * Slot->EffectProps.Modulator.HighPassCutoff / Device->Frequency); a = (2.0f-cw) - sqrtf(powf(2.0f-cw, 2.0f) - 1.0f); - state->Filter.b[0] = a; - state->Filter.b[1] = -a; - state->Filter.b[2] = 0.0f; - state->Filter.a[0] = 1.0f; - state->Filter.a[1] = -a; - state->Filter.a[2] = 0.0f; + state->Filter.a1 = -a; + state->Filter.a2 = 0.0f; + state->Filter.b1 = -a; + state->Filter.b2 = 0.0f; + state->Filter.input_gain = a; ComputeAmbientGains(Device, Slot->Gain, state->Gain); } |