I managed to get all my FX to my liking, but the chorus still sounds flat.
What I am doing
I have a delay line with four different read locations. There is a basedelay of 10ms and then the four “voices” are read as sin, cos, -sin, -cos scalable from 0ms to 15ms by user.
So for example voice a is read at position: 10 + 15 * mod_depth * (0.5*sin(mod_freq*t) + 0.5)
The voices are then added up, while the dry signal is ommitted.
Am I doing this wrong? I expect the sound to be this warm choir-type sound, while it still rather sounds like a phaser.
Hi,
I am not an expert, but did you try to shift delayed signals in panorama?
I played a bit with chorus and I also find out that it is not so easy to get rich sound.
From what I’ve read the phaser always has dry signal (50% dry, 50% allpass). See this graphic from Wikipedia
Or is there other ways still to do the phaser?
The definition of the chorus is somewhat more ambiguous, sometimes its only two delay lines, sometimes more and sometimes dry signal as well.
It is also possible in my algorithm to add dry signal via DryWet control, but that doesn’t help
This one actually improved the sound quite a bit, thanks mate
But yeah overall Chorus, Phaser and Flanger are very closely related (with the Flanger technically even being a Phaser)
I have the feeling that the lines between Chorus, Flanger, and Phaser are very much blurred. All effects use cancellation and beats of delayed and mixed signals. For me, flangers use only small delays, creating comb filters resulting in more metallic sounds, whereas chorus has longer (still small) delays to create the effect of several instruments are playing with small time and pitch differences, but basically using more or less the same algorithm. Phasers use Allpass filters, which are modulates, creating cancellations for specific (tuned) frequencies. Flanger and chorus will lead to cancellations at frequencies with regular spacing (comb filters) → phasor more arbitrary.
My last guitar tremolo pedal I bought splits the signal into two bands and applies the tremolo out-of-phase to both bands. I can imagine that splitting the input signal for the chorus into several bands and delaying them differently (e.g. different mod depths) might result in interesting sounds.
Haha I remember myself in the very same situation when I first heard the full word.
I still think it sounds quite weird, like when your mom used to call you by your full name when you had forgotten to take the chicken out of the freezer
Hi there!. Did a bit of research on mod FX last year - this is what I came up with:
All of them (flanger/chorus/doubler/echo) are just modulated fractional delays.
What varies is the LFO amount and the time range.
VERY roughly and subjectively (also no overlapping is totally arbitrary):
flanger : delay from 0.01 to 5 ms
chorus : delay from 5 to 25 ms
doubler : delay from 25 to 75 ms
echo : delay from 75 to 1000 ms (and beyond)
LFO frequency may vary from 0 to ~20Hz. Depth according to taste and “Engine”. YOu might have more than one LFO per channel or use the same LFO out of phase on L and R
“Engine” means a particular combination of dry signal, wet signal, and eventually filtered dry or wet (bass boosted or cut) panned left or right. the delayed signal can be added or subtracted to the dry signal. this + or - on the wet signal makes a dramatic difference in the resulting sound
If you look around in kvr forum you’ll find some examples of “Engines”, here’s some links I used for my implementations. No idea how much they are historically correct but they were a good base for experimentation.
Dimension
Juno
Triton
See will pirkle book “Designing Audio FX in C++” there’s a chapter on chorus with a description of the Triton chorus (it’s on the old edition a new one just came out dunno if it’s still there)
You have to inform the host how much latency (in samples) your plugin introduces, pretty sure this is supported by VST2 as well as all the other formats.
Yes, latency is about you delaying the “dry signal”, i.e. shifting the “realtime” moment forward
for DSP purposes.
In short, the host gathers all the latencies “declared” by the plugins and aligns the tracks accordingly so no unwanted artifacts are heard and all the controls you set on the DAW make sense (e.g. if you set a delay in a bass track to be 1 beat long it’s actually in sync also with the drum track even tough on the drum track you might have tons of compressors introducing latency)
Nice! I took some inspiration from the TAL and Hornet algorithms you postet and the result now is quite pleasing. I couldn’t believe my ears when two delay lines sounded more chorus-y than four.
My approach was: more delay = more fun
However it only made the sound completely washed out and unrecognizable.
I’m still having some trouble with beating when the two LFOs cross but from this point on it can be solved by being creative I think.
With respect, 15 ms is a tiny bit short for 4-voice chorus, whatever other people are saying. You can understand that from basic principles, thus: tThe lowest frequency we can hear is said to be 20Hz, well, not including subsonic that are felt rather than heard, that’s still rather low for adults, although children have better hearing, it’s more like 25-30Hz for most people. So that’s say, 50ms wavelength. That means anything more than 20-25ms wavelength is actually perceived as sound, that is, half a cycle of it, although we can’t discern it very well if there are many similar frequencies. So from basic principles, if you want a chorus of 15ms to sound good, so without going into all the math, as a rule of thumb four delays is really not enough, eight or more is what you want really, because we can’t distinguish more than 7-8 sine waves simulataneously, due to the distance between the hairs in the ear canal specifically. With only 4 delays, you need more like a 30~40msec delay to create the separation, otherwise its too much like a phasor. Hope that makes sense, I tried to say it simply.
I think the mistake here is to use a static delay and pretend it is a Chorus. Those are different things, and IMHO it matters more, how much you modulate the delay time…