Rename interpretor to interpreter.
[Faustine.git] / interpreter / preprocessor / faust-0.9.47mr3 / examples / lowcut.dsp
diff --git a/interpreter/preprocessor/faust-0.9.47mr3/examples/lowcut.dsp b/interpreter/preprocessor/faust-0.9.47mr3/examples/lowcut.dsp
new file mode 100644 (file)
index 0000000..c758611
--- /dev/null
@@ -0,0 +1,42 @@
+declare name           "lowcut";
+declare version        "1.0";
+declare author                 "Grame";
+declare license        "BSD";
+declare copyright      "(c)GRAME 2006";
+
+//------------------------------------------------------------------
+//     DAFX, Digital Audio Effects (Wiley ed.)
+//     chapter 2       : filters
+//     section 2.3 : Equalizers
+//     page 53         : second order shelving filter design
+//------------------------------------------------------------------
+
+import("music.lib");
+
+
+
+//------------------- low-frequency shelving cut (table 2.3) --------------------
+
+V0(g)                  = pow(10,g/-20.0);
+K(fc)                  = tan(PI*fc/SR);
+square(x)              = x*x;
+denom(fc,g)            = 1 + sqrt(2*V0(g))*K(fc) + V0(g)*square(K(fc));
+
+lfcut(fc, g)   = TF2(  (1 + sqrt(2)*K(fc) + square(K(fc))) / denom(fc,g),
+                                                2 * (square(K(fc)) - 1) / denom(fc,g),
+                                               (1 - sqrt(2)*K(fc) + square(K(fc))) / denom(fc,g),
+                                                2 * (V0(g)*square(K(fc)) - 1) / denom(fc,g),
+                                               (1 - sqrt(2*V0(g))*K(fc) + V0(g)*square(K(fc))) / denom(fc,g)
+                                        );
+
+
+//------------------------------ User Interface -----------------------------------
+
+freq                   = hslider("freq [unit:Hz][style:knob]", 100, 20, 5000, 1);
+att                            = hslider("attenuation [unit:dB][style:knob]", 0, -96, 10, 0.1);
+
+
+//----------------------------------- Process -------------------------------------
+
+process                = vgroup("low-freq shelving cut", lfcut(freq,att));
+