RJ-Saturation: Manual
RJ-Saturation is the saturator I always wanted: one I can trust while I work. Instead of a channel strip with hidden stages, there is a single equation behind it. The dry path stays bit-exact and untouched, and everything nonlinear is added back as one single, linear-free "grit". The best part: you draw the harmonics straight onto a live spectrum and see exactly what the saturation is really adding. Nothing is claimed that you can't also measure.
Overview
RJ-Saturation is built on a "OneGrit" architecture. The dry signal path stays bit-exact and the entire nonlinearity is mixed back in as one single, linear-free residual. Linear-free means the grit contains no component that just makes the original louder or quieter. It is made of pure harmonics plus a controlled compression of the fundamental. That's why there is no comb against the dry signal, and by default zero reported latency, with no oversampling, because the grit is already low-alias via ADAA.
Remember one thing: at Drive 0 the plugin is a bit-exact bypass, whatever else is set. Grit only builds once you turn Drive up.
You look at the same grit through four lenses, the four tabs in the centre: HARMONICS (the recipe), FOCUS (a grit-EQ that decides where the colour lands), COLOR (a drawable law of level versus saturation depth) and CURVE (the transfer curve itself as a shaped curve). Same grit, different angle.
The Interface
The heart is the HARMONICS tab: an interactive harmonic recipe floating over a live spectrum. Two deliberately decoupled axis languages sit in one plot.
- The background is reality on a logarithmic frequency axis from 20 Hz to 20 kHz. Two curves run across it: OUT (muted rose) shows the output spectrum as context, DELTA (blue) shows only what the saturation adds, straight from the engine and on real program material rather than a test tone. At Drive 0 the DELTA curve is silent.
- The foreground is the recipe on an order axis H1 to H8 (labels on top, dBc scale on the left). The x-positions of the pins carry no frequency meaning. The recipe applies to every tone equally: a 60 Hz kick gets the same harmonic build as a 400 Hz vocal.
- The SLOPE line (wine, draggable) is the Slope parameter, the tilt of the harmonics in dB per order. It starts at H1 on 0 dB and at order n it sits at (n−1)·Slope. Steeper means softer and rounder, shallower means more bite in the high orders.
- The TRIM pins H2 to H8 ride the slope line and raise or lower one harmonic relative to it. Double-click resets. Each trim is its own leak-free Chebyshev branch that adds exactly its order.
Hover over the slope line (under a standing sine) and next to SLOPE (what you drew) you also see FIT (the droop-calibrated measured slope from H3/H5/H7). With flat trims the two must agree. That is the calibration, readable right in the plugin.
At the far right sits a slim stereo output meter column (L/R, peak, −60 to 0 dB). It only displays, it doesn't touch the signal.
In the header, top-left is the power/bypass ring (the host master bypass, lit wine = active, dimmed = bypass), next to it the wordmark and on the right the preset selector. In the footer you find DELTA SOLO, MAKEUP and DRAW on the left, CLIP and OS on the right.
Controls & Parameters
The knob row
- Drive: 0 – 24 dB. The input pre-gain into the grit and thus the base amount of saturation. 0 dB = bit-exact bypass. The taper is gamma-6, so fine resolution in the low dB range (around 0.1 dB near 40 % travel). That is knob feel only, the DSP gets raw dB.
- Character: SOFT … FIRM, 0 – 100 %. Morphs between two odd-harmonic kernels. SOFT (0 %) is odd-Lorentz with a soft geometric rolloff, FIRM (100 %) is the Giannoulis cubic, firmer and more compact. Both make odd harmonics (H3, H5, …), Character shifts the balance of the series.
- Even: 0 – 100 %. Doses in the even kernel (H2, H4, …), meaning warmth and tube-like fullness. 0 % is purely odd. Gamma-6 taper. The asymmetry direction is a fixed voicing default, there is no polarity switch because + and − sound and measure identically.
- Tracking: 0 – 100 %, default 70. The often misunderstood one. It is not a normal parameter but a seeder for the COLOR curve and writes its 7 nodes from a formula. 0 % = exact diagonal (analog, colour follows level 1:1), 100 % = flat curve (level-invariant), in between a mix with a built-in natural relief below about −30 dBFS. Once you drag a COLOR node, your curve wins until you move the knob again.
- Keep: Transient Keep, 0 – 100 %, default 0. Ducks the grit on transients so attacks stay clean and drums keep their punch. A linked transient detector briefly lowers only the grit's wet weight, dry and grit history stay untouched. 0 % = bit-exact off, the sustain colour is fully preserved.
- Width: Harmonic Width, 0 – 100 %, default 0. Stereo width from the saturation itself, via a genuine difference of harmonics between L and R. L emphasises odd and cuts even, R the opposite with a smaller factor, so it is not a mirror image. A per-channel makeup holds H1 exactly flat between L and R so the fundamental and the bass don't wander. Only the harmonics open up. Width 0 = bit-exact, no chorus.
- Mix: 0 – 100 %, default 100. Dry/wet, but on the grit only (the dry signal is never scaled). For parallel saturation you turn Mix down and Drive up, then dense harmonics sit under the intact original. Below about 6 dB Drive the wet weight also builds up.
Slope & Trims (HARMONICS)
- Slope: −30 … −9.5 dB/order, default −18. At order n the line sits at (n−1)·Slope. Steeper = softer, shallower = more bite. With OS off the engine clamps to −12 (the 0-oversampling policy), the zone to −9.5 only opens with 2x OS.
- Trim H2 … H8: −12 … +12 dB, default 0. Seven independent per-harmonic trims relative to the slope line. On a boost the honest note +IMD appears, because that order re-admits its intermodulation products. Even trims act on any nonzero value, odd trims only on a boost.
FOCUS (grit-EQ)
A 6-band EQ that acts only on the grit: boost means more harmonics exactly there, cut means fewer. WYSIWYG with the blue DELTA behind it, which follows the drawn curve literally. The dry path stays bit-exact (the filter sits in the wet branch only), latency 0.
- 4 tone bands (LS | Bell | Bell | HS): Freq 20 – 20000 Hz, Gain −12 … +12 dB, Width 0.25 – 3.0 oct, each On/Off. Default frequencies 120 / 500 / 3000 / 8000 Hz.
- Low Cut / High Cut: TrueShape-2 cuts with an exact stopband, slope 12 / 24 / 36 / 48 dB/oct. Grey handles on the 0 dB line, drag = freq, wheel = slope, double-click = On/Off. "Harmonics only between 300 Hz and 5 kHz" is a two-handle gesture.
One disclosed trade: the grit carries a small fundamental component at the working level. Draw extreme (±12 dB) directly on the fundamental at full Drive and H1 can move by up to about 3.6 dB. At mastering drives it is orders of magnitude less, and the dry stays untouched.
COLOR (level-versus-colour law)
A drawable law: at this input level the saturation should be this deep. X = measured level (−60 … 0 dBFS), Y = target working level (dBFS). A flat line is a level-invariant fingerprint, the diagonal (Y=X) is classic analog (louder in = deeper saturated).
- 7 vertical nodes on a −60 … 0 dBFS grid (10 dB spacing), freely draggable. A live cursor shows the current detector level and where it sits on the curve (TRACK readout).
- Shaded zones: below −50 dBFS freeze (the detector doesn't chase silence), −50 … −40 release (the correction fades out cleanly).
- The detector is stereo-linked (one value for L+R, no image wobble) and slow (2 s release, a mastering slow-AGC) with instant attack protection.
CURVE (the transfer curve, expert feature)
Shape the grit kernel as a curve (input versus output, normalised to [−1, 1]). By default MORPH runs the smooth maths kernels (Character/Even). Enable DRAW and that morph shape stays your base, with a shaped deviation laid on top.
- Curve nodes: 9 draggable Y nodes on a fixed X grid over [−1, 1], stored as the deviation from the morph base. Draw nothing (deviation 0) and DRAW is bit-identical to MORPH, no jump on enable.
- The deviation is a smooth degree-5 least-squares approximation, not an interpolation through every node. A stroke becomes a broad, soft dip rather than a sharp spike and has, by construction, no harmonics above H5. The nodes are targets, not constraints: the curve deliberately does not pass through every node (a thin connector shows the gap).
Don't confuse this with Clip: DRAW is the soft formable curve, the hard catch is the separate Clip softclip in the footer.
Footer switches
- Delta Solo (Off/On): solos the grit alone (output = only w·grit, no dry) so you hear what you are adding. Honestly named "Delta" because the residual carries a compression component at the working point, so it is the true difference versus dry, not a pure harmonic signal.
- Makeup (On/Off, default On): fundamental level compensation. The grit slightly compresses the fundamental, Makeup multiplies by 1/G1 (closed form) so Drive doesn't shift fundamental loudness. You hear more saturation, not more level. Switchable and disclosed.
- Clip (default Off): a peak-referenced soft C1 output clipper (the same verified cubic kernel as CHARACTER-FIRM, ADAA, 0 latency). A click opens a small panel with ENABLED, Ceiling (−12 … 0 dB, default −3 = knee) and Amount (0 – 100 %, default 60 = blend). For gently holding the output together or taming peaks.
- OS (Oversampling 2x, default Off): opt-in. Off = 0-oversampling policy (0 latency, bit-exact dry, slope clamp −12 … −30). On = 2x, the whole engine oversampled, the slope clamp opens to −9.5 (around 14 dB fewer alias spurs). Under 2x the dry path also runs through the OS filters (a tiny HF phase colour), so the bit-exact/0-latency claim holds for the default OS-off. Toggling re-prepares the engine, it is a setup decision, not an automation parameter.
- Draw (Off = MORPH / On = DRAWN): arms the CURVE tab (see above) and jumps there on enable.
Workflow
RJ-Saturation is built for working directly on the picture:
- Drag the slope line to set the harmonic tilt, the trim pins H2 to H8 shape single orders.
- Double-click resets any pin or node to its default.
- DELTA SOLO lets you hear what the grit does on its own, the blue DELTA shows it to you in parallel.
- Switch tabs to shape the same grit differently: the recipe in HARMONICS, the place in FOCUS, the level dependence in COLOR, the kernel shape in CURVE.
Practical Tips
- Gentle mastering tube: Drive 1 – 3 dB, Even around 30 %, Character toward SOFT, Slope around −18, Tracking 70, Makeup on, Keep around 50. Warmth you feel but don't go looking for.
- Aggressive edge: Character toward FIRM, Slope shallower (−12 … −14), H3 and H5 up, Keep around 30.
- Colour in the mids only: in FOCUS a Bell on the mids at +6 dB, the rest off. The harmonics land in the mids, highs and lows stay clean.
- Width from saturation: first raise Even a little (some H2/H4), then bring Width up. A subtle, mono-safe widening, because H1 is held flat in the centre.
- De-fizz on tails: drag the COLOR nodes below −30 dBFS down (or Tracking higher). Quiet passages then fizz less.
For a quick start there are 7 factory voices (Init, Clean Console, Tube, Tape, Iron (Neve), Iron (API), Mastering Glue). They set only the shaping parameters (Drive, Character, Even, Slope, trims, Tracking, Keep) and leave routing, OS, Width and Clip as your mix context. Physics-grounded starting points, voiced by ear.
Installation & Activation
RJ-Saturation runs as VST3, AU and AAX on macOS and Windows.
- Download and run the installer, then reopen your DAW.
- On first launch you get the 30-day, fully functional trial, no limitations.
- After purchase, enter your license key in the plugin's info area. Done. The key works on Mac and Windows alike.
Questions about activation or workflow? Just write to me directly. I build these tools myself and I'm glad to help.