New directory tree, with preprocessor/ inside interpretor/.
[Faustine.git] / interpretor / preprocessor / faust-0.9.47mr3 / tools / faust2pd / examples / seqdemo / freeverb.dsp
diff --git a/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/seqdemo/freeverb.dsp b/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/seqdemo/freeverb.dsp
new file mode 100644 (file)
index 0000000..4c93595
--- /dev/null
@@ -0,0 +1,110 @@
+//======================================================
+//
+//                                             Freeverb
+//               Faster version using fixed delays (20% gain)
+//
+//======================================================
+
+declare name "freeverb -- a Schroeder reverb";
+declare author "Yann Orlarey";
+declare version "1.0";
+
+// Constant Parameters
+//--------------------
+
+fixedgain      = 0.015;
+scalewet       = 3.0;
+scaledry       = 2.0;
+scaledamp      = 0.4;
+scaleroom      = 0.28;
+offsetroom     = 0.7;
+initialroom    = 0.5;
+initialdamp    = 0.5;
+initialwet     = 1.0/scalewet;
+initialdry     = 0;
+initialwidth= 1.0;
+initialmode    = 0.0;
+freezemode     = 0.5;
+stereospread= 23;
+allpassfeed    = 0.5;
+
+
+// Filter Parametres
+//------------------
+
+combtuningL1   = 1116;
+combtuningL2   = 1188;
+combtuningL3   = 1277;
+combtuningL4   = 1356;
+combtuningL5   = 1422;
+combtuningL6   = 1491;
+combtuningL7   = 1557;
+combtuningL8   = 1617;
+
+allpasstuningL1        = 556;
+allpasstuningL2        = 441;
+allpasstuningL3        = 341;
+allpasstuningL4        = 225;
+
+
+// Control Sliders
+//--------------------
+// Damp : filtrage des aigus des echos (surtout actif pour des grandes valeurs de RoomSize)
+// RoomSize : taille de la piece
+// Dry : signal original
+// Wet : signal avec reverb\8eration
+
+dampSlider             = hslider("damp",0.5, 0, 1, 0.025)*scaledamp;
+roomsizeSlider         = hslider("roomsize", 0.5, 0, 1, 0.025)*scaleroom + offsetroom;
+wetSlider              = hslider("wet", 0.3333, 0, 1, 0.025);
+drySlider              = hslider("dry", 0, 0, 1, 0.025);
+combfeed               = roomsizeSlider;
+
+
+
+
+
+// Comb and Allpass filters
+//-------------------------
+
+allpass(dt,fb) = (_,_ <: (*(fb),_:+:@(dt)), -) ~ _ : (!,_);
+
+comb(dt, fb, damp) = (+:@(dt)) ~ (*(1-damp) : (+ ~ *(damp)) : *(fb));
+
+
+// Reverb components
+//------------------
+
+monoReverb(fb1, fb2, damp, spread)  
+       = _ <:  comb(combtuningL1+spread, fb1, damp),
+                       comb(combtuningL2+spread, fb1, damp),
+                       comb(combtuningL3+spread, fb1, damp),
+                       comb(combtuningL4+spread, fb1, damp),
+                       comb(combtuningL5+spread, fb1, damp),
+                       comb(combtuningL6+spread, fb1, damp),
+                       comb(combtuningL7+spread, fb1, damp),
+                       comb(combtuningL8+spread, fb1, damp) 
+               +>      
+                       allpass (allpasstuningL1+spread, fb2)
+               :       allpass (allpasstuningL2+spread, fb2)
+               :       allpass (allpasstuningL3+spread, fb2)
+               :       allpass (allpasstuningL4+spread, fb2) 
+               ;
+
+stereoReverb(fb1, fb2, damp, spread)
+       = + <:  monoReverb(fb1, fb2, damp, 0), monoReverb(fb1, fb2, damp, spread);
+                       
+       
+// fxctrl : add an input gain and a wet-dry control to a stereo FX
+//----------------------------------------------------------------
+
+fxctrl(g,w,Fx) =  _,_ <: (*(g),*(g) : Fx : *(w),*(w)), *(1-w), *(1-w) +> _,_;
+
+
+       
+// Freeverb 
+//---------
+
+freeverb = vgroup("freeverb", fxctrl(fixedgain, wetSlider, stereoReverb(combfeed, allpassfeed, dampSlider, stereospread)));
+
+process = freeverb;