Intermediate

What Is Time Stretching?

The algorithm behind modern slow-down-without-pitch-change.

The problem it solves

Old-school slowing (vinyl, tape) couples speed and pitch: slow the mechanism, the pitch drops. For practice and transcription we usually want the opposite — slower playback that stays in the same key. Time stretching is the family of digital algorithms that decouple these two dimensions. You tell the algorithm 'make it twice as long, keep the notes where they are' and it does exactly that.

The phase vocoder approach

The original time-stretch algorithm, the phase vocoder, works by chopping the audio into very short overlapping chunks (windows), analyzing each one into its component frequencies, then reassembling the frequencies at a different playback rate. Because each chunk's internal frequencies are unchanged, the pitches are preserved. Because the chunks are spread farther apart in time, the overall duration is longer. This is the algorithmic trick that makes pitch-preserved slow-down possible.

Handling transients cleanly

Phase vocoders have one weakness: transients — sharp attacks like drum hits — get smeared by the windowing process. Modern algorithms detect transients and preserve them without stretching, then stretch the sustained parts between them. The result sounds much more natural. loope's Signalsmith Stretch backend does exactly this, which is why drum tracks still sound punchy even at 50% speed.

Pitch shifting uses the same idea

Pitch shifting without changing tempo is the inverse: you keep the duration the same but scale the frequencies inside each window. The same phase-vocoder framework, the same windowing, just a different mathematical operation on the analyzed frequencies. Many time-stretch implementations offer pitch-shift as part of the same library because the underlying machinery is shared. loope uses this integrated approach for speed + pitch control.

Try time-stretching in loope

Why it's still computationally intensive

Time-stretching involves Fourier transforms on every window, hundreds of windows per second of audio. For real-time playback of a slowed song, this has to happen fast enough to feed the audio output without stuttering. loope runs this entirely in the browser via WebAssembly, which is only feasible because modern CPUs are fast enough. Ten years ago this wasn't practical in JavaScript; today it's smooth on any modern laptop.

Try it now in Loope

Drop a track. Slow it down. Loop the tricky part. Change the key. All in your browser — no upload, no signup.

Open Loope

Frequently Asked Questions

Yes — any audio file. Music, speech, drums, vocals, full productions. Quality varies with content: sustained tones and clean recordings stretch best; dense noise and very short percussive sounds are harder.

Modern time-stretch is nearly transparent within 50–200% speed range. Beyond that (extreme slow or extreme speed-up), artifacts become audible. For practice use at 25–150%, quality is excellent.

No — time stretching works on the whole audio at once. Separating vocals from instruments requires different algorithms (source separation, usually ML-based like Demucs).

'Elastic audio' is the marketing name DAWs use for time-stretching features. Same underlying algorithm family, different branding.

It's not really about loudness, it's about content density. A solo vocal or a clean guitar stretches cleanly because there's less to track. A dense rock mix with drums, bass, multiple guitars, and vocals has more spectral content and more transients, which means more opportunities for small artifacts.