(SP) Saturation
Grit, warmth, and 'analog' without the hardware
- audio_input
- audio
Digital audio is too clean, and that's a problem only if you're making music. (SP) Saturation adds the nonlinear distortion that makes signals feel warm, gritty, or "analog" - it's the tape-hiss-lite, tube-warmth node of the pack, and the README flags it as experimental. Four different distortion curves, one drive knob, and the pack's usual loudness protection so your ear isn't tricked by volume.
The core trick is waveshaping: you push the signal through a nonlinear curve that squashes the peaks, which generates new harmonics. Different curves sound different, and this node's four modes are a nice spread:
- poly - cubic polynomial (
x - c·x³), the default. Smooth, musical, tape-like; the safest first stop. - tanh - the classic tanh soft-clip, very tube-ish, warm and forgiving. Arguably the best-sounding mode for voices and pads.
- sig - sigmoid, which is a softer tanh variant; gentle and slow to get aggressive.
- log - logarithmic mapping, the odd one out; it wraps the signal into a compressed, dark character. Try it on bass.
The implementation oversamples 4x before shaping and downsamples back, which is the right way to do nonlinear distortion - it keeps aliasing (that ugly digital zipper artifact) out of the new harmonics. Nice detail.
The inputs
- mode - the four curves above.
- drive - 0–200, default 50. How hard you push the curve. At low values you get subtle warmth; past ~100 on
polyorlogyou're into deliberate destruction territory. Live in the 20–90 range for usable grit.
One audio output. And yes: input LUFS is measured and the output is normalized back to the same level, so cranking drive won't just make it louder and fake you out - you're hearing the distortion, not the volume.
How to use it
A touch of tanh at drive 30–40 on a dry TTS voice or a PadSynth note adds instant "recorded in a studio" warmth. A lot of poly on a drum loop makes it aggressive. The trap is overuse: saturation is the easiest node in this pack to ruin a mix with, because every curve adds harmonics that stack across the frequency range. One pass is usually plenty, and it should almost always sit before an EQ or Filter so you can tame what the distortion created. Pair it after a Normalizer and before a Limiter and you've got a believable "mastering-ish" chain.
Installing it
ComfyUI Manager → "Install Custom Nodes" → search ComfyUI Signal Processing, or:
cd ComfyUI/custom_nodes
git clone https://github.com/c0ffymachyne/ComfyUI_SignalProcessing
then restart ComfyUI. Dependencies from requirements.txt (scipy, pyfar, torchaudio, pyloudnorm, cupy-cuda11x, ...) - Manager installs them. The repo is a work in progress; if the pack won't load, the pinned cupy-cuda11x is the usual culprit, and fixing your CUDA/cupy version brings Saturation along with everything else.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_input | AUDIO | — | |
| mode | COMBO | 4 options: poly, tanh, sig, log | |
| drive | FLOAT | 50.00–200 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |