As an experiment I tried to make a ladder filter in turbofilter, Msoundfactory.
I understand that it is a series connection of lp6 filters with a feedback loop from the last into the first. I wrote:
fb1(fb)[lp6(f);lp6(f);lp6(f);lp6(f))
it does work but I cannot tell if it is similar to Moog ladder filter.
Does this make sense?
Joop
Moog ladder filter with Turbofilter/msoundfactory
-
martin-meldaproduction martin-meldaproduction https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=583716
- KVRist
- 273 posts since 6 Oct, 2022
Yes, you have the right idea. The classic Moog ladder filter is indeed a series of four 1-pole (6dB/oct) low-pass filters with a global feedback loop. Your code is a good start, but to make it sound and behave truly like an analog ladder filter (and to fix a small syntax typo), we need to adjust a few details.
Here is the optimized version you should use: fb1(-q)[ 4s[lp6(f)] ; sat(c) ]
You had a small typo with bracket there and also, instead of writing lp6(f) four times, you can use MTurboFilter's elegant serial shortcut 4s[...].
Negative Feedback (-q): In a ladder filter, the 4 low-pass stages shift the phase by 180 degrees at the cutoff frequency. To create the classic resonant peak, the feedback needs to be inverted (negative) to complete a 360-degree phase shift. Using -q ties it to the resonance knob and flips the phase correctly. If you used positive feedback, it would just cause low-end mud.
Saturation (sat(c)): If you push the resonance on a purely digital linear filter, the volume will instantly blow up to infinity. Real analog hardware has natural transistor saturation that tames the resonance, keeps it stable, and gives it that warm "Moog" character. Adding sat(c) (tied to the Character knob) inside the feedback loop prevents digital clipping and adds that authentic analog flavor.
Feel free to experiment and have fun!
Here is the optimized version you should use: fb1(-q)[ 4s[lp6(f)] ; sat(c) ]
You had a small typo with bracket there and also, instead of writing lp6(f) four times, you can use MTurboFilter's elegant serial shortcut 4s[...].
Negative Feedback (-q): In a ladder filter, the 4 low-pass stages shift the phase by 180 degrees at the cutoff frequency. To create the classic resonant peak, the feedback needs to be inverted (negative) to complete a 360-degree phase shift. Using -q ties it to the resonance knob and flips the phase correctly. If you used positive feedback, it would just cause low-end mud.
Saturation (sat(c)): If you push the resonance on a purely digital linear filter, the volume will instantly blow up to infinity. Real analog hardware has natural transistor saturation that tames the resonance, keeps it stable, and gives it that warm "Moog" character. Adding sat(c) (tied to the Character knob) inside the feedback loop prevents digital clipping and adds that authentic analog flavor.
Feel free to experiment and have fun!
Martin
MeldaProduction
MeldaProduction
-
- KVRer
- Topic Starter
- 22 posts since 18 Sep, 2022
Thanks Martin and Jason,
I actually discovered yesterday that there are those 9 filters in TurboFilter, nice! For me it would be useful to have some scripts to simulate some well known classic filters, such as Moog, Juno, OB-xd etc. It is quite a job to figure that out yourself.
Now for the Moog, it actually works nicely, I only notice that the resonance with this script is really limited, where other filters really peak. It does react on the feedback up to a certain point, above that is remains constant, even muliplying with a big factor. Any internal limitation?
I'm trying to understand the syntax of the programming tab. Is there a possibility to define variables for some internal calculations?
I actually discovered yesterday that there are those 9 filters in TurboFilter, nice! For me it would be useful to have some scripts to simulate some well known classic filters, such as Moog, Juno, OB-xd etc. It is quite a job to figure that out yourself.
Now for the Moog, it actually works nicely, I only notice that the resonance with this script is really limited, where other filters really peak. It does react on the feedback up to a certain point, above that is remains constant, even muliplying with a big factor. Any internal limitation?
I'm trying to understand the syntax of the programming tab. Is there a possibility to define variables for some internal calculations?
