X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/1059e1cc0c2ecfa237406949aa26155b6a5b9154..66f23d4fabf89ad09adbd4dfc15ac6b5b2b7da83:/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/synth/flanger.dsp diff --git a/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/synth/flanger.dsp b/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2pd/examples/synth/flanger.dsp new file mode 100644 index 0000000..b0416ae --- /dev/null +++ b/interpreter/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