Product manual

Back to V-ShiftIn

V-ShiftIn

Fwuzeem Audio V-Series

What it is

V-ShiftIn is the transmitter in the V-ShiftIn -> V-ShiftOut linked pair. It applies the same literal IEEE-754 exponent-shift gain law locally, then publishes its selected shift count to one of 16 link channels in VShiftLink.xml. A matching V-ShiftOut reads that channel and applies the inverse shift. V-ShiftIn is therefore the send-side gain stage and link master, not a shared-memory audio router.

Controls & parameters

Parameter IDDisplay nameRange / choicesDefaultWhat it does
gainV-Shift In-20.0 to +20.0, step 1.00.0Applies the local exponent shift and publishes that shift when linking is enabled.
linkLink EnabledBooleantrueEnables the transmitter’s writes to the selected link slot.
linkIDLink Channelchoices 1 through 16 (APVTS index 0 through 15)1 (index 0)Selects the SharedGain_1 through SharedGain_16 slot written by this instance.
masterPolarityLPolarity Invert LBooleanfalseDeferred sign-bit polarity inversion for the left channel; not part of the link value.
masterPolarityRPolarity Invert RBooleanfalseDeferred sign-bit polarity inversion for the right channel; not part of the link value.

The gainSlider is a rotary control with a signed shift readout and the caption SHIFT (STEPS). The context readout uses Unity, Increase, Reduce, Line to mic level at exactly -7, and Deep attenuation at -8 and below, with an x N or 1 / N factor.

The MIC LEVEL button is a UI pad gesture, not a separate APVTS parameter. When engaged it subtracts 8 shifts from the current gain, giving x1/256, then restores the saved gain when released. The result is clamped to the gain range, so a value near -20 remains at the lower bound. A manual gain move disengages the button. The LINK CH combo selects channel 1 through 16.

The GUI detail selector is the persisted guiDetail state property, with values 0 to 2 and default 1:

  • 0 Simple: gain control and value readout.
  • 1 Standard: context readout, MIC LEVEL, and LINK CH.
  • 2 Full: Standard controls plus FP32 or FP64 host-precision readout.

The polarity button normally toggles both channels. Alt-clicking its left or right half toggles only L or R.

Workflow / how to use it

  1. Insert V-ShiftIn at the send-side gain stage.
  2. Set gain as an integer number of doublings or halvings. For example, +2 is x4 and -3 is x1/8.
  3. Enable Link Enabled and choose a channel from 1 to 16. Use the same channel on V-ShiftOut.
  4. Insert V-ShiftOut at the receive side. Keep its link enabled and match its LINK CH selection.
  5. Confirm that the receiver follows the transmitter with the inverse shift: In +n causes Out -n.
  6. Use MIC LEVEL only for the local -8-shift pad. It changes the local gain and the transmitted value while it is engaged.

Use cases

  • Send-side gain with receive-side auto-compensation. Raise the signal at V-ShiftIn by +1 shift (x2) and let a matching V-ShiftOut apply -1 shift (x1/2) later. The pair preserves the ratio while making the gain stage explicit.
  • External hardware send/return. Use a positive In shift before a hardware stage, then let Out reduce by the same number after the return. This keeps the software-side compensation tied to the transmitter rather than to a guessed dB value.
  • Sixteen independent pairs. Assign each In/Out pair a different linkID, from 1 to 16, so multiple gain-stage pairs can coexist in a project.
  • Line-to-mic staging. Engage MIC LEVEL for the fixed -8 shift (x1/256) when the receiving input expects a much lower level. Release it to restore the saved shift.
  • Ratio automation. Automate the transmitter in integer states and let the receiver follow. A +1 then -1 pair is a unity round trip; a +2 then -2 pair is x4 followed by x1/4.

Specs & requirements

  • Formats: AU and VST3.
  • Main audio bus: stereo in and stereo out. Matching mono input/output layouts are also accepted by the processor.
  • Processing: FP32 and FP64, selected by the host.
  • Reported latency: 0 samples; tail length is 0 seconds.
  • 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

  • The gain law is direct exponent-field manipulation. For a nonzero shift, normal finite (non-subnormal) samples get the exact ratio: +1 doubles and -1 halves. ScopedNoDenormals and the zero-skip handling keep subnormal inputs out of the exponent path, avoiding denormal processing. NaN and overflow cases are sanitized to finite values or clamp to the largest finite value; zero samples are skipped. Gain has no smoothing, so stepped changes can have zipper character.
  • The link transport is a JUCE PropertiesFile backed by the XML file VShiftLink.xml, guarded by an InterProcessLock. On macOS its folder is ~/Library/Application Support/VShift/. The sender reloads and writes on a 30 Hz message-thread timer; file I/O is not performed in the audio callback.
  • The link publishes gain only. L/R polarity inversion remains local and uses deferred sign-bit XOR with a zero-crossing/DC guard.
  • linkID is stored as a zero-based APVTS choice index but is presented to users as channels 1 through 16.
  • The MIC LEVEL pad is an 8-shift gesture, not a separate persisted parameter. Its saved/restored gain is bounded by -20 to +20.
  • The link file is persistent. It does not represent an audio connection, and it has no automatic project ownership or expiry. A receiver can therefore see a value left by an earlier sender; choose channels deliberately and disable linking when no transmitter should control the stage.
Back to V-ShiftIn plugin page