| filtertype | = | Butterworth |
| passtype | = | Bandpass |
| ripple | = | |
| order | = | 4 |
| samplerate | = | 44100 |
| corner1 | = | 110 |
| corner2 | = | 2900 |
| adzero | = | |
| logmin | = | -48 |
Command line: /www/usr/fisher/helpers/mkfilter -Bu -Bp -o 4 -a 2.4943310658e-03 6.5759637188e-02
raw alpha1 = 0.0024943311
raw alpha2 = 0.0657596372
warped alpha1 = 0.0024943821
warped alpha2 = 0.0667114169
gain at dc : mag = 0.000000000e+00
gain at centre: mag = 1.024607115e+03 phase = -0.3936427349 pi
gain at hf : mag = 0.000000000e+00
S-plane zeros:
0.0000000000 + j 0.0000000000 4 times
S-plane poles:
-0.1487375645 + j 0.3875486640
-0.3575061784 + j 0.1612963284
-0.3575061784 + j -0.1612963284
-0.1487375645 + j -0.3875486640
-0.0056704282 + j -0.0147747940
-0.0152676916 + j -0.0068883358
-0.0152676916 + j 0.0068883358
-0.0056704282 + j 0.0147747940
Z-plane zeros:
1.0000000000 + j 0.0000000000 4 times
-1.0000000000 + j 0.0000000000 4 times
Z-plane poles:
0.8029093188 + j 0.3251747023
0.6888028022 + j 0.1155448473
0.6888028022 + j -0.1155448473
0.8029093188 + j -0.3251747023
0.9942373850 + j -0.0146905723
0.9848247874 + j -0.0067842797
0.9848247874 + j 0.0067842797
0.9942373850 + j 0.0146905723
Recurrence relation:
y[n] = ( 1 * x[n- 8])
+ ( 0 * x[n- 7])
+ ( -4 * x[n- 6])
+ ( 0 * x[n- 5])
+ ( 6 * x[n- 4])
+ ( 0 * x[n- 3])
+ ( -4 * x[n- 2])
+ ( 0 * x[n- 1])
+ ( 1 * x[n- 0])
+ ( -0.3510340249 * y[n- 8])
+ ( 3.1613912027 * y[n- 7])
+ (-12.5026849109 * y[n- 6])
+ ( 28.3597862198 * y[n- 5])
+ (-40.3532139600 * y[n- 4])
+ ( 36.8786058005 * y[n- 3])
+ (-21.1343989150 * y[n- 2])
+ ( 6.9415485867 * y[n- 1])
/* Digital filter designed by mkfilter/mkshape/gencode A.J. Fisher
Command line: /www/usr/fisher/helpers/mkfilter -Bu -Bp -o 4 -a 2.4943310658e-03 6.5759637188e-02 -l */
#define NZEROS 8
#define NPOLES 8
#define GAIN 1.024607115e+03
static float xv[NZEROS+1], yv[NPOLES+1];
static void filterloop()
{ for (;;)
{ xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; xv[4] = xv[5]; xv[5] = xv[6]; xv[6] = xv[7]; xv[7] = xv[8];
xv[8] = next input value / GAIN;
yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; yv[4] = yv[5]; yv[5] = yv[6]; yv[6] = yv[7]; yv[7] = yv[8];
yv[8] = (xv[0] + xv[8]) - 4 * (xv[2] + xv[6]) + 6 * xv[4]
+ ( -0.3510340249 * yv[0]) + ( 3.1613912027 * yv[1])
+ (-12.5026849110 * yv[2]) + ( 28.3597862200 * yv[3])
+ (-40.3532139600 * yv[4]) + ( 36.8786058000 * yv[5])
+ (-21.1343989150 * yv[6]) + ( 6.9415485867 * yv[7]);
next output value = yv[8];
}
}
For an expanded view, enter frequency limits (as a fraction of the sampling rate) here:
For a view on a different scale, enter upper time limit (integer number of samples) here: