stupidface labsest.2026
live · 1.9 licenses ↗
← catalog / module 02 / gallium
live model · ga—31 class · doubler · vocal offline + live v1.9 · 2026.05

gallium.

Vocal doubler — offline and live. Drop in one good take and render a chorus out, or run it on the host input in real time. The offline engine is full-fat magnum-opus: 150 ms Tukey grains, 8-way OLA, WSOLA cross-correlation, onset-aware placement, band-split HF passthrough. The live path is PSOLA-grade with ±12 semitone SHIFT, 4-way Hann OLA at 75% overlap, ~25 ms latency. 40 factory presets. Designer Mode track-spacer. Drag back into your DAW or play through.

Z · 31 ga—31 Ga gallium
atomic mass
69.723 u
density
5.91 g/cm³
melting pt.
29.76 °C
boiling pt.
2229 °C
e⁻ configuration
[Ar] 3d¹⁰ 4s² 4p¹
unit price
$59.99
usd · perpetual · 2 seats
fig.01 — export mode · annotated · 4 doubles · onset detected · designer off
GALLIUM plugin — export mode, vocal hook source, four doubles, master output column
    grain size
    150 ms · offline
    25 ms · live
    overlap
    8-way tukey · offline
    4-way hann 75% · live
    latency
    0 samples · offline
    ~25 ms · live
    doubles
    unlimited
    sources
    wav · aiff · mp3
    flac · ogg
    platforms
    vst3 · au · standalone
    mac universal · win x64
    workflow / export mode

    one take, a chorus.

    drag in · drag out
    magnum-opus offline algo
    01.
    load

    Drag any WAV / AIFF / MP3 / FLAC / OGG onto the WAVESHAPE panel. The source resamples to host rate (cubic Hermite) so playback never repitches by accident.

    02.
    analyze

    Hit + on the right rail. RMS-windowed onset detector with 80 ms local-mean look-back picks attacks. Pill renders ONSETS · VOICED · DYN. Grain starts within ±20 ms of an onset snap to it; the first 30 ms of each onset has its drift LFOs damped to 0.30×.

    03.
    add doubles

    Hit [+] in the doubles header. Each double gets its own RNG seed and 7 knobs (PITCH, TIME, DYN, SMOOTH, PAN, VAR, GAIN). RE reseeds; the wander LFOs start at incommensurate phases so the new take feels meaningfully different.

    04.
    tweak

    Doubles re-render in the background as you turn knobs. Offline, no audio dropout. The RGB waveform overlay paints D1 / D2 / D3 in distinct colours so you can see where each one's energy sits against the source.

    05.
    audition

    Transport plays source plus every active double through the output bus. ON / OFF solos each take. A / B / COPY stores two snapshots in memory for fork-and-compare.

    06.
    drag out

    The drag-out chip on every double row writes a 24-bit WAV to a temp folder and starts a Finder drag — drop on a track in your DAW and the double is baked. Or save the whole project session and revisit later.

    workflow / live mode

    live performance + monitor.

    ~25 ms latency
    psola-grade shift
    01.
    switch to live

    Click LIVE MODE in the top tabs. The live oscilloscope at the top of the view shows the input plus the mix output — visual feedback during a take.

    02.
    add live doubles

    Each live double is a track row with 8 knobs (SHIFT, DETUNE, TIME, DYN, SMOOTH, PAN, VAR, GAIN). The plug-in writes input to a circular buffer and reads each track at a baseLag (~15 ms) behind the head.

    03.
    shift

    SHIFT dials in ±12 semitones with a 4-way Hann OLA at 75% overlap (constant-sum amplitude at any pitch ratio). Cubic Hermite interp in the buffer read. Cached pitch ratio — only recomputed when the knob actually moves.

    04.
    band-split passthrough

    Above 3.5 kHz the dry HF passes through, crossfaded out by |SHIFT|. At ±0 ST the passthrough is full; at ±6 ST+ the granular character takes over. Sibilance and consonants stay crystal clear during gentle shifts.

    05.
    monitor or send

    LIVE IN passes the host input through. Toggle off and only the doubles are heard — useful for routing the plug-in onto a send. ORIGINAL mixes source / live input back. DRY mutes the source bus.

    06.
    presets

    PRE on every track row opens the per-track preset menu — 40 hand-tuned factory vibes plus your own .gtrack files. Same library shared between Export and Live.

    workflow / designer mode

    track-spacer.

    hierarchical decorrelation
    removes unison comb-filter

    Crank the master DESIGNER knob to remove the phasing between the doubles and the dry vocal — no more comb-filter that unison-style doublers create when stacked. Per-double 4-stage 1st-order all-pass cascade with alternating-sign coefficients ({+0.50, −0.40, +0.55, −0.45}) — neighbouring doubles decorrelate against each other AND against the dry.

    Strength is hierarchical: D1 stays closest to the source; D2 is more decorrelated; D5+ is fully spread. Designer state persists for A/B and presets, and runs identically in Export (offline) and Live (real-time) paths.

    / hierarchy
    D1
    0.30× D2
    0.55× D3
    0.75× D4
    0.83× D5+
    1.00×
    Strength scaling at DESIGNER = 1.0. The DESIGNER knob global-scales all rows together.
    spec / engineering release

    full spec.

    v1.9 · 2026.05
    doc rev b
    / offline engine (export)
    dspgranular overlap-add (magnum opus)
    grain size150 ms
    windowtukey (α = 0.25)
    overlap8-way · hop = grain / 8 (87.5%)
    alignmentwsola cross-corr · ±5 ms search
    interpolationcubic hermite
    pitch wander0..30 cents · dual-LFO
    time wander0..25 ms · dual-LFO
    dyn wander0..4.5 dB · dual-LFO
    hf passthrough3 kHz band-split (delay-aligned)
    onset detectionrms · 12 ms hop · local-mean look-back
    onset snap±20 ms; drift damp 30 ms · 0.30×
    internal dsp32-bit float
    render latency0 samples · pre-rendered
    cpu (playback)~0% · pre-rendered
    / live engine
    dsppsola-grade · 4-way hann ola
    grain size25 ms
    overlap4-way · 75% · phase {0, .25, .5, .75}
    shift range−12 .. +12 semitones
    shift cache2^(st/12) recomputed only on knob move
    detune wander0..10 cents
    time wander0..8 ms (capped lag)
    interpolationcubic hermite (circular buffer)
    hf passthrough3.5 kHz · crossfaded by |shift|
    window lut1024-entry hann · linear interp
    baselag~15 ms behind write head
    cents-to-ratio1st-order taylor (exact at 0¢)
    gain dB-to-linstd::exp2(dB / 6.0206)
    latencybaseLag + grain/2 ≈ 25–30 ms
    cpu / double~62 ops/sample · ~14 doubles in 5% of one core @ 44.1 kHz
    / host + i/o
    formatsvst3 · au · standalone
    platformsmacos 10.13+ · win 10+
    mac binaryuniversal · arm64 + x86_64
    win binaryx64
    window size960 × 620 · fixed
    sample ratefollows host (any)
    channelsmono · stereo
    source formatswav · aiff · mp3 · flac · ogg
    exportdrag-out · 24-bit wav
    doublesunlimited
    / session + presets
    preset format.gtrack · json · schema 2
    factory presets40 hand-tuned vibes (5 groups)
    preset folder (mac)~/Library/Application Support/
    stupidface labs/Gallium/TrackPresets/
    a / b slots2 · stored in memory · persists w/ session
    session saveschema 1 json · all doubles + master + designer + license cache hash
    license2 seats · lemon squeezy keyed · 30-day revalidation
    installer.pkg (mac, ad-hoc signed) · .exe (win)
    plug-in folders (mac)~/Library/Audio/Plug-Ins/VST3 + Components
    spec / offline grain flow

    fig.02 — magnum opus.

    tukey window · 8-way ola
    onset-aware placement · wsola align

    Source is sliced into 150 ms Tukey-window grains (75% flat top + 12.5% Hann tails). Eight-way overlap (hop = grain / 8) gives a near-constant Tukey sum. WSOLA cross-correlation searches ±5 ms in the source for the best phase-coherent grain start against the previous grain's tail. Above 3 kHz the original-source HF is delay-aligned and substituted in — the granular path's "tinny / canny" sound mostly lives in the sibilance + breath transients, so passing them through untouched restores transient clarity completely.

    pitch lfo0..30 ¢ · dual-LFO drift time lfo0..25 ms · per grain dyn lfo0..4.5 dB · per grain varper-grain noise on time + gain windowtukey · α = 0.25 · 8-way hf split3 kHz · band-split passthrough
    SRC + HF PASSTHROUGH ABOVE 3kHz GRAINS · TUKEY · 8-WAY OLA ONSETS
    spec / live shift flow

    fig.03 — psola-grade.

    4-way hann · 75% overlap
    band-split crossfade by |shift|
    ~15ms baseLag LIVE INPUT 4 HANN GRAINS · 75% → MIX · UNITY GAIN AT ANY RATIO

    Live audio writes into a circular buffer; each LiveDouble reads at baseLag (~15 ms) behind the write head. Grain reads use cubic Hermite. The 4-way overlap is the trick: Hann sum at 75% overlap is constant 2.0, so the mix scales to unity at any pitch ratio. 50% / 2-grain Hann gets amplitude ripple at non-unity ratios — 75% / 4-grain doesn't.

    grain25 ms · hop ≈ 6.25 ms overlap4-way · phases {0, ¼, ½, ¾} shift−12 .. +12 ST · cached ratio hf split3.5 kHz · crossfaded by |shift| window1024-entry hann LUT · lerp latencybaseLag + grain/2 ≈ 25–30 ms
    spec / additional views

    fig.04 / 05.

    live mode · per-double EQ
    fig.04 — live mode · 4 active doubles · live input monitoring
    GALLIUM live mode — input oscilloscope, 4 live doubles with SHIFT/DETUNE/TIME/DYN/SMOOTH/PAN/VAR/GAIN knobs
    fig.05 — per-double EQ · 5 bands · spectrum overlay
    GALLIUM per-double EQ — 5 bands (bell, lo shelf, hi shelf, hi pass, lo pass, notch) with live spectrum overlay

    The per-double EQ is reachable from the EQ button on every double row. Five band types — bell, lo shelf, hi shelf, hi pass, lo pass, notch — each with a coloured handle on a continuous response curve and a live input spectrum overlay. Bands shape the rendered double's tone before it hits the output bus.

    controls / per double · export

    offline knobs.

    seven per row
    color-coded by axis
    ·
    pitch · blue · 0..30¢

    Micro-detune wander depth. Two incommensurate-rate sin LFOs drift the per-grain pitch up to ±30¢ from source. 0 = identical to source. Higher values feel like a singer who is a touch more relaxed than they were on the main take.

    ·
    time · orange · 0..25 ms

    Per-grain timing wander. WSOLA cross-correlation aligns each grain to ±5 ms in the source for phase-coherent OLA at any hop, so wander stays smooth even at high values. Subtle = human; higher = looser second-take timing.

    ·
    dyn · green · 0..4.5 dB

    Dynamics modulation depth. Per-grain level wander adds mic-distance variation between takes — micro-loud and micro-quiet syllables on the same line. Subtle values feel human; cranked it pulls toward "different singer."

    ·
    smooth · yellow · 0..55%

    High-frequency "cotton dab" cut. Takes the edge off without dulling the take — pairs with the granular path's 3 kHz band-split that already passes the original-source HF through untouched, so this works like a tone control on the granular layer.

    ·
    pan · purple · −1..+1

    Stereo placement of the rendered double. L100 = hard left, R100 = hard right. Pan each double across the field to build a chorus that fills the stereo image, or stack them in the centre for thickness.

    ·
    var · red · 0..1

    Per-grain variance amount — adds noise to time and gain wander only. Pitch stays smooth so the key never wanders. Higher values pull the take toward "different singer" rather than "same singer breathing."

    ·
    gain · ink · ±12 dB

    Per-double level. Pre-master-output, so the IN meter still reads the source — only the OUT bus reflects this trim. Use it to balance doubles against each other before the master output stage.

    controls / per double · live

    live knobs.

    eight per row
    SHIFT is new in v1.9
    v1.9
    ·
    shift · blue · −12..+12 ST

    Semitone pitch shift. PSOLA-grade — 4-way Hann OLA at 75% overlap, 25 ms grains, cubic Hermite buffer reads. The cached ratio (2^(ST/12)) only recomputes on knob move. Above 3.5 kHz the dry HF passes through, crossfaded out by |SHIFT| so consonants stay clean during gentle shifts.

    ·
    detune · blue · 0..10¢

    Micro-detune wander depth on top of SHIFT. Same dual-LFO drift as the offline pitch wander, capped at ±10¢ for live so the centre note stays audible.

    ·
    time · orange · 0..8 ms

    Capped lag wander. The live path can't go past the buffer's baseLag headroom, so live timing wander is tighter than offline — still enough to break unison phase against the dry.

    ·
    dyn · green · 0..4.5 dB

    Dynamics modulation depth — same range as offline. LFOs are sub-sampled at a 32-sample stride and linear-interpolated, so the live cost stays low while the per-track motion still feels natural.

    ·
    smooth · yellow · 0..55%

    HF cut on the granular path. Same role as in Export — works alongside the live 3.5 kHz band-split to give a tone control without dulling sibilance.

    ·
    pan · purple · −1..+1

    Stereo placement per live track. Sample-accurate — moving the knob during playback is glitch-free.

    ·
    var · red · 0..1

    Per-grain variance — same role as in Export. The wander rate scales up with VAR while the LFO depths stay capped, so each grain feels like a slightly different micro-take.

    ·
    gain · ink · ±12 dB

    Per-track level. Live mix uses juce::FloatVectorOperations::add + multiply, and dB-to-linear is std::exp2(dB / 6.0206) — the per-knob change has near-zero hot-loop cost.

    controls / per double · buttons

    action chips.

    to the right of every row
    pre

    Per-track preset menu. Lists user presets at top, factory presets in a sub-menu, plus Save / Open Folder actions. Drop a saved preset onto any double in either mode — Export and Live share the library.

    eq

    Opens the per-double EQ pop-up — five band types (bell, lo / hi shelf, hi / lo pass, notch) on a continuous response curve with live spectrum overlay. Tone-shape each double independently before the output bus.

    on

    Mute toggle. Mutes only this double — source bus and other doubles keep playing. The button reads ON when active, OFF when muted.

    re

    Reseed the RNG and re-render. Each double's wander LFOs start at incommensurate phases, so reseed gives a meaningfully different take with the same knob settings. Use it when a double doesn't quite vibe with the lead.

    drag-out

    Drag the chip onto a track in your DAW — the rendered double writes to a temp .wav and the OS-native drag begins. Drop-in is sample-aligned with your source position.

    ×

    Delete this double row. The render scratch buffer is freed; A/B and presets remember their own sets, so removing a row in the live state doesn't touch what's stored in slot B.

    controls / master output bus

    master column.

    right rail
    persists across modes
    output · ±12 dB

    Master output trim. Sits ahead of the output bus meters. Single big black knob; reads 0.000 at unity. Use to make up for designer mode level drop or to leave headroom before the DAW's track fader.

    tilt · ±6 dB

    Single-knob tilt EQ around a 1 kHz fulcrum. Negative = darker, positive = brighter. Reads FLAT at zero. Tilt sits after the doubles mix so it shapes the whole stack at once.

    designer
    designer · 0..1

    Master track-spacer amount. Cranks the per-double 4-stage all-pass cascade (alternating-sign, hierarchical curve) to remove the comb-filter phasing between doubles and dry vocal. State persists for A/B and presets.

    original toggle

    Mixes the source (Export) or live input (Live) back into the output. Off = only the doubles. On = doubles + source. Useful when you need the dry inside the plug-in for monitoring rather than in your DAW chain.

    live in toggle

    (Live mode) Passes the host input through to the output. Toggle off and only the doubles are heard — useful for routing the plug-in onto a send / aux track.

    in / out meters · clip

    Vertical green→yellow→red meters for IN and OUT. The CLIP indicator turns red when the output bus peaks ≥ 1.0. Same canonical gradient regardless of signal — meters indicate severity, not identity.

    faq / common

    questions.

    updated 2026.05
    q.
    offline or live?

    Both. EXPORT mode renders pre-baked doubles offline from a loaded sample with the magnum-opus algorithm — 150 ms Tukey grains, 8-way OLA, WSOLA alignment, onset-aware placement. LIVE mode runs on the host input in real time with a PSOLA-grade engine — 25 ms grains, 4-way Hann OLA at 75% overlap, ±12 semitone SHIFT, ~25 ms latency. Tabs switch between them; A/B and presets are shared.

    q.
    does it tune?

    No, Gallium doesn't snap to scale. DETUNE in Live and PITCH in Export are micro-detune wander (±10¢ live / ±30¢ offline), not correction. The Live SHIFT knob is a deliberate ±12-semitone pitch shifter — set it, the whole double sits at that interval. Tune your source first if it needs it.

    q.
    how many doubles can I add?

    Unlimited. Each one uses its own RNG seed and independent LFO phases, so adding a fifth double sounds like a fifth singer, not a copy. Live cost is ~62 ops/sample per double on Apple Silicon — about 14 doubles fit in 5% of one core at 44.1 kHz. Past ~6 it starts to ensemble-blur — the tool resists wandering into chorus territory, but you can. DESIGNER hierarchically decorrelates them so D5+ stays out of the dry's way phase-wise.

    q.
    why doesn't it sound canny / tinny like other granular doublers?

    Two reasons. Band-split HF passthrough. Above 3 kHz (offline) / 3.5 kHz (live), the granular path drops out and the original-source HF (delay-aligned) is substituted in. The "tinny / canny" sound of granular pitch shifters lives almost entirely in sibilance + breath transients, so passing those through untouched restores transient clarity. Onset-aware placement. The offline renderer snaps grain starts to detected onsets within ±20 ms and damps drift LFOs to 0.30× for the first 30 ms after each onset — consonants stay crisp.

    q.
    presets?

    Per-track. Every double row has a PRE button that opens a popup with your saved presets and a Factory sub-menu. 40 hand-tuned factory vibes ship in five groups — soft / intimate, wide / dense, aggressive / dirty, studio / clean, lo-fi / vintage, stylised / character. Save your own as .gtrack JSON. The library re-seeds Factory on launch if the count on disk is smaller than the embedded count, so future updates can grow the bank without forcing a reset. Same library shared between Export and Live.

    q.
    what does designer mode do?

    It's a track-spacer. Cranking it removes the comb-filter phasing that unison-style doublers create when stacked together. Per-double 4-stage 1st-order all-pass cascade with hierarchical strength (D1 stays close to the source, D5+ fully decorrelated) and alternating-sign coefficients across the four stages — the decorrelation spreads evenly across the spectrum so doubles decorrelate against each other AND against the dry. Runs in both Export (offline) and Live (real-time) paths.

    q.
    how does licensing work?

    License keys via Lemon Squeezy. Online activation on first launch, two device slots per key, and a 30-day re-validation that revokes refunded keys (closes the refund-and-keep loophole). The local license.dat is FNV-1a-HMAC-signed against a per-product secret. DEACTIVATE in Settings frees the device slot in your account. Unlicensed runs in demo mode — 30 seconds of audio, then a clean atomic-state silence (no pops or glitches) until you license.

    q.
    is there a free trial?

    Demo mode runs unlicensed: 30 seconds of audio per session, then silenced cleanly. Buy and activate to lift the gate. Gallium is $59.99 with a 30-day no-questions refund — buy it, run it on a real take, send it back if it doesn't earn its place.

    q.
    windows? apple silicon?

    Yes to both. Mac builds are Universal binaries — arm64 (Apple Silicon) + x86_64 (Intel). Windows is x64. VST3, AU, and a Standalone build (Mac + Windows) are included for offline preview without a host. Same key works on either OS, two activations split however you like. The Mac .pkg ad-hoc signs the bundle to satisfy Gatekeeper without an Apple Developer ID.

    live · v1.9 model · ga—31 offline + live in stock

    buy gallium.

    $59.99 perpetual license. Two activations. 30-day refund. v1.x updates included — every minor adds knobs, presets, and CPU savings at no extra charge. VST3 · AU · Standalone. Mac Universal + Win x64.

    $59.99
    usd · per user
    buy now — $59.99 support