X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/c7f552fd8888da2f0d8cfb228fe0f28d3df3a12c..b4b6f2ea75b9f0f3ca918f5b84016610bf7a4d4f:/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/synth/echo.dsp diff --git a/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/synth/echo.dsp b/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/synth/echo.dsp new file mode 100644 index 0000000..26ba4d1 --- /dev/null +++ b/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/synth/echo.dsp @@ -0,0 +1,39 @@ + +/* Stereo delay with feedback. */ + +declare name "echo -- stereo delay effect"; +declare author "Albert Graef"; +declare version "1.0"; + +import("music.lib"); + +level = hslider("level", 1, 0, 1, 0.01); +dtime = hslider("delay", 0.040, 0, 5, 0.001); +feedback = hslider("feedback", 0, 0, 1, 0.001); +stereo = hslider("stereo", 1, 0, 1, 0.001); + +/* The stereo parameter controls the amount of stereo spread. For stereo=0 you + get a plain delay, without crosstalk between the channels. For stereo=1 you + get a pure ping-pong delay where the echos from the left first appear on + the right channel and vice versa. Note that you'll hear the stereo effects + only if the input signal already has some stereo spread to begin with; if + necessary, you can just pan the input signal to the left or the right to + achieve that. */ + +echo(dtime,level,feedback,stereo,x,y) + = f(x,y) // the echo loop + // mix + : (\(u,v).(x+level*(d(u)+c(v)), + y+level*(d(v)+c(u)))) + // compensate for gain level + : (/(1+level), /(1+level)) +with { + f = g ~ (*(feedback),*(feedback)); + g(u,v,x,y) + = h(x+d(u)+c(v)), h(y+d(v)+c(u)); + h = fdelay(1<<18, SR*dtime); + c(x) = x*stereo; + d(x) = x*(1-stereo); +}; + +process = vgroup("echo", echo(dtime,level,feedback,stereo));