--- /dev/null
+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));
+