1declare name 		"lowboost";
2declare version 	"1.0";
3declare author 		"Grame";
4declare license 	"BSD";
5declare copyright 	"(c)GRAME 2006";
6
7//------------------------------------------------------------------
8//	DAFX, Digital Audio Effects (Wiley ed.)
9//	chapter 2 	: filters
10//	section 2.3 : Equalizers
11//	page 53 	: second order shelving filter design
12//------------------------------------------------------------------
13
14import("music.lib");
15
16
17//------------------- low-frequency shelving boost (table 2.3) --------------------
18
19V0(g)			= pow(10,g/20.0);
20K(fc) 			= tan(PI*fc/SR);
21square(x)		= x*x;
22denom(fc)		= 1 + sqrt(2)*K(fc) + square(K(fc));
23
24lfboost(fc, g)	= TF2(  (1 + sqrt(2*V0(g))*K(fc) + V0(g)*square(K(fc))) / denom(fc),
25						 2 * (V0(g)*square(K(fc)) - 1) / denom(fc),
26						(1 - sqrt(2*V0(g))*K(fc) + V0(g)*square(K(fc))) / denom(fc),
27						 2 * (square(K(fc)) - 1) / denom(fc),
28						(1 - sqrt(2)*K(fc) + square(K(fc))) / denom(fc)
29					 );
30
31
32//------------------------------ User Interface -----------------------------------
33
34freq 				= hslider("freq", 1000, 20, 20000, 0.1);
35gain				= hslider("gain (db)", 0, -20, 20, 0.1);
36
37
38//----------------------------------- Process -------------------------------------
39
40process 			= vgroup("low-freq shelving boost", lfboost(freq,gain));
41
42