Elexius · Saturator · VST3 & AU

bis hierher und nicht weiter.

A plimsoll line is the load mark painted on a ship's hull — a disc cut by a horizontal line that says how deep this hull may go and no deeper. It is not a metaphor we reached for. It is what a saturator is.

The Plimsoll plugin window: a transfer curve plot above the circuit selector, the DRIVE and SAG faders, and three dials for input, output and mix.
Plimsoll v52 · the window as it opens Transistor · Drive 42 · Sag 50

zwei fader. und ein bild davon, was sie tun.

Drive pushes whichever circuit is selected. Sag decides how readily the supply rail gives way under load. That is the whole sound design. Everything else on the panel exists to tell you what those two are doing.

Drive means one thing regardless of which circuit is in. The transistor and the tube were matched by measured THD rather than by feel, so the same fader position is the same amount of work in both — 1.17 % against 0.95 % at 40, 17.4 % against 12.8 % at 80. The character stays completely different. Only the quantity is matched.

Total harmonic distortion, 1 kHz at −9 dBFS
Drive 0204050 60708090100
Transistor 0.18 %0.44 %1.17 %2.01 % 3.61 %7.21 %17.4 %31.9 %37.6 %
Tube 0.20 %0.42 %0.95 %1.48 % 2.52 %5.25 %12.8 %21.3 %28.0 %

die kurve gibt zu, was sie ist.

The plot answers the one question the two faders raise and nothing else on the panel can: what shape is this thing actually putting on the signal. Three traces — the bright curve at the middle of the supply's travel, and the two rail bounds it moves between as the supply gives way. The dashed lines are where the stage stops following its input.

Drawn to true scale it cannot be read. The drive range is 200 : 1, and at Drive 0 the transistor sits 15.5 dB below where it clips. Any scale that puts a 45° line at the bottom of the faders throws the saturation level clean off the plot; any scale that keeps the saturation level on the plot draws the bottom of the faders as a flat line. Both were built. Neither is a usable picture.

So the drawn curve is a soft clipper on a chosen scale, with its character taken from the measurements: the ceiling moves by the ratio the real saturation level moves by, the asymmetry is the measured one, and the transformer is entirely real and unscaled, hysteresis and all. And the plot says so, in the band below the negative clipping line.

A display-scale picture that does not admit to being one is just a wrong measurement.
The Plimsoll window with the tube circuit selected: the transfer curve leans asymmetrically, and the faders read GRID −0.6 dB and B+ 166 V.
Tube · Drive 76 · Sag 68 Grid −0.6 dB · B+ 166 V

What each fader currently means to the circuit that is in sits next to the fader's own number. On the transistor that reads ×2.73 and RAIL 0.90; on the tube it is grid drive in dB and the B+ in volts, swept from the Ampex's real 220 V down to 140 and drooping further under sustained load.

drei schaltungen. keine davon erfunden.

Every circuit here is lifted from a working plugin in the workshop rather than re-derived for this one. Transistor and tube are alternatives — one at a time. The transformer is independent, switches on and off on its own, and can be placed at any of four points in the chain.

Transistor

from ClassAPreamp

Single-ended Class A soft clip. Even-harmonic-rich, gentle knee, with a hard rail ceiling stacked on top past Drive 3. Its supply is small and stiff, so Sag moves it on a 5 ms attack and a 50 ms release — you hear the rail move with the programme.

Tube

from AmpexTubeStage

Two 12AX7 stages out of an Ampex 351 record amp, solved by warm-started Newton against the real load line with the Dempwolf & Zoelzer grid-current equations. Rk 2.7 k, Ra 100 k, Rg 1 M, unbypassed cathode.

Its B+ sits behind a choke and a large reservoir cap, so Sag reaches it over seconds rather than milliseconds — 3 s and 8 s.

Transformer

from TransformerSaturation

A Jiles–Atherton hysteresis core. The output is the magnetisation M, so it genuinely runs out of core rather than soft-kneeing forever.

It stacks onto whichever engine is selected rather than replacing it, which is why it is a switch on the panel and not a third entry in the list. A switch is a different shape from a choice.

der kern sieht den fluss.

A transformer has no memoryless transfer curve, so a single trace would be a lie. The core responds to flux, which is the integral of the voltage: the same amplitude at 40 Hz means twice the flux it means at 80, and at 10 kHz almost none at all. The honest picture is a family — one loop per octave, each normalised to its own fundamental, so a straight diagonal means nothing but linear and every departure from it is really the core.

Eleven transfer loops from 20 Hz to 20 kHz. The low loops open wide off the diagonal; the high ones collapse onto it.
Transformer locus, one loop per octave Output against its own fundamental

The emphasis curve

zeichnen, was der schaltung wehtun soll.

Six bands, and they run twice: once at +g in front of the drive circuit, once at −g behind it. At 100 % the second chain is the exact algebraic inverse of the first, so the curve changes nothing about the tone. It only changes which part of the spectrum is driving the circuit between them into its nonlinearity.

Measured, that is not a claim about intent: a ±9 dB curve at 100 % de-emphasis leaves the response flat to ±0.02 dB from 20 Hz to 16 kHz, while moving one band at 5 kHz by ±18 dB shifts the third harmonic a 1 kHz tone generates by 10.5 dB with the same circuit behind it. Draw where it should hurt. Get the harmonics, not the EQ.

The Plimsoll window with the curve section slid out: six numbered band nodes over a spectrum analyser trace, with the Emphasis and De-Emphasis masters above and the transient, buzz, stereo and dynamics faders below.
The curve section, slid out Analyser live · Transient −100 % · Buzz 100 %

It starts flat

The six bands ship with the field's own frequencies, Qs and shapes but zero gain, because a plugin should not colour anything until you draw on it. A flat curve nulls at −400 dB against the curve switched out entirely.

Every band automates

Frequency, gain, Q, routing and the two per-band trims are all real host parameters. Dragging writes a proper gesture, automation moves the nodes on screen, and A/B and presets carry the curve with no extra machinery.

Both chains at base rate

They are linear and exact inverses, so the oversampler's own complementary filters sitting between them cost nothing — and designing the biquads at base rate is what makes the drawn curve and the running filter the same thing.

The transient shaper

dieselbe idee, auf der zeitachse.

Instead of a curve deciding which frequencies drive the stage harder, a detector decides which part of a hit does. The stage is wrapped in a bracket — multiply going in, divide coming out — so with a linear circuit inside it the two cancel exactly and there is nothing to null out. With a nonlinear one, the emphasised part comes back with harmonics the division cannot undo. That difference is the whole effect.

Level independence is free, because a ratio of two envelopes does not care how loud the input was: measured at 0.000 dB of divergence over a 36 dB range. The fader moves the balance between attack and tail monotonically across 15.0 dB.

Attack dirtier than tail, in dB · synthetic hit at drive 65
Fader−100−500+50+100
Balance8.713.716.621.923.7
Lookahead is not optional
Without it the detector is 1–3 ms late and files the actual attack under "tail". 1.5 ms is used, which is 72 samples at 48 kHz and is where the reported latency comes from.
Nothing with memory inside
A filter does not commute with a moving gain. One 20 Hz coupling highpass between the shaper and the de-emphasis took a −158 dB null to −38 dB, so the bracket is tight around the drive stage and nowhere wider.
Divide by what was delivered
A nominal +12 dB going in does not come back as +12 dB out of a stage that is compressing, and dividing by the nominal gain flattens the attack instead of sharpening it — −6.01 dB against bypass. A second, un-emphasised copy of the stage runs alongside and the bracket divides by what that one actually gave: −0.49 dB.
The transient fader at +85 %, its track drawing a needle for the attack and a low hump for the tail, with the buzz fader's track fraying below it.
Transient +85 % · Buzz 38 % Each track draws its own parameter

was drin ist.

The last two are parameters with no processing behind them yet. They are real, so a value set today survives into the build that implements them — and the panel prints NO DSP YET on the control rather than leaving that to be discovered.

gemessen, nicht behauptet.

Every number on this page comes out of the workshop's own measurement suite at 48 kHz, re-run against the shipping defaults. Where a figure went stale because a default moved, it was re-measured rather than left alone.

Bandwidth and aliasing · 48 kHz
Configuration−3 dB low−3 dB highAlias
Bypass21.8 Hz19.81 kHz−128 dB
Drive 0, all off21.8 Hz19.81 kHz−128 dB
Transformer only21.8 Hz19.82 kHz−108 dB
Transistor 42 / 5021.8 Hz19.81 kHz−122 dB
Tube 42 / 5027.3 Hz7.68 kHz−127 dB
Default — transformer + transistor21.8 Hz19.82 kHz−108 dB
Transistor 100 / 5021.8 Hz7.85 kHz−46 dB
Tube 100 / 5022.0 Hz9.74 kHz−42 dB

Every usable setting on the transistor path is bit-for-bit the same passband as bypass. The tube is not, on purpose — and 27.3 Hz to 7.68 kHz is the figure the parent circuit's own comment predicted before any of this was measured here. The two narrow rows at the bottom are at maximum drive, where the measurement sweep is being crushed: that is the nonlinearity, not a filter.

Bypass null
−152 dB
Noise floor
−182 dBFS
Channel balance
0.00 dB
THD spread over 44.1 / 48 / 96 kHz
0.02 %
Robustness · self-test
19 / 19 · 15 / 15
Mono against stereo
Bit-identical
Clicks on switching
Every switch and fader sweep produces a peak sample-to-sample step within 1.00–1.04× of the test tone's own natural step. No clicks on circuit change, transformer toggle, bypass, or a full fader sweep, on either circuit.

was es kostet.

Single instance, 48 kHz stereo, 512-sample blocks, 2× oversampled throughout, emphasis curve in circuit. The tube is the expensive path by an order of magnitude — a warm-started Newton solve against a real load line, twice per sample per channel, at twice the sample rate. That is the honest cost of a physical model, and it is unchanged from the module it came from.

CPU, single instance
ConfigurationCPU
Transistor only2.6 %
Transistor + transformer3.8 %
Tube only9.7 %
Tube + transformer11.0 %

The transfer curve costs nothing on the audio thread — it is computed on a background thread and drawn from the last one that finished, because finding where the tube stops following its input is 801 Newton solves of a real load line, twice per redraw. Measured lateness with the plot live is 0.71 ms mean.

das kleingedruckte.

Formats
VST3 and Audio Unit
Platform
macOS, Universal — Apple silicon and Intel
Channels
Mono and stereo
Latency
103 samples — 31 from the fixed oversampling, 72 from the transient shaper's lookahead. Fixed factor, so its share never changes underneath the host.
Oversampling
Fixed 2× around the nonlinear stages, 64-tap halfband. The only anti-aliasing in the chain.
Window
Resizable, 300 to 1600 px wide; it opens at 300 × 551. The curve section slides out to the right and takes the window to about three and a third times the panel's own width.
Typeface
Menlo, the house substitute for the reference sheet's IBM Plex Mono. Ships on every Mac.
Version
v52

wo es gerade steht.

Plimsoll is built, measured and running. It is not yet on sale: the download host, the update feed and the licence issuer are wired up but switched off, and nothing goes out through them until all three are signed off together.

Not yet shipping

Leave an address and you will hear once — when there is a build to download, not before. No list, no sequence, no newsletter.