Moog-Style TPT Ladder Filter — User Guide

A four-pole resonant low-pass filter built from a linearized topology-preserving-transform ladder model, with static settings or continuous cutoff/resonance sweeps and optional post-filter saturation.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 0.5 (2026) Application: Praat scripting language
Contents:

What this does

Moog-Style TPT Ladder Filter applies a resonant four-pole low-pass response to the selected Sound. The core filter is a digital ladder model built from four trapezoidal one-pole stages with feedback. In static mode, the script evaluates the equivalent fourth-order IIR transfer directly. In sweep presets, the same filter coefficients change continuously sample by sample while the recursive filter state is preserved.

The result is a steep low-pass filter whose cutoff and resonance can be used either as fixed tone-shaping controls or as moving parameters. After the ladder stage, the script can add output trim, one of two smooth saturation curves, and an optional 20 Hz DC blocker.

Model scope: the ladder core is a linearized virtual-analog model. Its resonance comes from the ladder feedback term, while the optional Soft and Tanh stages add nonlinear saturation after the filter. This separation is important when interpreting the sound and the controls.

Quick start

  1. Select exactly one Sound object in Praat.
  2. Run Moog_Ladder_Filter.praat.
  3. Choose a preset. For manual static filtering, leave Preset = Custom.
  4. In Custom mode, set Cutoff frequency and Resonance.
  5. Choose the output saturation: Off, Soft, or Tanh.
  6. Use Output trim to set the gain entering the saturation stage.
  7. Leave DC blocker on unless you specifically want to preserve very-low-frequency/DC content.
  8. Click OK. The result appears as original_moog_PresetName.
Starting point: try Warm Pad for a moderate low-pass, Resonant Peak for a stronger cutoff emphasis, and Cutoff Sweep Up to hear the continuously changing filter state.

Signal flow

Input Sound ↓ 4-pole linearized TPT ladder low-pass ↓ Output trim / saturation drive ↓ Optional saturation • Off: linear • Soft: x / (1 + |x|) • Tanh: tanh(x) ↓ Optional 20 Hz DC blocker ↓ Output Sound

The ladder core

For a cutoff fc and sampling rate fs, the script first prewarps the cutoff with g = tan(π·fc/fs). From this it builds the coefficients of four trapezoidal one-pole low-pass stages. Resonance is mapped to the feedback coefficient as k = 4 · resonance^1.5.

Rather than numerically iterating a delay-free feedback loop, the static processor uses the equivalent closed-form fourth-order IIR denominator. This preserves the recursive ladder behavior while avoiding a separate iterative solver.

Cutoff range: the script clamps cutoff values to a safe range from 5 Hz up to approximately 90% of Nyquist (0.45 × sample rate, also kept at least 5 Hz below Nyquist).

Static & automation modes

Static mode

Custom and the eight fixed presets use one cutoff and one resonance value for the whole Sound. The exact linear transfer used for processing is also the response drawn in the static visualization panel.

Continuous automation

The three sweep presets activate sample-continuous automation:

Important control behavior: in v0.5, automation is activated by the three sweep presets. Custom uses the static Cutoff frequency and Resonance fields; the Start/End automation fields do not by themselves switch Custom into automation mode.

Presets

Static presets

PresetCutoffResonanceWhat changes
Bass Filter300 Hz0.30Strong low-pass emphasis on the low-frequency region.
Warm Pad800 Hz0.50Darker response with moderate resonance.
Vocal Resonance1500 Hz0.65Pronounced resonance around 1.5 kHz.
Bright Lowpass2500 Hz0.55Retains more upper-mid energy while still applying a four-pole rolloff.
Resonant Peak1200 Hz0.75Strong cutoff-region emphasis.
Telephone-Style Lowpass2800 Hz0.35A brighter low-pass setting; it remains a low-pass, not a telephone band-pass.
Sub Bass150 Hz0.20Very low cutoff with restrained resonance.
Acid Bass500 Hz0.75Low cutoff with a strong resonant peak.

Automation presets

PresetCutoffResonance
Cutoff Sweep Up200 → 3000 Hz0.50 → 0.50
Cutoff Sweep Down3000 → 200 Hz0.50 → 0.50
Resonance Sweep800 → 800 Hz0.10 → 0.85
Presets override only their filter/automation values. DC blocker, Limiter type, Output trim, visualization, and playback remain under the user's control.

Parameters

Filter controls

ControlDefaultBehavior
Cutoff frequency1000 HzStatic pole cutoff used by Custom and fixed presets after preset override.
Resonance0.70Clamped to 0–0.99, then mapped to feedback k = 4·resonance^1.5.
Start / End cutoff200 / 3000 HzUsed when an automation preset is active.
Start / End resonance0.20 / 0.80Used when an automation preset is active.

Output stage

ControlDefaultBehavior
DC blockerOnApplies a one-pole 20 Hz high-pass after the saturation stage.
Limiter typeSoftOff leaves the ladder output linear; Soft uses x/(1+|x|); Tanh uses tanh(x).
Output trim dB0 dBClamped to −60…+24 dB and applied before Soft/Tanh. With saturation enabled, positive trim therefore increases saturation drive as well as level.
Draw visualizationOnCreates the AudioTools diagnostic page.
Play resultOnPlays the final Sound after processing.
Output level: v0.5 has no final safety ceiling or peak normalization. Linear mode can exceed ±1.0 and is reported with a warning in the Info window. Soft and Tanh bound the signal at their own stage, but the subsequent DC blocker can still create a small overshoot in extreme settings. Check the reported output peak before exporting when using high resonance or large positive trim.

Input & output behavior

PropertyBehavior
SelectionExactly one Sound object is required.
ChannelsAll channels are preserved and filtered independently with the same cutoff/resonance trajectory. Stereo is not downmixed for processing.
Sample ratePreserved.
DurationPreserved.
Start time (xmin)Preserved. Automation is indexed by sample number, so a non-zero start time does not shift the sweep trajectory.
RandomnessNone. The processor is deterministic for a given source and parameter set.
Output nameoriginal_moog_PresetName.

Visualization

When Draw visualization is enabled, v0.5 creates a suite-style diagnostic page with:

Multichannel Sounds are converted to mono only for the waveform/spectrum display. The audio processor itself preserves and processes every channel separately.

Further Reading