declare name bandfilter declare version declare author Grame declare l

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
declare name "bandfilter";
declare version "1.0";
declare author "Grame";
declare license "BSD";
declare copyright "(c) GRAME 2006";
import("math.lib");
import("music.lib");
//---------------------second order filter--------------------------
// filter(Q,F,G)
// Q : quality factor [1..100]
// F : frequency (Hz)
// G : gain [0..1]
//------------------------------------------------------------------
filter(Q,F,G) = TF2( (1 + K/Q + K*K) / D,
2 * (K*K - 1) / D,
(1 - K/Q + K*K) / D,
2 * (K*K - 1) / D,
(1 - V*K/Q + K*K) / D
)
with {
V = db2linear(G);
K = tan(PI*F/SR);
D = 1 + V*K/Q + K*K;
};
//--------------- Band Filter with user interface ------------------
// bandfilter(F)
// F : default frequency (Hz)
//
//------------------------------------------------------------------
bandfilter(F) = filter( nentry("Q factor",50,0.1,100,0.1),
nentry("freq (Hz)", F, 20, 20000, 1),
0 - vslider("gain (dB)", 0, -50, 50, 0.1)
);
//------------------------- Process --------------------------------
process = vgroup("Bandfilter", bandfilter(1000));