Moog ladder filter with Turbofilter/msoundfactory

Official support for: meldaproduction.com
Post Reply New Topic
RELATED
PRODUCTS

Post

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

Post

Hey, that's a good start 😎. Take a look at the FAT filter we built. You will need to update to the latest version in MPluginManager.
Jason @ Melda Production

Post

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!

Post

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?

Post

Made an improved version of my "Moog":

fb1(-q)[ 4s[lp6(f;;;;0.25)] ; sat(c) ]

Now it has a nice resonance that can be tuned by q :)

Post

JoopB wrote: Fri Jun 26, 2026 2:59 pm Made an improved version of my "Moog":

fb1(-q)[ 4s[lp6(f;;;;0.25)] ; sat(c) ]

Now it has a nice resonance that can be tuned by q :)
Thanks! Why not save it as "Joop Moog" or something, and share any presets you make online (in TurboFilter) if you keep exploring - there are not too many shared presets in Turbofilter. :pray:
Win 11 | Latest Reaper | MCompleteBundle

Post

I am far from an expert in filters and am modest on my presets, but I'm happy to share the preset :ud:. By the way I took some inspiration from the FAT filter as suggested above (which, by the way, is a really good preset and, if I'm not wrong, also has a MOOG type of basic design,
3lp6b(limit(f,20,20000);;;0.1)
lp6b(0.741*(limit(f,20,20000))^1.1;;;0.1)
).
I made another little step in my Moog explorations by comparing my preset with the Surge XT legacy ladder filter. For my ears and with MAnalyze I compared the Moog to the Surge legacy ladder. With an internal resonance of 0.135 and q=0, i.e. no resonance in Surge, they are really close. Line is fb1(-q) [4s[lp6(f;;;;0.125)];sat(c) ];, comparison at Surge f=2 kHz, MSF 3.49 octaves. A q value of 1 corresponds to about 50% resonance on Surge XT. I could not make it an exact match over a larger frequency range; if 200 Hz matches, 800 Hz is a bit off, however not too bad after all.
This now only concerns the linear regime, low intensity, no distortion or saturation, so to make it a complete match is not a simple job.
I do not think I can share the Turbofilter on line, I could do that with a simple preset with e.g. a saw. You may copy is from below.

Code: Select all

$eNpdj89Kw0AQh6fixaNvEOjB9qBptO0liG5r6h9ICSZooPSwSSbp4nY37m5t46H4Ar6DryR49ikEr2JbsDi3+T74zfzA78WxH81UIgeMG1RA6uDUSH296SHOI5pENFlBwgupmJlMQeeJ0zh8bFqjth7xstvIXdd1W0fOcac5djU1jbRpjV0gIXJMDWYe1dXmgob4LymgAnmgUKPxqaDF7wf9mVIozJpeX4C+kbJc5olj+VIWFi+7FhMGlaDcyhGzhKYPp1Y4UwVaHAuaVmDHRFBePaNyToDcM5HJeVSVCPqKCgGELJjuSy4V6NZmgFwqlv2HcTiV0kwEau2JJyDe8C649UIvAmfHjgOF+aoUEwUQX2YIeijVlHKIA8mEAbKA7OXz4GP3-euMDDgtdA+cV3vLvn3vdUh7-3zL2jEJWkA8QROOGTg1217+AKX5ioI=
Moog filter is relatively simple as there are extensive descriptions online, it would be interesting to do something similar on other popular filter designs.

Post Reply

Return to “MeldaProduction”