audioJS

@audio/saturate-tube

Status calibrated

npm1.0.5licenseMIT

Tube saturation — asymmetric biased tanh, even-harmonic signature

Overview

Install
Updated
Family
saturate, 5 packages under it
Tags
shape
import tube from '@audio/saturate-tube'

Valve/tube-style saturation: a DC-compensated, asymmetric tanh transfer (bias shifts the curve off-center). The asymmetry is what generates even harmonics — the "warm" 2nd-harmonic tube signature — versus the odd-only symmetric curves in transistor/waveshaper. Oversampled (windowed-sinc up → shape → windowed-sinc down) to keep the extra harmonics from aliasing.

tube(data, { drive: 3, fs: 44100 })
tube(data, { drive: 2, bias: 0.4, mix: 0.6 })
Param Default
drive 2 pre-gain into the biased tanh curve
bias 0.25 0..1 — asymmetry (DC-compensated); higher = more even-harmonic content
fs 44100 sample rate
oversample 4 oversample factor; 1 disables oversampling (naive, aliased)
mix 1 0..1 — wet/dry blend

Mutates data in place and returns it (same array reference, not a copy). Even (2nd) harmonic energy measurably exceeds transistor's at equal drive — verified in the family test suite via Goertzel analysis at 2nd/3rd harmonic bins.

This package's own host wrapper (./audio export, for chainable-host use) is streaming: false — the sinc-oversampled transfer needs whole-signal context; a per-block realtime path would need a streaming polyphase oversampler first.

Use when: warm, "tube-y" 2nd-harmonic coloration.
Not for: odd-harmonic console character (use transistor) or HF-rolled tape character (use tape).


Part of the @audio/saturate family.

MIT © audiojs