Skip to content

Audio Pitch Changer

Shift an audio file from one octave down to one octave up locally, then download the complete resampled result as PCM16 WAV.

Privacy: your files never leave your device. All processing happens locally in your browser.

How to use

  1. 1.Choose one browser-decodable audio file no larger than 50 MiB.
  2. 2.Set a whole-number pitch shift from -12 through +12 semitones, remembering that duration changes too.
  3. 3.Create the complete local render, review the stated duration change, and download the PCM16 WAV.

About Audio Pitch Changer

Audio Pitch Changer raises or lowers the perceived pitch of one audio file directly in the browser. Choose a whole-number shift from -12 through +12 semitones, then create and download a new PCM16 WAV. A setting of +12 raises the material by one octave, -12 lowers it by one octave, and 0 keeps the original pitch. The tool accepts common browser-decodable MP3, WAV, M4A, AAC, Ogg, WebM, and FLAC inputs. Actual codec support still depends on the current browser, so a recognized extension does not guarantee that every unusual codec profile will decode.

This implementation uses playback-rate resampling, not a time-stretching algorithm. That distinction is central to the result. Raising pitch also makes the audio shorter and faster, while lowering pitch makes it longer and slower. A +12-semitone shift uses a 2× playback rate and produces roughly half the original duration. A -12-semitone shift uses a 0.5× rate and produces roughly twice the duration. The tool never claims to preserve tempo, speech cadence, beat positions, or exact original duration. If a production requires pitch change while keeping duration fixed, use a dedicated phase-vocoder or other time-stretching workflow instead.

The pitch ratio follows twelve-tone equal temperament. For a shift of n semitones, playback rate is 2^(n/12). McGill University course material independently states that an octave has twelve equal semitones, each with a ratio of 2^(1/12), and that a semitone contains 100 cents. The W3C Web Audio specification defines the matching cents relationship in the AudioBufferSourceNode playback algorithm, where detuning contributes a factor of 2^(detune/1200). MDN documents playbackRate as a proportion of the original sampling rate and explains that values below one slow the audio, values above one speed it up, and a non-unit rate causes resampling. Eleven executable golden cases cover both octave endpoints, zero, single semitones, fifth-related intervals, and intermediate positive and negative shifts.

After decoding, the browser renders the complete result through an OfflineAudioContext at the decoded sample rate. The source playbackRate is set to the calculated equal-tempered ratio. The required output frame count is computed before allocation as the ceiling of input frames divided by that ratio. The result is accepted only when the browser returns the expected channel count, sample rate, and full frame count. There is no silent tail cut, no hidden duration cap, and no fallback that substitutes an incomplete file. If the complete output would exceed the declared channel-sample budget or the browser cannot allocate it, the tool reports an error and creates no download.

The downloadable file is newly encoded as uncompressed, interleaved, little-endian PCM16 in a RIFF/WAVE container. Floating-point samples are clipped to the legal -1 through +1 interval before conversion. This export does not preserve the original codec, compression quality, bitrate, tags, artwork, chapters, cue points, loop metadata, or container metadata. PCM16 quantization can also differ from the decoded floating-point source. Browser resampling quality is implementation-defined, and strong upward shifts can reveal aliasing or codec artifacts that were less obvious in the original. The output is useful for quick creative experiments, practice tracks, sound effects, and rough editing, not as a transparent mastering process.

Limits are explicit and checked before expensive output work. One encoded input may be at most 50 MiB. Decoded audio may be at most five minutes, eight channels, and a sample rate from 8,000 through 192,000 Hz. Input decoding is limited to 30 million channel samples, and the pitch-shifted output is separately limited to 30 million channel samples. Lowering pitch increases the required output frames, so an input that passes the decoded limit can still fail the output limit. In that case the message states that the requested shift is over budget and that nothing was truncated. Empty files, unsupported types, invalid decoded dimensions, and failed decodes are rejected.

Every input or semitone change invalidates the previous result before another render. In-flight decode and offline-render jobs are assigned an identity so an older completion cannot replace newer state. Decode contexts are closed, offline sources are stopped or disconnected when work is invalidated, and download Object URLs are revoked when replaced or when the component unmounts. Processing and sample data remain in the current browser tab. No source audio or rendered audio is uploaded to Lizely. The page intentionally does not create a blob-backed audio preview because the site media policy disallows that preview path; download the WAV and play it in a trusted local player.

Methodology & sources

Validate one local audio file, decode it with Web Audio, and reject invalid duration, channel count, sample rate, or input sample budgets. Convert an integer semitone shift to playbackRate with 2^(n/12), compute the full output frame count as ceil(inputFrames/playbackRate), and reject output above 30 million channel samples without truncation. Render through OfflineAudioContext at the decoded sample rate, assert the complete returned dimensions, and encode all rendered channels as interleaved little-endian PCM16 WAV. Job identities, alive state, context/source cleanup, and Object URL revocation prevent stale asynchronous results and resource leaks.

Frequently asked questions

Does changing pitch keep the original speed and duration?
No. This tool uses playback-rate resampling. Raising pitch speeds up and shortens the audio; lowering pitch slows down and lengthens it.
What formula converts semitones to playback rate?
The rate is 2^(semitones/12). Therefore +12 semitones is 2×, 0 is 1×, and -12 is 0.5×.
What format does the tool download?
It creates a new uncompressed PCM16 RIFF/WAVE file. Original compression, tags, artwork, and other container metadata are not preserved.
Is my audio uploaded?
No. File reading, browser decoding, offline resampling, and WAV encoding all run locally in the current tab.