Amps, cabinets & IRs

The amp head & cabinet

Three switchable amps, three multi-mic'd 4×12 cabinets, and a loader for your own impulse responses.

Amplifiers

Three amp models, switchable live with A (or / on the selector row) — the cabinet state is preserved when you switch. Pick one to see its voicing and per-knob behaviour.

Gain range
1×–40× into dual 12AX7
Tone stack
Passive FMV (Marshall values)
Rectifier & power
Deep tube sag (5 ms / 150 ms) + 100 Hz supply ripple (ghost notes) + dynamic speaker-load bloom
Gain stages
2 × 12AX7 atan soft-clip
GainPreamp gain 1×–40× into dual 12AX7.
BassPassive FMV tone stack — bass/mid/treble interact like the real network (Marshall values).
MidSets the depth of the stack's inherent scoop.
TrebleInteracts with mid/bass, lossy & peak-normalised.
PresenceDynamic NFB shelf at 3.5 kHz (+2.5 dB fixed offset, ±6 dB) — its authority shrinks as the power amp is driven, like a real feedback loop.
MasterPost-amp output level.
Gain range
1×–31× into three stages
Tone stack
Passive FMV (Fender values)
Rectifier & power
Silicon sag (0.5 ms / 80 ms) + 120 Hz supply ripple (ghost notes) + dynamic speaker-load bloom
Gain stages
3-stage: atan → atan → exponential
GainPreamp gain 1×–31× into three stages.
BassPassive FMV stack (Fender-type values: fuller lows, gentler scoop).
MidGentler scoop than the Marshall.
TrebleSame interacting network.
PresenceDynamic NFB shelf at 4 kHz (+2 dB fixed offset, ±6 dB) — authority shrinks as the power amp is driven; the stiff silicon supply keeps the collapse gentler than the JCM800's.
MasterPost-amp output level.
Gain range
1×–35× into FET+BJT stages
Tone stack
Active, independent bands + fixed +3 dB presence
Rectifier & power
No sag — stiff solid-state rails + static speaker resonance
Gain stages
FET (x/√(1+x²)) → BJT (tanh) → rail-clip
GainPreamp gain 1×–35× into FET+BJT stages.
BassActive tone stack — low shelf at 80 Hz.
MidPeak EQ at 500 Hz.
TrebleHigh shelf at 4.5 kHz.
PresenceHigh shelf at 5 kHz (+3 dB fixed offset, ±6 dB).
MasterPost-amp output level.

The tube amps (Marshall, Mesa) drive a passive FMV tone stack — a single RC network where the three controls interact and the mids inherently scoop, exactly like a real amp — followed by a power-amp ↔ speaker interaction model: the speaker's impedance resonance blooms the low end dynamically as the supply sags under hard playing. The Randall keeps an active (independent-band) stack and a small static speaker resonance, true to its stiff solid-state design.

The tube models also carry three deeper pieces of power- and preamp physics: supply-ripple ghost notes (rectified-mains ripple — 100 Hz UK, 120 Hz US — rides on the sagging rail and puts faint sidebands around every note when the amp works hard), grid-blocking distortion (a truly slammed input chokes the first stage near-instantly and recovers over the ~30 ms grid-leak RC — the classic crackle-then-recover, untouched by ordinary playing), and dynamic presence (the presence shelf lives in the power-amp feedback loop, so its range shrinks and drifts toward the open-loop lift as the amp is driven). See How it works for the physics.

External amp plugins (macOS · U · Z)

Beyond the three built-in amps, on macOS you can load a third-party Audio Unit amp sim — for example a Marshall plugin — and use it in place of the built-in amp. Press U to browse the Audio Units installed on your system and load one.

A loaded AU is an amp-position override: your pedal chain feeds into it. By default the AU is treated as a full amp + cab — it brings its own cabinet, so the built-in cab and any loaded IR are bypassed (the cabinet panel reads PLUGIN CAB and the mic knobs dim). The header shows AU: … in place of the amp model, the tone-stack knobs and the AMP selector dim, and Z A/Bs the AU against the built-in amp live — no reload.

If your AU is amp-only (no built-in cabinet), press C in the AU browser to keep rusty-amp's cabinet in the chain: the AU's output is then run through the selected built-in cab (or your loaded IR), and the mic knobs come back to life. The AU's reported latency is shown in the modal, and while an AU is loaded the built-in amp path is delay-aligned to it so the Z A/B stays in time.

See Plugins → Audio Unit amps for the full walkthrough: installation, the browser and parameter-editor keys, cab pairing, latency, and limitations. AU hosting is macOS-only and compiles to nothing on Linux/Windows.

Cabinet mics

Three controls model a multi-mic'd 4×12 — the close mic's position, a blend from a dynamic to a ribbon, and a room mic for depth. The blend is a weighted sum of the three mics' impulse responses, so it costs no extra per-sample CPU.

Mic
Close-mic position · 0–10
Edge · darkOn-axis · bright
Default 4.0 · just off-axis
0 = edge (off-axis, dark, −6 dB at 5 kHz) · 5 = centre neutral · 10 = on-axis (bright, +6 dB at 5 kHz).
Blend
Close-mic capsule · 0–10
SM57 dynamicR121 ribbon
Default 0 · pure SM57
0 = SM57 dynamic (bright, present) · 10 = R121 ribbon (darker, fuller low-mids, silky top).
Room
Room-mic amount · 0–10
Dry close micFull room
Default 0 · dry close mic
Amount of a distant room mic mixed in — adds air and three-dimensional depth (0 = dry close mic only).

Cabinets

Three multi-mic'd 4×12s, switchable live with C. Pick one to see its character and voiced frequency bands.

Scooped, aggressive, and forward-projecting — the modern high-gain reference.

+6.5 dB @ 120 Hz · depth hump +4 dB @ 220 Hz · body plateau −5 dB @ 1.25 kHz · mid pocket +4 dB @ 2.5 kHz & +5.5 dB @ 4.5 kHz · presence held to 5 kHz

Warm and mid-forward with a smooth top end — the classic rock voice.

+6 dB @ 115 Hz · depth hump +4.3 dB @ 210 Hz · body plateau +3.5 dB @ 2.5 kHz · crunch held to 5 kHz steep rolloff above 7 kHz

Thick and chunky from the closed-back birch enclosure — a wall of low-mids.

+6 dB @ 115 Hz · chest thump +3.8 dB @ 230 Hz · low-mid “wall” +3.5 dB @ 2.9 kHz · presence held to 5 kHz

Each cabinet is rendered by impulse-response convolution rather than a plain EQ. The built-in IRs are synthesized in-code (nothing to ship or download): the model's voiced EQ provides the magnitude skeleton — including the low resonant hump near 120 Hz and the broad 120–600 Hz body plateau that give a real close-mic'd 4×12 its depth — then early reflections, a dense 6–21 ms reflection tail, speaker modal resonances with a short, controlled cone "thump" ring, and two seeded scatter clusters (fine 0.5–2.3 kHz reflection ripple plus jagged cone-breakup texture) add the time-domain structure real captures show. Each IR runs ~93 ms (~4500 taps at 48 kHz). The close-mic textures are shared between left and right — real close captures are effectively mono, and heavy decorrelation reads as phasey rather than wide — with only the scatter seeds differing per side, plus a genuinely decorrelated stereo room-mic pair for width over a solid centre.

Before the mics, the drive signal passes the nonlinear speaker stage — excursion-driven motor droop, cone breakup, thermal power compression and Doppler "growl", with its operating point calibrated to the levels the amps actually deliver so a cranked amp genuinely pushes back. It also picks up neighbour-cone interference derived from real 4×12 geometry: the close mic hears the three other cones arriving ~0.6–0.9 ms late, lowpassed above ~2 kHz and 13–23 dB down. Each neighbour is an extended source (a 12" cone, not a point), so its arrival is smeared across a short sub-tap cluster — the comb ripples the body by a couple of dB like a real echo scan instead of carving a notch through it. One octave up, dust-cap & grille echoes add the presence/air sheen a close capture picks up off the speaker's own front geometry: a ~0.13 ms round-trip reflection off the metal grille (highpassed — the lows diffract past the perforations, so only the treble is combed) and a ~45 µs ripple off the proud central dust cap. Both are highpassed and power-normalised so they comb only the 2–8 kHz band and never touch the body. After the mics, a genuinely tiny mic/transformer saturation squeezes only the hottest peaks.

Cycle cabinets with C at any time. The Mic knob applies a ±6 dB high shelf at 5 kHz per channel after convolution, modelling on-axis vs off-axis placement. For the partitioned-FFT convolution engine, see How it works.

External cabinet IRs (I · X)

Beyond the three built-in cabs, rusty-amp can load your own impulse-response .wav file as the cabinet. A loaded IR replaces the multi-mic blend with a single captured response (the mono drive still passes through the same nonlinear speaker model — excursion-driven motor droop, cone breakup, thermal power compression and Doppler FM "growl" — so it stays alive and dynamic). Because the file is already a finished, miked capture, the Mic / Blend / Room knobs are inert while an external IR is active.

One IR is a complete cabinet. A speaker + cab + mic is a linear time-invariant system, and a single impulse response fully captures its linear response — exactly what a .wav IR is, and what every IR loader (Two Notes, Helix, NAM cab blocks, OwnHammer / God's Cab) uses: one IR = one cab, one mic, one position. rusty-amp adds the speaker's nonlinear behaviour back on top, so a loaded IR isn't static playback. A multi-mic blend is just a sum of IRs — pre-mix it into one file in your DAW, or load one mic at a time and A/B with X.

Where it scans

Press I to open the IR browser, which scans these locations for .wav files:

Order Location
1 The directory in the RUSTY_AMP_IR_DIR environment variable, if set
2 ./irs/ next to where you launched the app
3 ~/.config/rusty-amp/irs/

Each location is searched up to ~4 folders deep, so a small pack with a couple of subfolders is found — but deeply-nested commercial packs sit past that limit, so the right move is to curate a flat folder rather than point the app at a raw download.

IR browser keys

Key Action
/ Navigate the IR list
Enter Load the selected IR (or Built-in cabs (no IR) to clear it)
X A/B between the loaded IR and the built-in cab
Esc / I Close the browser

The loaded IR's name appears in the header in place of the cabinet label (IR: …) while it is active. Outside the browser, X toggles the same A/B at any time. Loading and clearing take effect live — the audio stream is never interrupted (the IR is decoded and resampled off the audio thread, then swapped in on a lock-free handoff).

On load the IR is rate-matched to your interface (windowed-sinc resampler), trimmed to ~8192 taps (~170 ms @ 48 kHz) with a raised-cosine tail fade, DC-removed, and energy-normalised so swapping IRs doesn't jump the level. Mono files feed both channels; stereo files keep their L/R.

No IRs are bundled. Load only files you are licensed to use — the app never ships or redistributes third-party captures.

Packaging IR files

Drop .wav IRs into one of the scanned folders above — the simplest is ~/.config/rusty-amp/irs/ (create it if missing). The filename (without .wav) becomes the label in the browser, so name them readably (e.g. Marshall_GB_SM57_cap.wav).

Accepted format

Practically any guitar IR works as-is.

Property Supported Notes
Channels Mono or stereo Mono feeds both sides; stereo keeps L/R; extra channels are dropped
Sample rate Any (44.1 / 48 / 96 kHz…) Resampled to your interface rate on load
Bit depth 16 / 24 / 32-bit int or 32-bit float
Length Any (~20 ms to several hundred ms) Trimmed to ~8192 taps (~170 ms @ 48 kHz) with a tail fade
Curate — don't dump a whole pack. Big libraries ship hundreds or thousands of files in deeply-nested folders (by sample rate → mic → processing). The browser scans only ~4 levels deep and a 2,000-entry list is unusable, so copy a handful of favourites into a flat irs/ folder.

Example: God's Cab

God's Cab is a large, free (donationware) IR pack laid out as Gods_Cab_1.4/<rate>/<mic>/<NO-TS|TS>/<name>.wav. Pick the sample-rate folder matching your interface, prefer the NO-TS captures (no Tube Screamer baked in, so rusty-amp's own TS-808 isn't stacked on top), and copy a few mics into irs/:

SRC=~/.config/rusty-amp/irs/Gods_Cab_1.4/48   # use 44.1 / 48 / 96 to taste
DST=~/.config/rusty-amp/irs
mkdir -p "$DST"

# A balanced cone capture per mic, renamed to clean browser labels.
cp "$SRC/SM57/NO-TS/57_1_inch_cone_near_pres_3.wav"     "$DST/GodsCab_SM57_cone.wav"
cp "$SRC/MD421/NO-TS/MD421_1_inch_cone_near_pres_3.wav" "$DST/GodsCab_MD421_cone.wav"
cp "$SRC/U87/NO-TS/U87_grill_cone_near_pres_3.wav"      "$DST/GodsCab_U87_cone.wav"

The capture spot moves brightest → darkest as capconeedge; 1_inch/2_inch/grill is mic distance; pres_1..5 are alternate takes. Press I in the app and the copied files appear immediately.

← Back
Pedals & effects