VINAIstereo Manual
The reference stereo widener: a delayed copy with a left polarity flip, summed against the dry. Three controls, mono-safe by construction, watched over by a lab-grade vectorscope with AUTO visual gain, a correlation column and MID/SIDE peak meters. v1.0.2 · VST3 · AU.
01Overview
VINAIstereo is the widener producers build by hand from a delay and a utility, engineered as one instrument. A copy of your signal is delayed by TIME (the same time on both channels), its left side is polarity-flipped, and the result is summed against the dry. WET is the width you hear; DRY is the centre you keep.
The flip is what makes it safe: on a mono source the two wet halves are exact opposites, so the mono fold-down cancels the wet and returns the dry alone. Mono-safe is a property of the math, not a promise. On material that is already stereo a side residue remains, and that is exactly what the PHASE column shows you. The delay is the effect, so latency is zero.
02The interface

- Vectorscope: the last 38 ms of audio drawn on a diamond graticule, dry spine in lava under the output beam in core blue. The beam has real CRT physics: where the trace slows down the phosphor glows, where it sweeps it dims. The header reads sample rate, window and trace points, live.
- AUTO SCALE chip: the scale readout in the top right corner. AUTO SCALE is engaged by default and the lit chip states the scale currently on the graticule; one click anywhere on the glass switches to a fixed +6 dBFS scale.
- PHASE column: 41 centre-zero segments on the scope's right edge, +1 at the top. Blue toward mono-compatible, lava to red toward anti-phase, with a fast attack into danger and a worst-case hold line.
- MID / SIDE strip: peak meters for the centre you keep and the width you add, with peak-hold readouts in dBFS. If MID drops while you open WET, you are cancelling, not widening.
- Knob card: DRY, WET and TIME, with writable value boxes (double-click to type) and fixed-step mouse wheel.
03Knobs & buttons
The four knobs
Dry
Level of the untouched signal, mute to +6 dB in 0.5 dB steps: the centre you keep
Wet
Level of the widened layer, −24 to +6 dB in 0.5 dB steps, and this is your perceived width. The floor is a quiet wet, not a mute: the whole rotation now spends itself on the 30 dB you actually decide in
Time
0.1–100 ms of delay, identical on both channels. Short times read as tight width, long times as space
Split
20 Hz to 1 kHz. Below this frequency nothing is processed: the high-pass sits on the wet leg alone, so down there the dry passes untouched. Bottom of the travel reads OFF and the filter is stepped over, bit-exact. Default is C4, 261.6 Hz
Gestures
Type a value
Double-click any value box and type: "-6.5", "-6,5", "10.5 ms", "-inf" and "OFF" all land on the legal grid. The words the readouts print can always be typed back
Mouse wheel
Fixed steps per detent: 1 dB on DRY and WET, 1 ms on TIME. On SPLIT a detent is one semitone with note snap engaged, ten cents without: a fixed step in Hz would be two different controls on the same knob. Trackpad scrolling accumulates; inertia is ignored
Note snap, the S pill
The small S beside the SPLIT label locks the cut to the nearest semitone, so you can put it on the key of the track instead of on a number. It catches everything you do by hand, dragging, scrolling and typing, and the readout names the note. Host automation is never snapped: the parameter stays the master, and a project reopens exactly as you saved it
Click the scope
Toggles between AUTO SCALE (the default) and the fixed +6 dBFS scale. The chip in the corner always states the scale you are looking at
Init / Bypass
INIT returns every parameter to its default. BYPASS crossfades to the untouched input in 10 ms, click-free
04The vectorscope
The display is a goniometer: mono energy stands vertical on the M axis, side energy lies horizontal on the S axis, and the L and R axes run along the diagonals, matching the etched tags. The diamond is not decoration. The set of legal digital values per channel is a square, and a goniometer rotates that square by 45 degrees: the diamond edge is digital full scale itself, in every direction. Touch the upper-left edge and the left channel is at the scale limit; upper-right, the right channel.
The beam draws the last 38 ms, rebuilt from scratch every frame. There is no persistence image and nothing accumulates: the softness you see is real CRT physics, where the beam dwells the phosphor glows, where it sweeps it dims. The dry signal is the lava spine; the output is the blue beam. The difference between the two is the effect.
AUTO SCALE is the default view: a visual gain built on a quasi-peak reference over 300 ms, quantized to 2 dB steps with 3 dB of hysteresis, frozen in silence. Measured breathing between beats: 0.0%. It scales the picture, never the audio, and the chip always states the scale currently on the graticule, so the number never lies while the figure is normalized. One click on the glass switches to a fixed +6 dBFS scale, where nothing about the picture ever moves on its own and size is level.
05Under the hood
Signal flow
Audio splits into a dry path and a wet path. The wet path reads a fractional delay line at TIME milliseconds (the same tap on both channels), high-passes the tap at SPLIT, flips the left side, and is levelled by WET; the dry path is levelled by DRY; the two are summed. There is no output trim, no look-ahead, and no gain staging beyond the two level controls. The delay itself is the effect, which is why the plugin reports zero latency.
- Fractional delay: a 6-point Lagrange interpolator reads the line. Two adjacent TIME detents land on different sample fractions, and a cheaper interpolator would change the top octave audibly between them: measured ripple at 10 kHz is 0.24 dB, against 2.01 dB for linear interpolation.
- The SPLIT filter: a Linkwitz-Riley 4th-order high-pass in topology-preserving transform form, on the wet tap and nowhere else. It is deliberately not a crossover: a real crossover would run the dry through two filter branches and rotate its phase, and the dry of this plugin going straight through is the one thing that is sacred. With the filter on the wet leg alone, below the cut what is left is the dry, intact. The two channels share one set of coefficients, which is what keeps the mono cancellation exact when the filter is engaged, and the filter runs even when SPLIT is off so that engaging it never wakes a cold filter.
- Parameter smoothing: every level moves through per-sample smoothing, and the TIME glide has a slew ceiling of half a sample per sample, so the tap can glide like tape but can never stall or run backwards.
- Input scrubbing: non-finite samples are cleared at the input, so a misbehaving upstream plugin cannot latch the engine or the display.
- Bypass: a 10 ms equal-sum crossfade to the untouched input. Fully bypassed, the plugin is bit-exact.
- Metering pipe: scope, correlation and MID/SIDE meters read one lock-free FIFO fed after the bypass stage, so every display shows what actually leaves the plugin, and the audio thread never blocks on the GUI.
- Gap fence: when the host suspends processing (transport stop, track gating) and resumes, the scope window restarts from the first fresh sample. The display never splices stale audio from before the gap into the new note.
06Measured
Measured in-house on the real binaries: headless bench on the DSP kernel, pixel-level bench on the actual display component, on Apple Silicon and Intel builds.
| Latency | 0 ms / 0 samples (zero-latency) |
| Mono fold-down of the wet | Cancels below −137 dBFS, worst case across 20 TIME values |
| Bypass | Bit-exact, passthrough identical to the input |
| Block-size invariance | Bit-identical output from 1-sample to 4096-sample blocks |
| Time accuracy | 10 ms stays 10 ms at 44.1, 48, 96 and 192 kHz |
| Interpolator ripple | 0.24 dB at 10 kHz on a half-sample fraction (linear would be 2.01 dB) |
| Split slope | 24.05 dB per octave, −6.02 dB at the cut (Linkwitz-Riley 4th order) |
| Split across rates | The cut holds the same frequency within 0.019 dB from 44.1 to 192 kHz |
| Split disengaged | Bit-exact: at the bottom of the travel the cut frequency cannot change a single ulp of the output |
| Split and the dry | Bit-identical dry across the whole travel of the cut: the filter never reaches it |
| Wet below the cut | −48.2 dB at 65 Hz with the cut at C4, and −0.00 dB at 2 kHz |
| Tail | 0.214 s worst case measured, 0.30 s declared to the host |
| Scope containment | 0 pixels outside the graticule, every frame, every test program |
| AUTO stability | 0.0% figure breathing between beats on a kick-over-pad program |
| Self-noise | None: silence in, silence out |
07Specifications
| Type | Reference stereo widener |
| Algorithm | Delayed copy, left polarity flip on the wet, summed against the dry · mono-safe by construction |
| Time | 0.1–100 ms, identical on both channels · 6-point fractional interpolation |
| Dry / Wet | DRY mute to +6 dB · WET −24 to +6 dB · 0.5 dB steps · WET sets perceived width |
| Split | 20 Hz to 1 kHz on the wet leg only · Linkwitz-Riley 4th order, 24 dB per octave, zero latency · OFF at the bottom of the travel, bit-exact · note snap to the nearest semitone · default C4, 261.6 Hz |
| Vectorscope | 38 ms window · dwell-intensity beam · full-scale diamond graticule · AUTO SCALE by default, fixed +6 dBFS on click · live data header |
| Metering | 41-segment correlation column with worst-case hold · MID / SIDE peak meters with hold readouts |
| Latency | Zero, because the delay is the effect |
| Formats | VST3 · AU |
| Systems | macOS 11+ (Universal) · Windows 10+ · 64-bit |
| Version | 1.0.2 |