Add a method to copy a filter's coefficients
This commit is contained in:
+4
-28
@@ -145,13 +145,7 @@ static ALvoid ALequalizerState_update(ALequalizerState *state, const ALCdevice *
|
||||
);
|
||||
/* Copy the filter coefficients for the other input channels. */
|
||||
for(i = 1;i < MAX_EFFECT_CHANNELS;i++)
|
||||
{
|
||||
state->filter[0][i].b0 = state->filter[0][0].b0;
|
||||
state->filter[0][i].b1 = state->filter[0][0].b1;
|
||||
state->filter[0][i].b2 = state->filter[0][0].b2;
|
||||
state->filter[0][i].a1 = state->filter[0][0].a1;
|
||||
state->filter[0][i].a2 = state->filter[0][0].a2;
|
||||
}
|
||||
ALfilterState_copyParams(&state->filter[0][i], &state->filter[0][0]);
|
||||
|
||||
gain = maxf(props->Equalizer.Mid1Gain, 0.0625f);
|
||||
freq_mult = props->Equalizer.Mid1Center/frequency;
|
||||
@@ -161,13 +155,7 @@ static ALvoid ALequalizerState_update(ALequalizerState *state, const ALCdevice *
|
||||
)
|
||||
);
|
||||
for(i = 1;i < MAX_EFFECT_CHANNELS;i++)
|
||||
{
|
||||
state->filter[1][i].b0 = state->filter[1][0].b0;
|
||||
state->filter[1][i].b1 = state->filter[1][0].b1;
|
||||
state->filter[1][i].b2 = state->filter[1][0].b2;
|
||||
state->filter[1][i].a1 = state->filter[1][0].a1;
|
||||
state->filter[1][i].a2 = state->filter[1][0].a2;
|
||||
}
|
||||
ALfilterState_copyParams(&state->filter[1][i], &state->filter[1][0]);
|
||||
|
||||
gain = maxf(props->Equalizer.Mid2Gain, 0.0625f);
|
||||
freq_mult = props->Equalizer.Mid2Center/frequency;
|
||||
@@ -177,13 +165,7 @@ static ALvoid ALequalizerState_update(ALequalizerState *state, const ALCdevice *
|
||||
)
|
||||
);
|
||||
for(i = 1;i < MAX_EFFECT_CHANNELS;i++)
|
||||
{
|
||||
state->filter[2][i].b0 = state->filter[2][0].b0;
|
||||
state->filter[2][i].b1 = state->filter[2][0].b1;
|
||||
state->filter[2][i].b2 = state->filter[2][0].b2;
|
||||
state->filter[2][i].a1 = state->filter[2][0].a1;
|
||||
state->filter[2][i].a2 = state->filter[2][0].a2;
|
||||
}
|
||||
ALfilterState_copyParams(&state->filter[2][i], &state->filter[2][0]);
|
||||
|
||||
gain = maxf(sqrtf(props->Equalizer.HighGain), 0.0625f);
|
||||
freq_mult = props->Equalizer.HighCutoff/frequency;
|
||||
@@ -191,13 +173,7 @@ static ALvoid ALequalizerState_update(ALequalizerState *state, const ALCdevice *
|
||||
gain, freq_mult, calc_rcpQ_from_slope(gain, 0.75f)
|
||||
);
|
||||
for(i = 1;i < MAX_EFFECT_CHANNELS;i++)
|
||||
{
|
||||
state->filter[3][i].b0 = state->filter[3][0].b0;
|
||||
state->filter[3][i].b1 = state->filter[3][0].b1;
|
||||
state->filter[3][i].b2 = state->filter[3][0].b2;
|
||||
state->filter[3][i].a1 = state->filter[3][0].a1;
|
||||
state->filter[3][i].a2 = state->filter[3][0].a2;
|
||||
}
|
||||
ALfilterState_copyParams(&state->filter[3][i], &state->filter[3][0]);
|
||||
}
|
||||
|
||||
static ALvoid ALequalizerState_process(ALequalizerState *state, ALsizei SamplesToDo, const ALfloat (*restrict SamplesIn)[BUFFERSIZE], ALfloat (*restrict SamplesOut)[BUFFERSIZE], ALsizei NumChannels)
|
||||
|
||||
+2
-11
@@ -1336,17 +1336,8 @@ static ALvoid ALreverbState_update(ALreverbState *State, const ALCdevice *Device
|
||||
gainlf, lfScale, calc_rcpQ_from_slope(gainlf, 1.0f));
|
||||
for(i = 1;i < 4;i++)
|
||||
{
|
||||
State->Filter[i].Lp.b0 = State->Filter[0].Lp.b0;
|
||||
State->Filter[i].Lp.b1 = State->Filter[0].Lp.b1;
|
||||
State->Filter[i].Lp.b2 = State->Filter[0].Lp.b2;
|
||||
State->Filter[i].Lp.a1 = State->Filter[0].Lp.a1;
|
||||
State->Filter[i].Lp.a2 = State->Filter[0].Lp.a2;
|
||||
|
||||
State->Filter[i].Hp.b0 = State->Filter[0].Hp.b0;
|
||||
State->Filter[i].Hp.b1 = State->Filter[0].Hp.b1;
|
||||
State->Filter[i].Hp.b2 = State->Filter[0].Hp.b2;
|
||||
State->Filter[i].Hp.a1 = State->Filter[0].Hp.a1;
|
||||
State->Filter[i].Hp.a2 = State->Filter[0].Hp.a2;
|
||||
ALfilterState_copyParams(&State->Filter[i].Lp, &State->Filter[0].Lp);
|
||||
ALfilterState_copyParams(&State->Filter[i].Hp, &State->Filter[0].Hp);
|
||||
}
|
||||
|
||||
/* Update the main effect delay and associated taps. */
|
||||
|
||||
@@ -77,6 +77,15 @@ inline void ALfilterState_clear(ALfilterState *filter)
|
||||
|
||||
void ALfilterState_setParams(ALfilterState *filter, ALfilterType type, ALfloat gain, ALfloat freq_mult, ALfloat rcpQ);
|
||||
|
||||
inline void ALfilterState_copyParams(ALfilterState *restrict dst, const ALfilterState *restrict src)
|
||||
{
|
||||
dst->b0 = src->b0;
|
||||
dst->b1 = src->b1;
|
||||
dst->b2 = src->b2;
|
||||
dst->a1 = src->a1;
|
||||
dst->a2 = src->a2;
|
||||
}
|
||||
|
||||
void ALfilterState_processC(ALfilterState *filter, ALfloat *restrict dst, const ALfloat *restrict src, ALsizei numsamples);
|
||||
|
||||
inline void ALfilterState_processPassthru(ALfilterState *filter, const ALfloat *restrict src, ALsizei numsamples)
|
||||
|
||||
@@ -36,6 +36,7 @@ extern inline void UnlockFiltersWrite(ALCdevice *device);
|
||||
extern inline struct ALfilter *LookupFilter(ALCdevice *device, ALuint id);
|
||||
extern inline struct ALfilter *RemoveFilter(ALCdevice *device, ALuint id);
|
||||
extern inline void ALfilterState_clear(ALfilterState *filter);
|
||||
extern inline void ALfilterState_copyParams(ALfilterState *restrict dst, const ALfilterState *restrict src);
|
||||
extern inline void ALfilterState_processPassthru(ALfilterState *filter, const ALfloat *restrict src, ALsizei numsamples);
|
||||
extern inline ALfloat calc_rcpQ_from_slope(ALfloat gain, ALfloat slope);
|
||||
extern inline ALfloat calc_rcpQ_from_bandwidth(ALfloat freq_mult, ALfloat bandwidth);
|
||||
|
||||
Reference in New Issue
Block a user