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/flanger.dsp diff --git a/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/synth/flanger.dsp b/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/synth/flanger.dsp new file mode 100644 index 0000000..b0416ae --- /dev/null +++ b/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/synth/flanger.dsp @@ -0,0 +1,55 @@ + +/* Stereo flanger with feedback. */ + +/* This is basically just a chorus with a different kind of LFO (triangle wave + instead of sine), smaller delay times (typically 1-10 ms instead of 20-30 + ms) and (much) larger sweep depth, which makes this unit sound more like a + time-varying filter (in fact, that's just what it is), in contrast to the + gentle pitch modulation produced by a chorus. + + There's also an additional feedback loop which can be used to produce + metallic sounds, and a stereo control which allows you to change the + stereo spread (a.k.a. phase difference between left and right LFO). + + Note that you can actually make this unit sound pretty much like a chorus + by cranking up the delay time while setting the feedback to zero and + reducing level and depth (the latter by at least an order of magnitude). */ + +declare name "flanger -- stereo flanger with feedback"; +declare author "Albert Graef"; +declare version "1.0"; + +import("music.lib"); + +level = hslider("level", 1, 0, 1, 0.01); +freq = hslider("freq", 2, 0, 10, 0.01); +dtime = hslider("delay", 0.002, 0, 0.04, 0.001); +depth = hslider("depth", 0.5, 0, 1, 0.001); +feedback = hslider("feedback", 0.1, 0, 1, 0.001); +stereo = hslider("stereo", 1, 0, 1, 0.001); + +tblosc(n,f,freq,mod) = (1-d)*rdtable(n,waveform,i&(n-1)) + + d*rdtable(n,waveform,(i+1)&(n-1)) +with { + waveform = time*(2.0*PI)/n : f; + phase = freq/SR : (+ : decimal) ~ _; + modphase = decimal(phase+mod/(2*PI))*n; + i = int(floor(modphase)); + d = decimal(modphase); +}; + +triangle(t) = ((0<=t) & (t<=PI))*((2*t-PI)/PI) + + ((PI