1declare name "Stereo Verb"; 2declare category "Reverb"; 3declare version "0.01"; 4declare author "brummer"; 5declare license "BSD"; 6declare copyright "(c)brummer 2008"; 7 8import("stdfaust.lib"); 9 10import("guitarix.lib"); 11 12/*----------------------------------------------- 13 freeverb by "Grame" 14 -----------------------------------------------*/ 15 16// Filter Parameters 17 18combtuningL1 = 1116; 19combtuningL2 = 1188; 20combtuningL3 = 1277; 21combtuningL4 = 1356; 22combtuningL5 = 1422; 23combtuningL6 = 1491; 24combtuningL7 = 1557; 25combtuningL8 = 1617; 26 27allpasstuningL1 = 556; 28allpasstuningL2 = 441; 29allpasstuningL3 = 341; 30allpasstuningL4 = 225; 31 32roomsizeSlider = vslider("RoomSize[name:Room Size]", 0.5, 0, 1, 0.025)*0.28 + 0.7; 33dampslider = vslider("damp[name:Damp]",0.5, 0, 1, 0.025); 34combfeed = roomsizeSlider; 35//wetslider = 0.5 + vslider("wet_dry[name:wet/dry]", 0, -0.5, 0.5, 0.1); 36wet_dry = vslider("wet_dry[name:Dry/Wet]", 50, 0, 100, 1) : /(100); 37dry = 1 - wet_dry; 38 39// Reverb components 40 41monoReverb(fb1, fb2, damp, spread) 42 = _ <: comb(combtuningL1+spread, fb1, damp), 43 comb(combtuningL2+spread, fb1, damp), 44 comb(combtuningL3+spread, fb1, damp), 45 comb(combtuningL4+spread, fb1, damp), 46 comb(combtuningL5+spread, fb1, damp), 47 comb(combtuningL6+spread, fb1, damp), 48 comb(combtuningL7+spread, fb1, damp), 49 comb(combtuningL8+spread, fb1, damp) 50 +> 51 allpass (allpasstuningL1+spread, fb2) 52 : allpass (allpasstuningL2+spread, fb2) 53 : allpass (allpasstuningL3+spread, fb2) 54 : allpass (allpasstuningL4+spread, fb2) 55 ; 56 57//---------------------------------------------------------------- 58 59lfol = os.oscrs; // sine for left channel 60 61freq = hslider("LFO freq [name:LFO Freq][unit:Hz]", 0.2, 0, 5, 0.01); 62pingpong = checkbox("invert[enum:linear|pingpong]"); 63 64fxctrl(g,w,Fx) = _ <: (*(g) <: _ + Fx ), *(1-w) +> _; 65 66freeverb_r = (_<:*(dry),(*(wet_dry):fxctrl(0.015,wet_dry, monoReverb(combfeed, 0.5, dampslider, 23))* (1-(lfol(freq)*pingpong))):>_); 67freeverb_l = (_<:*(dry),(*(wet_dry):fxctrl(0.015,wet_dry, monoReverb(combfeed, 0.5, dampslider, 23))* (1-(-1*lfol(freq)*pingpong))):>_); 68process = freeverb_r, freeverb_l; 69