Flangers...
-
So Im making an multi-effect - and I'd like to include a flanger - but I cant seem to build or find anything thats fits the bill - the faust one isnt great - and the one In built is wonky - has anyone got any pointers?
-
@Lindon perhaps I should have a go at porting the airwindows one...
-
@Lindon RNBO one was decent
-
@Lindon Couldn't you just create one in Scriptnode or Faust with a modulated delay?
*Edit here is one I wrote a long time ago when I was learning Faust
declare name "Flanger"; declare version "1.0.0"; declare author "HISENBERG"; declare license "IDGAF-DWYW"; // I don't care do what you want with it import("stdfaust.lib"); // Mono/Stereo flanger = _,_ : flanger_stereo : _,_; flanger_stereo(l,r) = flanger_mono(l), flanger_mono(r); flanger_mono = effect with { // UI controls maxdelay = 0.02; rate = hslider("rate[unit:Hz]", 0.5, 0.01, 10.0, 0.01); depth = hslider("depth", 0.7, 0.0, 1.0, 0.01); feedback = hslider("feedback", 0.5, 0.0, 0.99, 0.01); mix = hslider("mix", 0.5, 0.0, 1.0, 0.01); lfo = os.oscrs(rate) * 0.5 + 0.5; delayTime = 0.0001 + lfo * depth * maxdelay; // Delay line with feedback delayedSignal(x) = fb ~ de.fdelay(maxdlsamps, delaysamples) with { SR = ma.SR; // Sample rate maxdlsamps = int(maxdelay * SR); delaysamples = delayTime * SR; fb(y) = x + y * feedback; // Feedback loop }; // Mix dry and wet signals effect(x) = dry * x + wet * delayedSignal(x) with { wet = mix; dry = 1 - mix; }; }; process = flanger;
-
Search for papers and GitHub c++ repos
-
*Edit here is one I wrote a long time ago when I was learning Faust
Do you know how to edit this to allow for an modulation input rather than use the faust lfo?
-
@DanH You mean more or less like this correct?
You could accomplish it with a simple delay and modulating the delay time. @griffinboy is correct though, reading papers and checking some repos is the way to go here. My example is more or less just a theoretic flanger but doesn't match the performance of what you may find from people who have done actual research on the topic.
But you can try this:
import("stdfaust.lib"); // UI maxdelay = 0.5; delaytime = hslider("delay [ms]", 5.0, 0.0, 20.0, 0.01); //Add si.smooth(0.99) for interploation here if you want feedback = hslider("feedback", 0.5, 0, 0.99, 0.01); mix = hslider("mix", 0.5, 0, 1.00, 0.01); // State variables SR = ma.SR; maxdlsamps = int(maxdelay * SR); delaysamps = int(delaytime / 1000 * SR); // Dleay delayedSignal(x) = fb ~ de.fdelay(maxdlsamps, delaysamps) with { fb(y) = x + y * feedback; }; modDelay(x) = (1-mix)*x + mix*delayedSignal(x); // Stereo process = modDelay, modDelay;
-
@HISEnberg Yup, that's what I meant regarding the input, many thanks! Will do some research
-
@Lindon really depends on what sound and modulation possibilities you want to go for. Whipping up comething custom in faust should be straight forward. Habe a look at the boss or moog clusterlis schematics, they are usually among the most recommended flangers. Probably airwindows is another good source to start and easy to turn into a node. I had a thread how to do it now long ago you should find all you need in there