filter-chain: biquad fequency is half the samplerate

See #1699
This commit is contained in:
Wim Taymans 2021-10-11 16:07:13 +02:00
parent 85d5c8cd6c
commit 38981a4c8c
2 changed files with 4 additions and 3 deletions

View file

@ -343,8 +343,7 @@ static void biquad_allpass(struct biquad *bq, double frequency, double Q)
void biquad_set(struct biquad *bq, enum biquad_type type, double freq, double Q,
double gain)
{
/* Default is an identity filter. Also clear history values. */
set_coefficient(bq, 1, 0, 0, 1, 0, 0);
/* Clear history values. */
bq->x1 = 0;
bq->x2 = 0;
bq->y1 = 0;
@ -376,6 +375,8 @@ void biquad_set(struct biquad *bq, enum biquad_type type, double freq, double Q,
biquad_allpass(bq, freq, Q);
break;
case BQ_NONE:
/* Default is an identity filter. */
set_coefficient(bq, 1, 0, 0, 1, 0, 0);
break;
}
}

View file

@ -281,7 +281,7 @@ static void bq_run(struct builtin *impl, unsigned long samples, int type)
impl->freq = freq;
impl->Q = Q;
impl->gain = gain;
biquad_set(bq, type, freq / impl->rate, Q, gain);
biquad_set(bq, type, freq * 2 / impl->rate, Q, gain);
}
x1 = bq->x1;
x2 = bq->x2;