V-ShiftSplit
Fwuzeem Audio V-Series
What it is
V-ShiftSplit is a 1-in/8-out amplitude splitter with one input bus and up to eight output buses. It measures the incoming level, assigns each sample to a level zone around a threshold, and routes the signal to the corresponding output or adjacent outputs. Bevel controls how many quantized transition zones are available; the base routing gains are power-of-two fractions whose outputs recombine with a unity sum before any output trim. This is dynamic, level-based routing, not a frequency crossover.
Controls & parameters
Split controls
| Parameter ID | Display name | Range | Default | What it does |
|---|---|---|---|---|
threshold | Threshold | -60.0 to 0.0 dBFS, step 0.1 | -12.0 | Center level for zone decisions. |
zoneWidth | Zone Width | 0.0 to 48.0 dB, step 0.1 | 12.0 | Width of the symmetric transition band around the threshold. |
bevelLevel | Bevel Level | 0 to 4, step 1 | 1 | Sets the number of quantized bevel steps: 2^bevel + 1 zones. |
numOutputs | Num Outputs | 2 to 8, step 1 | 2 | Requested number of output buses. The editor labels this control Channels. |
bypass | Bypass | Boolean | false | Copies the input verbatim to Output 1 and silences the other output buses. |
inputGain | Input Gain | -20 to +20, step 1 | 0 | Pure exponent-shift trim before level detection and routing. |
Threshold is an absolute dBFS detector reference. Zone Width is interpreted symmetrically: half of the selected width is above threshold and half below it. At bevelLevel=0, the split is hard. Higher bevel levels create quantized crossfades between adjacent outputs.
The DSP limits active outputs to the available zones as well as to eight: min(numOutputs, 2^bevel + 1, 8). Consequently, the maximum active count is 2 at bevel 0, 3 at bevel 1, 5 at bevel 2, and 8 at bevel 3 or 4. This is separate from the requested numOutputs value and from the visibility of editor strips.
Envelope controls
| Parameter ID | Display name | Range | Default | What it does |
|---|---|---|---|---|
envelopeMode | Envelope Mode | Boolean | true | Uses the one-pole envelope follower when true; false uses instantaneous amplitude detection. The editor button is Env. |
attackTime | Attack Time | 0.1 to 500.0 ms, step 0.1, skew 0.4 | 10.0 ms | Attack time for the envelope detector. |
releaseTime | Release Time | 1.0 to 2000.0 ms, step 0.1, skew 0.35 | 100.0 ms | Release time for the envelope detector. |
The envelope detector tracks the maximum of the left and right channel envelopes. Instant mode uses the maximum absolute channel amplitude for each sample.
Per-output controls
For each output N from 1 through 8:
| Parameter ID | Display name | Range | Default | What it does |
|---|---|---|---|---|
outN_gainTrim | Output N Gain Trim | -20 to +20, step 1 | 0 | Per-output trim. In Coarse mode it is a pure exponent shift. In Fine mode it uses quarter-step fractional trim. |
outN_gainMode | Output N Gain Mode | integer 0 to 1 | 0 | 0 = Coarse; 1 = Fine. The editor displays this as the C/F control. |
outN_mute | Output N Mute | Boolean | false | Mutes output N. The editor button is M. |
outN_solo | Output N Solo | Boolean | false | When any output is soloed, silences every non-soloed output. The editor button is S. |
Here N is the literal output number, so the IDs are out1_gainTrim through out8_gainTrim, out1_gainMode through out8_gainMode, out1_mute through out8_mute, and out1_solo through out8_solo. Coarse trim changes by whole exponent shifts. Fine trim divides the selected trim into quarter-step behavior using the processor’s fixed fractional ratios: positive fractional remainders use 19/16, 45/32, and 27/16; negative fractional remainders use 27/32, 45/64, and 19/32. The fractional remainder is not a literal exponent-field operation. 4 Fine steps equal 1 coarse shift; Fine +20 therefore equals +5 coarse shifts (and Fine -20 equals -5).
The GUI detail selector is stored as guiDetail, with values 0 to 2 and default 1:
0Simple: Threshold, Zone Width, Channels, and Bypass.1Standard: adds Input Gain, Bevel, and the live zone visualizer.2Full: adds Env, Attack, Release, and the FP32/FP64 readout.
Workflow / how to use it
- Connect the input bus and enable the required output buses in the host. Outputs 1 and 2 start active; outputs 3 through 8 start inactive.
- Set
Thresholdto the level where routing should change. SetZone Widthto define the symmetric band around that threshold. - Choose
Bevel Level. Use 0 for a hard two-way split; increase it for quantized adjacent-output crossfades. - Set
Channels/numOutputs, remembering that the bevel level caps the number of active zones and outputs. - Choose Envelope mode for a one-pole attack/release detector, or turn it off for instantaneous amplitude decisions. Adjust
Attack TimeandRelease Timein Full view. - Use
Input Gainto move the detector and routed signal in whole x2/x1/2 steps. Set each output’s trim mode withC/F, then adjust its gain, mute, or solo state. - Recombine all active outputs to hear the unity-sum split, or route individual output buses to different processing chains.
Use cases
- Dynamic, frequency-free splitting. Route quiet material to one bus and louder material to another without a crossover filter. The detector responds to amplitude, not spectral content.
- Parallel bus routing. Send each level zone to a separate bus for different dynamics, saturation, or mix treatment. Use the per-output trim to establish each bus ratio.
- Unity-sum zone crossfades. Use a nonzero bevel so adjacent outputs crossfade with power-of-two fractional gains. With trims and mutes at unity, recombining the active outputs preserves the base signal level.
- Transient versus sustained routing. Use Envelope mode and adjust attack/release to keep short level changes from chattering between zones; use Instant mode when the split must follow each sample’s amplitude immediately.
- Stepped output calibration. Use Coarse trim for exact doublings and halvings on a bus. For finer placement, switch that output to Fine mode and use the quarter-step trim behavior.
- Selective output auditioning. Solo one output to inspect a zone, mute unwanted buses, then clear Solo to restore the multi-output route.
Specs & requirements
- Formats: AU and VST3.
- Audio buses: one input bus and up to eight output buses. Mono and stereo input/output bus layouts are accepted; enabled output buses may be mono or stereo.
- Default bus activation: Output 1 and Output 2 active; Outputs 3 through 8 inactive.
- Processing: FP32 and FP64, selected by the host.
- Reported latency: 0 samples; tail length is 0 seconds. Envelope detection is causal.
- Platform target: macOS 10.15 or later.
- MIDI: not a MIDI effect; no MIDI input or output.
- Programs: one host program; state is stored as APVTS XML.
Notes / caveats
Input Gainand Coarse output trim use direct IEEE-754 exponent shifts. A+1shift isx2; a-1shift isx1/2. Fine mode uses fixed fractional ratios for quarter-step behavior and is intentionally different from Coarse mode.bevelLeveldetermines both the number of quantized zones (2^bevel + 1) and the maximum number of active outputs. Requesting eight outputs at bevel 0 does not create eight active DSP routes.- The base splitter’s adjacent-output gains are constructed to sum to unity. Per-output gain trims, mute, and solo are post-routing decisions and can intentionally change that sum.
- Bypass is a routing bypass: it copies input to Output 1 and silences the other output buses. It does not apply
inputGainwhile bypassed. - The envelope follower uses float level detection even when the audio callback is FP64; the audio processing path itself supports both FP32 and FP64.
- The output strips can be visible according to
numOutputswhile the DSP active count is further limited bybevelLevel. Use the bevel cap above when planning bus routing.