How it works
Your steps set the pace
The phone counts your steps, or a heart rate strap reports them, and works out your cadence in steps a minute. It's smoothed over roughly 20 seconds so the music doesn't chase every stride.
A ladder of tempos
Every song is prepared in advance at each whole BPM within about 6% of the speed it was made at, with the pitch left alone. Together they cover 150 to 180 BPM for running. The player takes the rung nearest your cadence and plays it a fraction faster or slower to hit it exactly.
Changes land on the beat
Going up or down a rung is a quick switch between two versions of the same music, made on a beat. Every few minutes it moves to a different song on a bar line, with a two-bar crossfade. The bass lines swap over halfway so two never play at once.
Match or nudge
Match keeps the tempo on your cadence, so at 168 steps a minute you hear 168 BPM. Nudge sits up to 3% above you and creeps up by at most 2 BPM a minute, to tempt you into a slightly quicker cadence. It won't go past 180 and you can switch it off.
A simulated interval run
A short demo
Forty seconds from the run above. The cadence jumps from about 156 to about 177 and the tempo climbs after it a BPM at a time. Partway up, the first song runs out of range and hands over to another. The sound is exactly what the engine played in that test.
The music
The songs are instrumentals I generated with ElevenMusic, in styles from minimal and house to trance. A script checks each one for a steady beat and a clean loop, and lines them up with each other in key so they sit together when one fades into the next. Most needed no shifting at all. 157 songs have made it through so far, with 25 to 48 of them at each running tempo and a separate set of slower songs for walking.
Where it's at
So far
- The web test player and the Android app run the same engine and produce the same audio, to within one bit.
- In the test runs no tempo switch moves the kick drum by 10 ms or more.
- The time-stretching was redone after it distorted some melodic songs, and the new version passed a blind listening test.
- On a Pixel it played for 21 minutes with the screen locked and no dropouts.
- First real walk and run on 4 October 2026. The tempo stayed within 1 to 3 BPM of my cadence the whole way.
Still to do
- Try the quicker response setting on an interval session and tune it.
- Get the bigger library onto the phone.
- Read cadence straight from the watch. A fēnix 7 does broadcast it, but I haven't checked it keeps going during a normal run.