V-PitchShift
What it is
V-PitchShift is a Fwuzeem Audio octave-only realtime pitch shifter for full-mix material. It uses WSOLA (waveform-similarity overlap-add): a variable-speed reader runs over a delay line, finds a waveform-similar landing point with normalised cross-correlation, and hides each jump with a short equal-power crossfade. It is not a formant shifter, has no pitch tracker, and does not use an FFT.
Controls & parameters
| Control | Range or choices | Default | Function |
|---|---|---|---|
| Shift | Octave Down, Off, Octave Up | Off | Selects a 0.5 reader ratio for one octave down, the latency-matched dry path, or a 2.0 reader ratio for one octave up. |
| Quality | Fast, Balanced, Smooth | Balanced | Selects the nominal WSOLA analysis window. Larger windows trade more latency for smoother low-frequency behavior. |
| Mix | 0.00 to 1.00, step 0.01, displayed as 0 to 100 percent | 1.00 (100 percent) | Linear dry/wet blend. The dry signal is delayed to the current reported latency before mixing. |
| Bypass | On/Off | Off | Fades the wet path to zero with a 10 ms ramp and leaves the latency-matched dry path active. |
Quality and latency
The analysis windows are nominal values at 48 kHz and scale with the host sample rate. The current source reports a worst-case wet-path latency of 8 + window + window/4 + window/8 + 4 samples.
| Quality | Analysis window at 48 kHz | Current reported latency at 48 kHz |
|---|---|---|
| Fast | 512 samples, about 11 ms | 716 samples, about 14.9 ms |
| Balanced | 1024 samples, about 21 ms | 1420 samples, about 29.6 ms |
| Smooth | 2048 samples, about 43 ms | 2828 samples, about 58.9 ms |
The approximately 11/21/43 ms figures are the analysis-window durations. The larger values in the last column are the host-reported latency used for plugin delay compensation and the dry ring. The editor presents the Shift choices as -1 OCT, OFF, and +1 OCT, and the Quality choices as FAST, BALANCED, and SMOOTH.
Workflow / how to use it
- Insert V-PitchShift on a mono or stereo track. The input and output layouts must match.
- Choose Fast, Balanced, or Smooth. Fast has the shortest analysis window; Smooth gives the longest window and the highest reported latency.
- Select
Octave Downfor a 0.5x pitch ratio,Octave Upfor a 2.0x ratio, orOffto hear the latency-matched dry path. - Set Mix to 100 percent for the octave-shifted signal, or lower it to blend the shifted and dry signals. The dry ring is delayed so the two paths are time-aligned to the plugin’s current reported latency.
- Use Bypass for a comparison. Engage and disengage are covered by a 10 ms wet-gain ramp rather than an abrupt wet-path switch.
- Allow the host to update plugin delay compensation after changing Quality. For a layered setup, use the same Quality setting on both instances unless different timing is intentional.
Use cases
- Octave doubling for leads: Use
Octave Upon a lead or a duplicate lead layer to add a one-octave voice. Lower Mix when the shifted voice should support rather than replace the source. - -1 octave bass layers: Use
Octave Downon a bass or instrument bus to create a low layer without asking the plugin to estimate a note or track a monophonic fundamental. - Harmonizing two instances: Run two instances with matching Quality settings, one at
Octave Downand one atOctave Up, then blend their outputs around the original. Matching the quality settings keeps their reported delays consistent. - Mix-blended octave: Keep Shift at
Octave UporOctave Downand use Mix as a parallel-style blend. At intermediate values, the dry and wet paths are latency-compensated, although the WSOLA wet lag can vary with the material. - Full-mix safety vs single-voice: Use it on a chord, loop, or full mix when a pitch tracker would be undesirable. Because WSOLA uses waveform similarity rather than a pitch estimate, it does not require a monophonic input; listen for the normal transient and splice artifacts of realtime time-domain shifting.
Specs & requirements
- Brand: Fwuzeem Audio; manufacturer code
Fwzm. - Formats: AU and VST3.
- Audio I/O: Mono or stereo input/output, with matching layouts. Stereo channels share the same jump decision, based on a mid-channel correlation search, to keep the stereo image stable. No MIDI processing is enabled.
- Sample rates: No fixed sample-rate list is declared by the plugin. Analysis windows and reported latency scale with the host sample rate relative to 48 kHz.
- Latency: Quality-dependent latency is reported to the host. The dry path is delayed by the current reported latency, and
getTailLengthSeconds()follows that latency value. - Processing: WSOLA uses 0.5x and 2.0x reader ratios, normalised cross-correlation for jump placement, Catmull-Rom interpolation, and an octave-up-only low-pass write filter near 0.22 times the sample rate.
- State: Parameters are stored as APVTS XML state. The plugin exposes one host program and does not implement preset programs.
- Platform: Workspace audio-toolbox build guidance targets macOS 10.15 or later.
Notes / caveats
- This is an octave-only WSOLA processor, not a continuous pitch shifter or formant shifter. Shift offers only one octave down, Off, and one octave up.
- There is no pitch tracker and no FFT. Jump placement uses normalised cross-correlation of recent waveform material, and both stereo channels take the same jump.
- Bypass and Shift Off still use the latency-matched dry path, so the plugin continues to incur its reported Quality latency rather than becoming a zero-latency pass-through.
- Mix is a linear crossfade, not an equal-power crossfade. Its target is smoothed over 50 ms; the wet engage/bypass gain uses a 10 ms ramp.
- Changing Quality rebuilds the WSOLA geometry, resets the delay line, and changes the reported latency. Changing between octave directions also resets the shifter state. These changes are not the same as the click-free bypass ramp.
- The fixed dry delay follows the reported worst-case latency, while the WSOLA wet lag can vary with jump placement and material. Intermediate Mix settings should be checked by ear on transients.
- Processing is allocation-free after preparation for supported host block sizes. The processor has a defensive resize path if a host supplies a block larger than the prepared
samplesPerBlock.