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.
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)
Flanger important note : the flanging effect can be made more “vintage sounding” considering that the interaction between dry and delay+LFO in the analog old days at such a small delay time was so called “through zero”. see https://www.mrblackpedals.com/blogs/straight-jive/6622058-positive-negative-and-through-zero-flanging-probably-more-than-you-ever-wanted-to-know-about-flanging
You can obtain this in the digital world by delaying the dry signal (remember to declare the plugin latency) and have the wet signal “go around” the dry, e.g.:
output = input(delayed 3ms) + modDelayOfInput(delayed at LFO peaks = 1ms and 5 ms)
Hope it helps. Please if someone has more info or reference please expand on this would love to know more myself. Cheers!