Shift pitch by semitones and cents with WSOLA, keeping the length or changing it like tape speed. Measures its own output and reports the error in cents: a perfect fifth lands within 0.5 cents.
Related reading
Initializing in your browser…
Generate band-limited test tones, sweeps and noise from 20 Hz to 20 kHz. Up to eight voices, note-name entry, binaural beats, and WAV export rendered from the same oscillators you hear.
Read text aloud with any voice your system provides, with sentence-by-sentence progress that works even for voices that report no word boundaries, and a reading-time estimate calibrated from the voice you pick.
Turn audio into a waveform image in five styles, exported as PNG or real vector SVG. Reads every channel, shows true level in dBFS, and redraws correctly at any size.
A backing track is a perfect fifth too low and must come up without getting shorter or slower.
Input
tone-440.wav (4.0000 s) - +7 semitones - keep length
Output
659.17 Hz measured against a 659.26 Hz target: -0.22 cents, still 4.0000 s
WSOLA stretches by the pitch ratio and a resample of the reciprocal amount puts the length back, so pitch moves and duration does not. The figure above is measured out of the exported file, not predicted: the tool runs its own Fourier analysis over the result and shows the error in cents. The grain loop this replaced put the same request 99.8 cents sharp and 15 dB down.
Shift pitch up or down in semitone and cent steps, keeping the original length or letting it move like tape speed. The tool then analyses what it produced with a separate FFT and shows the measured interval next to the one you asked for, so the accuracy is on screen rather than assumed. Measured end to end on a 440 Hz reference, a perfect fifth lands within 0.5 cents with the duration unchanged to the sample.
Move a backing track to a key that suits your vocal range without changing the tempo.
Pitch vocals down for a deep effect or up for a chipmunk-style result.
Nudge a recording that is slightly sharp or flat back into tune using cents, and confirm the move on the measured readout.
Duplicate a line and shift the copy by a third or fifth to rough out a harmony part.
Keeping the length while moving the pitch is done with WSOLA (waveform similarity overlap-add) followed by a resample of the reciprocal amount. The stretch slides each output frame to the position where it best continues the previous one, which is what keeps periodic material such as a sung note or a bowed string from developing a stutter, and the resample then puts the duration back where it started. Both halves come from the same engine the Voice Changer uses. Across ten intervals from a full octave down to a full octave up, the worst error is 0.58 cents with the length held to within a thousandth of a percent; driven through the browser and measured back out of the exported file, a perfect fifth reads -0.22 cents and an octave +0.47 cents.
This replaced a grain loop that advanced its read and write pointers by the same hop, so the four overlapping grains covering any output sample read the source at four different phases and largely cancelled. The damage was not subtle: asking for +7 semitones produced 698.4 Hz from a 440 Hz source instead of 659.3 Hz, which is 99.8 cents sharp, nearly a whole semitone wrong, 15 dB quieter than the input, and with more noise than signal. Asking for -5 landed 122.8 cents sharp. The vari-speed path had a separate fault: it relabelled the buffer sample rate rather than resampling the audio, then handed the encoder a rate no MP3 file can carry, so the exported file came back declaring 48 kHz for a 44.1 kHz source.
Vari-speed mode is now a genuine cubic resample that leaves the sample rate alone, so pitching up shortens the file and pitching down lengthens it, exactly as a tape machine would, and the file still declares the rate it actually has. The preview plays the processed audio in both modes, so what you hear before exporting is what the file contains; the old preview always used the browser playbackRate, which meant the length-preserving mode sounded like vari-speed right up until you downloaded something different. The stretch runs in a Web Worker with a progress bar and a Cancel button, since it is a full pass over every sample: a three minute stereo file takes a few seconds and the tab stays responsive throughout.
The Measured Result panel is the check. After each render the output is analysed by a short-time Fourier transform that knows nothing about how the audio was made, and the panel reports the source pitch, the target, what was actually measured, and the error in cents. On clearly pitched material that number should sit within a cent or two of zero. On dense or percussive material the strongest partial is not always the note, and the panel says so rather than pretending otherwise. There is still no formant correction, so large shifts move vocal-tract resonances with the pitch and take on the familiar chipmunk or deep character.
A semitone is one piano-key step. A cent is one hundredth of a semitone, used for fine pitch adjustments and tuning corrections. The tool shifts by both at once, so +7 semitones and -20 cents is a slightly flat perfect fifth.
The Measured Result panel analyses the rendered audio with a Fourier transform that is independent of the shifting code, then reports the interval it found against the interval you asked for. On a clear tone the error should be a fraction of a cent. Measured through the browser on a 440 Hz reference, a perfect fifth reads -0.22 cents and an octave +0.47 cents.
There is no formant correction, so the vocal-tract resonances move with the pitch and voices take on the usual chipmunk or deep character. The pitch itself stays accurate; it is the timbre that changes. Keep shifts modest for the most natural-sounding vocals.
Only if you choose it. Keep length holds the duration to within a thousandth of a percent and moves the pitch alone. Vari-speed resamples like a tape machine, so the clip gets shorter when pitched up and longer when pitched down, and the readout shows both lengths before you export.
Yes. The preview plays the same processed buffer that gets exported, in both modes. Only the export format differs, and WAV is a bit-for-bit write of what you heard.
Audio is decoded and processed locally with the Web Audio API. Your files are never uploaded to a server.