BPM Player

Every track at one tempo.

ONE TEMPO 129 112 104 87 76 ONE TEMPO 129 112 104 87 76

Drop a folder of music, type the tempo your set runs at — 96, 124, 140, whatever it is — and the whole playlist plays at that one BPM, every track in its original key.

Download for macOS Free · 1.0.1 · Apple Silicon · 110 MB · notarized by Apple
BPM-Player

The target stays where you put it. The track changes, the tempo doesn’t.

Audition your set candidates at the same BPM.

You’re putting the list together, and every track raises the same question: does it hold up at the tempo you will actually play it at? Not the BPM it was recorded at — the one the set runs at. Today, finding out means a DAW, or a pitch fader and the arithmetic that comes with it.

Reaching a target of 115 BPM on five tracks: the old way, and BPM Player.
The old wayBPM Player
bpmfaderkeytargetkey
129−10.9 %−2.0 st115
87+32.2 % — out of range+4.8 st115
112+2.7 %+0.5 st115
104+10.6 %+1.7 st115
76+51.3 % — out of range+7.2 st115

Try it out! Drop a track here in the browser.

BPM-Player
#TitleOrig. BPM

⊺ Drop Audio Files Here (mp3 · wav · flac · m4a · ogg)

1Drop track here

2Change BPM

The same time-stretching the Mac app uses, loaded straight into this page. Your files never leave it — they are decoded in the browser and nothing is uploaded. The demo takes up to eight files at 60 MB each; the app opens a whole folder.

Where it comes up.

What it does.

01

One absolute target BPM

Type a number once, anything from 40 to 300. Every track — the one playing and every one after it — is stretched to that exact tempo. Clear the field and each track returns to its own.

02

The key doesn’t move

Time-stretching runs on a real-time audio worklet, so a track slowed from 143 to 124 keeps its original pitch. No chipmunks, no seasick detuning.

03

The BPM in the tag wins

Each row takes the BPM written in the file’s tags — the number your library already agrees on. Only untagged files go to the detector, whose estimate is marked ~ so the two never get confused. If it lands an octave off, ÷2 and ×2 fix the row in one click.

04

Dragged in, dragged back out

Drop files on the window to add them. Pull a row back out and it lands in Finder or straight on an Ableton Live track, carrying the file’s own icon on the way. What leaves the window is the original file, at its original tempo — nothing is imported, nothing is written.

05

Hold Space to hear the original tempo

Press and hold to drop back to the track’s recorded tempo, release to snap back to target — the fastest way to check whether a stretch still sounds right. Media keys work system-wide, so play, pause and skip keep working while you’re teaching from another app.

06

A reference track on top

Park the track your choreography is set to in the slot above the playlist and A/B against it with one key. It runs at the same target tempo and keeps its own position, so switching back and forth costs nothing.

Everything reachable without the mouse.

Spacehold Play at the track’s original tempo while held
Enter Play / pause
orpn Previous / next track
1 Reference track play / pause
Media keys Play, pause and skip while another app is in front
Shift+ drop Append to the playlist instead of replacing it
÷2×2 Fix a detected tempo that landed an octave off
Double-click Play that row

Get BPM Player 1.0.1

Free. Tell me where to send it and the link is in your inbox a moment later.

The download link, and a note when a version does something new. One click to stop. How your data is handled.

macOS 12 Monterey or later Apple Silicon M1 and later Signed & notarized by Apple MP3 · WAV · FLAC · AIFF · M4A · AAC · OGG · Opus

Questions

Why do you want my email address?

To find out whether this is worth building further. I make it alone, and the honest signal is whether anyone will leave an address for it — if it is worth that to you, I know it is worth more of my weekends.

Two things go to that address: the download link, and a note when a version does something it genuinely could not do before. No drip campaign, no tips series, no “we miss you” — there is no time for any of it, and you did not ask for it. What counts as worth announcing is my call, which is exactly why every mail carries an unsubscribe link. One click, no questions asked. That one is a promise.

Does it work on an Intel Mac?

Not yet — this build is Apple Silicon only (M1 and later). If you need an Intel build, say so and it can be added.

Does stretching the tempo change the pitch?

No. Tempo and pitch are separated, so a track pulled from 143 to 124 BPM stays in its original key. Very large stretches will start to sound processed — that is physics, not a setting.

Does it touch my files?

No. Tracks are read from wherever they live and played from there; nothing is copied, converted or re-tagged. The only exception is the trash button on a row, which you have to click yourself.

Why does it ask for Accessibility permission?

Only so the play, pause and next keys on your keyboard reach the app while another window is in front. Decline it and everything else keeps working.

How do updates work?

The app checks for new versions on its own and installs them on restart.

Something is broken — who do I write to?

hi@bpmplayer.com. I read it myself.

I have an idea for a feature.

Send it to hi@bpmplayer.com. No promise that it gets built — the app is meant to stay small, and most of what it does not do, it does not do by accident. A good idea can still change my mind.