audioJS

@audio/filter-moog-ladder

Status calibrated

npm1.2.0licenseMIT

Moog 4-pole transistor ladder filter (-24 dB/oct lowpass with resonance; highpass, bandpass, 2-pole modes)

Overview

Install
Updated
Family
filter, 16 packages under it
Tags
shape
import moogLadder from '@audio/filter-moog-ladder'

Robert Moog's 4-pole transistor ladder, 1965 — the most imitated filter in electronic music.

Circuit: 4 cascaded one-pole transistor ladder sections, global feedback from output to input
Implementation: Zero-delay feedback (ZDF) via trapezoidal integration — Zavalishin, The Art of VA Filter Design (2012), Ch. 6
Response: −24 dB/oct-24\,\text{dB/oct} lowpass; resonance peak at fcf_c; self-oscillation (sine wave) at resonance=1, at fcf_c
Modes: type lowpass, highpass or bandpass, poles 4 or 2 — the ladder's taps mixed by binomial weights, (1−L)n(1-L)^n highpass, Ln(1−L)nL^n(1-L)^n bandpass (Zavalishin §5.5; JUCE's LadderFilter modes, Pedalboard's)
Nonlinearity: tanh⁡\tanh saturation at input (transistor ladder characteristic)

let params = { fc: 800, resonance: 0.7, fs: 44100 }
moogLadder(buffer, params)

// Self-oscillation — runs indefinitely from a single impulse
let silent = new Float64Array(4096); silent[0] = 0.01
moogLadder(silent, { fc: 1000, resonance: 1, fs: 44100 })

// Highpass, -12 dB/oct
moogLadder(buffer, { fc: 300, resonance: 0.4, fs: 44100, type: 'highpass', poles: 2 })

Patent: Moog (1965) US3475623
vs Diode ladder: Moog saturates only at input; diode saturates at each stage — different character at high resonance

Param Default
fc 1000 cutoff frequency, Hz
resonance 0 0–1; feedback k = 4·resonance; self-oscillates exactly at 1
fs 44100 sample rate, Hz
drive 1 input gain into the tanh saturation; 0 mutes the signal
type 'lowpass' 'lowpass', 'highpass', 'bandpass'
poles 4 4: -24 dB/oct (bandpass ±12); 2: -12 dB/oct (bandpass ±6)

Pass the same params object on every call to persist the 4 stage states across blocks.

Use when: synth-filter warmth, resonance, and true self-oscillation at resonance=1 — the reference analog-modeled lowpass.


Part of @audio/filter — the filter family umbrella. This README is generated from the umbrella docs.

MIT © audiojs