Download free
Part of NULL JSFX 2.5: 113 plugins, free and open source (MIT). Easiest with NULL JSFX Hub.
Listen
The same music with the Warm Tube preset and without the plugin. Switch while it plays.
Controls
ShapeCustom / Soft / Hard / Tube / Fold / Sine / Steps / Asym — Picks the transfer curve: Soft, Hard, Tube, Fold, Sine, Steps and Asym are built in, Custom uses the eight points below (in the GFX and VST3/CLAP interfaces, picking a shape copies its points and dragging one switches to Custom).
Drive0 to 36 dB — Gain into the curve (0 to 36 dB): the harder you drive, the further up the curve the signal reaches and the more harmonics it makes.
Bias−50 to +50% — Adds a DC offset before the curve (-50 to +50%) so the two halves of the wave hit different parts of it, for even harmonics; the offset is removed again after the curve.
SymmetrySymmetric / Asymmetric — Symmetric mirrors the curve for the negative half of the wave; Asymmetric gives the negative half a fixed, gentler curve instead, for even harmonics (the Asym shape always does this).
OversamplingOff / 2x / 4x — Runs the curve at 2x or 4x the sample rate so the harmonics it creates do not fold back as aliasing (Off = no latency, more grit).
Tone1000 to 20000 Hz — A low-pass filter after the curve (1 to 20 kHz, off at 20 kHz) to tame the fizz of heavy settings.
Mix0 to 100% — Blend of shaped and dry signal (the dry path is delayed to match), for parallel distortion.
Output−24 to +12 dB — Level after the mix (-24 to +12 dB).
P1 X0 to 1 — Input position of curve point 1 (0 to 1 of full scale; 0 leaves the point unused), read when Shape is Custom.
P1 Y−1 to +1 — Output of curve point 1 (-1 to +1) for that input; values below the previous points fold the wave back.
P2 X0 to 1 — Input position of curve point 2 (0 to 1 of full scale; 0 leaves the point unused), read when Shape is Custom.
P2 Y−1 to +1 — Output of curve point 2 (-1 to +1) for that input; values below the previous points fold the wave back.
P3 X0 to 1 — Input position of curve point 3 (0 to 1 of full scale; 0 leaves the point unused), read when Shape is Custom.
P3 Y−1 to +1 — Output of curve point 3 (-1 to +1) for that input; values below the previous points fold the wave back.
P4 X0 to 1 — Input position of curve point 4 (0 to 1 of full scale; 0 leaves the point unused), read when Shape is Custom.
P4 Y−1 to +1 — Output of curve point 4 (-1 to +1) for that input; values below the previous points fold the wave back.
P5 X0 to 1 — Input position of curve point 5 (0 to 1 of full scale; 0 leaves the point unused), read when Shape is Custom.
P5 Y−1 to +1 — Output of curve point 5 (-1 to +1) for that input; values below the previous points fold the wave back.
P6 X0 to 1 — Input position of curve point 6 (0 to 1 of full scale; 0 leaves the point unused), read when Shape is Custom.
P6 Y−1 to +1 — Output of curve point 6 (-1 to +1) for that input; values below the previous points fold the wave back.
P7 X0 to 1 — Input position of curve point 7 (0 to 1 of full scale; 0 leaves the point unused), read when Shape is Custom.
P7 Y−1 to +1 — Output of curve point 7 (-1 to +1) for that input; values below the previous points fold the wave back.
P8 X0 to 1 — Input position of curve point 8 (0 to 1 of full scale; 0 leaves the point unused), read when Shape is Custom.
P8 Y−1 to +1 — Output of curve point 8 (-1 to +1) for that input; values below the previous points fold the wave back.
Best uses
Draw your own distortion curve and hear it change as you drag the points
Warm up bass, synths or drums with soft tube-like saturation and a little bias
Fold basslines and leads into rich, metallic overtones
Add even harmonics with the asymmetric curve for a fuller, rounder tone
Parallel distortion with Mix, tamed by the Tone low-pass
Properties
Signal chain: Drive gain → optional oversampling (1 or 2 linear-phase halfband FIR stages, 63/23 taps, as in Clipper) → Bias offset → the transfer curve: (0, 0) plus up to 8 points joined by monotone cubic (PCHIP) segments, sampled into a 1024-step table read with linear interpolation, flat after the last point and above full scale, mirrored for negative input (or a fixed gentler curve in Asymmetric) → back down → 10 Hz DC blocker → Tone (12 dB/oct low-pass, off at 20 kHz) → Mix with the delayed dry signal → Output. Latency 0 / 31 / 37 samples (Off / 2x / 4x), reported for delay compensation.
Formats
JSFXJSFX for REAPER, with REAPER's own sliders
GFXJSFX GFX for REAPER, with its own interface
VST3VST3 for any DAW
CLAPCLAP for any DAW
Factory presets
Warm Tube · Hard Edge · Folded Bass · Sine Fuzz · Bit Steps · Even Harmonics · Custom S-Curve