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