Smooth Skip Explained

How BPM-matched transitions work in Interlude · Last updated

Smooth Skip — called Seamless Transition in the app's settings — is Interlude's signature playback feature. Instead of a hard cut between tracks, the player analyzes the tempo of the current and next song, gradually matches their BPM, and times the handoff around the natural fade-out of the outgoing track. The result is a mix that sounds intentional rather than accidental.

This page explains exactly how it works, when it triggers, what it costs in battery and CPU, and the cases where it deliberately does nothing.

Turning it on

Open Settings → Playback → Seamless Transition. The feature is off by default. You can adjust the crossfade duration (0–12 seconds) and choose whether transitions override the app's normal gapless behaviour for same-album tracks.

How it works

The pipeline runs in four stages, all on-device. No audio is ever uploaded.

1

Tempo detection

While a track plays, a lightweight on-device analyzer computes its BPM from the audio stream. It uses an onset-strength envelope followed by autocorrelation — the same family of algorithms used by dedicated DJ software, scaled down to run efficiently on a phone CPU.

2

Tempo matching

When the current track is within the configured crossfade window of its end, the player compares the outgoing BPM to the incoming BPM. If they differ by less than a small ratio (about 12%), the player applies a time-stretch to the incoming track so its tempo gradually converges to the outgoing tempo over the transition window.

3

Fade-out detection

Rather than assume the fade-out is at a fixed offset from the end, the player detects silent and decaying sections in the outgoing audio. If a silent intro is present on the incoming track, the transition starts the incoming song right after that silence ends, so no click or jump is audible.

4

Crossfade

The two streams are mixed with an equal-power crossfade curve. The outgoing track fades to silence while the tempo-matched incoming track fades in, both over the same window. When both streams are gapless-compatible (same codec, same sample rate), the outgoing stream's tail continues to play under the incoming track's head.

What the timeline looks like

Track A ████████████████████████████████████▒▒▒▒▒▒▒░░░░ Track B ░░░░░░▒▒▒▒▒▒▒████████████████████████ Fade window ├── 8s ──┤ ▲ tempo match begins incoming BPM = outgoing BPM

In a typical transition with an 8-second fade window: the last 8 seconds of Track A overlap the first 8 seconds of Track B. Track B's tempo is stretched toward Track A's tempo during those 8 seconds, and then released back to its native tempo at the end of the fade. If Track A's tail is a decay rather than a full fade, the player aligns the start of the overlap to the silent point in that decay.

When it triggers

Seamless Transition does not always apply. It activates only when all of the following are true:

If any of those fail, the player falls back to a normal crossfade (if enabled) or a hard cut.

Battery and CPU impact

Tempo analysis is the only part of the pipeline that isn't trivial. On a modern ARM64 phone:

If you are on a low-end device, you can disable the feature with no other impact — the app otherwise behaves identically.

Limitations

Where Smooth Skip is not used

The following cases intentionally bypass the transition pipeline. This is by design, not a bug.

Frequently asked questions

Does it change the pitch of the music?

No. The time-stretch preserves pitch. A track at 120 BPM stretched to 126 BPM during the transition will sound like the same song, just slightly faster, and only for the duration of the crossfade.

Does it work with downloaded tracks?

Yes. Downloads and cached tracks are analyzed the same way as streams, and since the audio is local, transitions on downloads are typically more precise because there is no network jitter.

Can I disable it just for one track?

Not currently per-track, but per-album if the album is marked as "continuous" (gapless). A per-track override is on the roadmap for Phase 02.

Why does the transition sometimes feel one beat off?

BPM is a scalar; it doesn't capture beat phase. Two tracks can share a BPM but have their downbeats offset by half a beat, in which case the mix will feel rhythmically "uncomfortable" even though the tempo is matched. Phase-aware alignment — beat-grid detection rather than BPM alone — is a Phase 03 item.

Does it work with the equalizer and crossfade together?

Yes. The equalizer is applied before the crossfade mixer, so both tracks share the same tonal balance during the transition.

Next steps