Wow and flutter fixer
Drop a transfer with pitch drift. See the wow and flutter measured, corrected, and the speed curve before and after.
Nothing is uploaded. Everything runs in this tab with @audio/denoise-dewow.
Wow and flutter correction that shows its work
This page runs @audio/denoise-dewow, an open-source phase-vocoder implementation of the classical (non-machine-learning) technique behind tools like Celemony Capstan. It estimates the transport's instantaneous speed over time and corrects it by variable-rate resampling, in your browser. Nothing is uploaded.
Three ways to find the speed
- Track partials (default): follows several stable tones in the music at once with McAulay-Quatieri partial tracking, combining them into one speed curve. Works on anything with a few seconds of sustained pitched content.
- Lock to a reference tone: locks onto one known frequency, such as 50 or 60 Hz mains hum bleeding into the recording, or a calibration tone. Often the most accurate option when a hum is present.
- Monophonic pitch: follows a single voice or instrument's fundamental. A functional correction rather than a precise one, since real pitch inflection and mechanical wow are hard to tell apart.
What the numbers mean
Wow and flutter are reported as unweighted peak deviation from nominal speed, before and after correction: not the IEC 60386 / DIN 45507 figure, which applies a psychoacoustic weighting curve this page does not implement. Confidence is the fraction of the recording with a usable speed reading. The speed curve chart plots the source's drift in grey and the corrected result in the accent color, both against a ±3% scale.
Honest limits
This corrects speed, nothing else. Dropouts and azimuth error (a stereo channel time-skew, not a speed defect) are out of scope, as is anything with no stable tone to track: a cappella breath, pure noise, hard cuts. See the package README for the measured accuracy this method achieves on its own test signal.
Questions
What is wow and flutter?
Wow is slow pitch drift, below about 6 Hz: a stretched belt, an eccentric capstan, a warped record. Flutter is faster wobble, up to a few tens of Hz: a rough motor, a dirty pinch roller. Both come from a transport that does not turn at a constant speed.
How does it find the speed without a reference recording?
The default mode tracks stable partials in the music itself: a tone that should hold one frequency reveals the transport's actual speed when it wobbles instead (a phase-vocoder implementation of the technique behind Celemony Capstan). Reference mode does the same on one known tone, mains hum or a calibration tone; pitch mode follows a monophonic voice or instrument.
What can it not fix?
Dropouts, azimuth error (a stereo time skew, not a speed error), and anything with no stable partial or reference tone to lock onto: a cappella breath, pure noise, hard cuts. Pitch mode also cannot tell real musical vibrato from mechanical wow, so it only works well on lightly-inflected material.
Why does flutter above about 40 Hz not show up?
The speed curve is itself sampled at roughly 86 Hz (sample rate divided by the analysis hop), so anything above its Nyquist, about 43 Hz, cannot be represented at all. Most tape and turntable flutter sits below that.
Does it work on drum loops or spoken word with no held notes?
Not well. Percussion-only material gives the estimator nothing to lock onto. Pick a passage with a sustained note or vowel, or switch to reference mode if a hum or tone runs through the recording.
More audio utilities
- Extract audio from video
- Remove or replace video audio
- Audio converter
- Loudness meter and normalizer
- Noise remover
- Remove silence from audio
- Transcribe audio to text and subtitles
- Key and BPM finder
- Vocal remover
- Pitch and tempo changer
- MIDI to MP3
- Audio to MIDI and sheet music
- Tuner
- Audio recorder
- Lossless audio checker
- Spectrogram
- Room and speaker measurement