BeatOnStep — musique au rythme de tes pas

BeatOnStep — music that matches your stride

BeatOnStep

BeatOnStep

Ta musique suit tes pas

Your music follows your stride

Tu cours. L’app sent le rythme de tes pas et propose un morceau au même tempo. Pas de compte BeatOnStep, pas de pub. Tu pars avec la musique que tu as déjà : mix démo, fichiers, YouTube, Apple Music, Spotify, Amazon Music ou Deezer.

You run. The app feels your stride and picks a track at the same tempo. No BeatOnStep account, no ads. Use the music you already have: demo mix, files, YouTube, Apple Music, Spotify, Amazon Music or Deezer.

Disponible sur Google Play et l’App Store

Available on Google Play and the App Store

Le problème

The problem

Playlist trop lente ? Trop rapide ?

Playlist too slow? Too fast?

134

tes pas · PPM your steps · PPM

≠

90

musique · BPM music · BPM

Musique hors rythme

Music off the beat

Ça casse le rythme. Tes jambes fatiguent pendant l’effort.

It breaks your rhythm. Your legs pay for it.

134

tes pas · PPM your steps · PPM

=

134

musique · BPM music · BPM

La solution BeatOnStep

The BeatOnStep fix

Un titre au rythme de tes pas.

A track at the rhythm of your steps.

PPM = pas / minute · BPM = tempo du titre

PPM = steps / minute · BPM = track tempo

Rythme

Rhythm

Trois façons de courir en musique

Three ways to run with music

Adaptatif

Adaptive

Il s’adapte à toi

It follows you

Par défaut, attend 15 s que ton nouveau rythme se confirme, puis bascule sur le bon tempo.

By default, waits 15 seconds for your new rhythm to settle, then switches to the right tempo.

Marche Walk Course rapide Fast run Sprint Sprint

Musique douce Soft music Musique rapide Fast music Musique très rapide Very fast music

Fixe

Fixed

Tu fixes le rythme

You lock the rhythm

134

tes pas · PPM your steps · PPM

134

musique · BPM music · BPM

PPM = pas / minute · BPM = tempo du titre

PPM = steps / minute · BPM = track tempo

Glisse la pastille jaune : la verte suit. Même rythme pour tes pas et la musique.

Drag the yellow pill: the green one follows. Same rhythm for your steps and the music.

Séance programmée

Planned workout

Tu programmes l’effort, la musique suit chaque phase

You plan the effort, music follows each phase

Échauffement, progression, intensité et retour au calme : BeatOnStep prépare une playlist selon le BPM cible de chaque étape, puis tu ajustes les titres à ton goût.

Warm-up, build-up, intensity and cool-down: BeatOnStep builds a playlist for each phase’s target BPM, and you can fine-tune the tracks.

Découvrir les séances programmées Explore planned workouts
  1. ÉchauffementWarm-up120 BPM
  2. ProgressionBuild-up136 BPM
  3. IntensitéIntensity154 BPM
  4. Retour au calmeCool-down119 BPM

Ta musique

Your music

Tes sources musique

Your music sources

Choisis simplement les sources que tu veux utiliser pendant tes courses.

Simply choose the music sources you want to use on your runs.

Comment utiliser chaque sourceHow to use each source
SourceSource Pour commencerTo get started
Spotify Connecte Spotify et choisis tes playlistsConnect Spotify and choose your playlists
Apple Music Connecte Apple Music et importe tes playlists · abonnement requisConnect Apple Music and import your playlists · subscription required
YouTube Music Connecte Google et importe tes playlists · Premium recommandé en arrière-planConnect Google and import your playlists · Premium recommended for background playback
Amazon Music Connecte Amazon Music dans BeatOnStepConnect Amazon Music in BeatOnStep
Deezer Connecte Deezer et choisis tes playlistsConnect Deezer and choose your playlists
Fichiers téléphonePhone files Importe tes fichiersImport your files
Mix démo Déjà prêt dans l’appReady in the app
QQ Music · Chine uniquementQQ Music · China only Disponible uniquement en Chine continentale · bêtaAvailable only in mainland China · beta

Clique une ligne pour le détail et les captures.

Click a row for details and screenshots.

Touche une source pour le détail.

Tap a source for details.

Déjà dans l’app, pour courir tout de suite.

Already in the app, so you can run right away.

Importe tes fichiers depuis Bibliothèque.

Import your files from Library.

Connecte ton compte Google dans Bibliothèque et importe tes playlists. YouTube Premium est recommandé pour la lecture en arrière-plan.

Connect your Google account in Library and import your playlists. YouTube Premium is recommended for background playback.

Connecte Apple Music dans Bibliothèque et importe tes playlists. Abonnement Apple Music requis.

Connect Apple Music in Library and import your playlists. Apple Music subscription required.

Active Amazon Music dans Réglages, puis connecte Amazon Music dans BeatOnStep.

Enable Amazon Music in Settings, then connect Amazon Music in BeatOnStep.

Connecte Spotify dans Bibliothèque, puis choisis les playlists que tu veux utiliser en course.

Connect Spotify in Library, then choose the playlists you want to use on your run.

Connecte Deezer dans Bibliothèque, puis choisis les playlists que tu veux utiliser en course.

Connect Deezer in Library, then choose the playlists you want to use on your run.

Disponible uniquement en Chine continentale. QQ Music est proposée en bêta dans BeatOnStep uniquement dans cette région. Elle ouvre l’application QQ Music ; l’import de playlists n’est pas encore disponible.

Available only in mainland China. QQ Music is offered as a beta in BeatOnStep exclusively in this region. It opens the QQ Music app; playlist import is not yet available.

En course

On a run

Quand le titre change

When the track changes

Dans Réglages : quelques secondes (défaut 15 s) ou fin du morceau — seulement s’il existe un meilleur titre dans tes sources cochées.

In Settings: a few seconds (default 15 s) or end of track — only if a better match exists in your ticked sources.

15s

Quelques secondes

A few seconds

Par défaut 15 s. Tu accélères ? L’app attend que ça tienne, puis passe au titre le plus proche.

Default 15 s. You speed up? The app waits until it holds, then picks the closest track.

Fin End

Jusqu’au bout

Play it out

Tu finis le morceau. Le suivant est déjà calé sur ton nouveau rythme.

You finish the track. The next one already matches your new rhythm.

En vidéo

Watch

Autres vidéos More videos
FAQ

Les questions d’un premier run.

First-run questions.

Comment j’installe l’app ? How do I get the app?

Cherche BeatOnStep sur Google Play ou l’App Store. Tu peux aussi utiliser les boutons de téléchargement de ce site.

Search for BeatOnStep on Google Play or the App Store. You can also use the download buttons on this site.

PPM et BPM, c’est quoi ? What’s PPM vs BPM?

PPM = tes pas par minute. BPM = le tempo du titre. BeatOnStep choisit le morceau dont le BPM est le plus proche de ton PPM, parmi tes sources cochées.

PPM = your steps per minute. BPM = the track’s tempo. BeatOnStep picks the song whose BPM is closest to your PPM, from your ticked sources.

Il me faut Spotify, YouTube, Apple Music ou Deezer ? Do I need Spotify, YouTube, Apple Music or Deezer?

Non. Le mix démo suffit. Tes fichiers téléphone aussi. Le reste est optionnel.

No. The demo mix is enough. So are your phone files. Everything else is optional.

Comment j’ajoute ma musique ? How do I add my music?

Le mix est déjà là. Le reste, dans Bibliothèque.

The mix is already there. Everything else, in Library.

YouTube, Apple Music, Spotify et Deezer — active la source, connecte ton compte dans Bibliothèque et choisis tes playlists.

YouTube, Apple Music, Spotify and Deezer — enable the source, connect your account in Library, and choose your playlists.

Faut-il YouTube Premium ? Do I need YouTube Premium?

YouTube Premium est recommandé pour la lecture en arrière-plan.

YouTube Premium is recommended for background playback.

Adaptatif, Fixe ou séance programmée ? Adaptive, Fixed or planned workout?

Adaptatif : la musique suit tes pas. Fixe : tu choisis le BPM cible. Séance programmée : le BPM cible évolue par phases, avec une playlist adaptée à chacune.

Adaptive: music follows your steps. Fixed: you set the target BPM. Planned workout: each phase has its own target BPM and tailored playlist.

Quand le titre change ? When does the track change?

Dans Réglages : quelques secondes ou fin du morceau. Seulement s’il existe un meilleur titre dans tes sources cochées.

In Settings: a few seconds or end of track. Only if a better match exists in your ticked sources.

Conseils pour la détection ? Detection tips?

Téléphone en poche. La détection avec le téléphone en mains est un peu moins précise.

Phone in your pocket. Detection with the phone in your hand is a bit less accurate.

Le − et le + à côté des pas ? The − and + next to my steps?

− : si l’app compte trop de pas → la détection devient moins sensible.

+ : elle en rate → la détection devient plus sensible.

Reset revient à la sensibilité par défaut.

−: if the app counts too many steps → detection becomes less sensitive.

+: it misses some → detection becomes more sensitive.

Reset goes back to default sensitivity.

Mes données ? My data?

Ton rythme de pas reste sur ton téléphone. Pas de compte BeatOnStep. Détail : politique de confidentialité.

Your step rhythm stays on your phone. No BeatOnStep account. Details: privacy policy.

Android ou iPhone ? Android or iPhone?

Les deux. Sur Android, Apple Music seulement si l’app est installée.

Both. On Android, Apple Music only if the app is installed.

Technique Technical
Comment BeatOnStep fonctionne en coulisses ? How does BeatOnStep work behind the scenes?

Vue d’ensemble de l’architecture : ChatGPT, GitHub, la VM BeatOnStep, Expo, les appels API et les mises à jour. Appuie sur le schéma pour l’ouvrir en grand.

Architecture overview: ChatGPT, GitHub, the BeatOnStep VM, Expo, API calls and updates. Tap the diagram to open it full size.

Schéma de l’architecture et du fonctionnement de BeatOnStep Agrandir
Diagram of the BeatOnStep architecture and flow Open full size
Comment on détecte le PPM ? How is PPM detected?
  1. Accéléro ~50 HzAccel ~50 Hz
  2. Calibration 1,25 sCalibrate 1.25 s
  3. Passe-haut + lissageHigh-pass + smooth
  4. Pics = pasPeaks = steps
  5. PPM lisséSmoothed PPM

Accéléromètre du téléphone, ~50 Hz. On prend la magnitude \(\sqrt{x^{2}+y^{2}+z^{2}}\). Environ 1,25 s de calibration, puis un passe-haut (500 ms) et un lissage (100 ms). Les pas sont des pics : fenêtre 480 ms en marche, 360 ms en course. Le PPM est la moyenne tronquée des intervalles entre pas (interne 30–300). Sans pas pendant 3,5 s, le PPM retombe à 0.

Phone accelerometer, ~50 Hz. Magnitude \(\sqrt{x^{2}+y^{2}+z^{2}}\). About 1.25 s of calibration, then a 500 ms high-pass and 100 ms smoothing. Steps are peaks: 480 ms window walking, 360 ms running. PPM is a trimmed mean of inter-step intervals (internal 30–300). No step for 3.5 s → PPM drops to 0.

Marche → course est automatique (score toutes les 750 ms, après 5 s d’échauffement). En Adaptatif, la cible est encore lissée : moyenne des 10 derniers relevés, mise à jour si ça bouge de plus de 5 PPM. Il faut 8 pas avant le premier titre.

Walk → run is automatic (score every 750 ms, after a 5 s warmup). In Adaptive, the target is smoothed again: average of the last 10 readings, updated if it moves by more than 5 PPM. 8 steps before the first track.

Adaptatif vs Fixe, sous le capot Adaptive vs Fixed, under the hood
Adaptatif Adaptive Capteur ON → PPM lissé → matching continu Sensor ON → smoothed PPM → continuous matching
Fixe Fixed Capteur OFF → cible manuelle → matching au changement Sensor OFF → manual target → match on change

Adaptatif : le capteur tourne, le matching est continu (sauf si le PPM n’a presque pas bougé). Fixe : capteur arrêté. Tu règles le PPM sur l’accueil (40–240). Le matching ne relance que quand tu changes la cible.

Adaptive: the sensor runs, matching is continuous (unless PPM barely moved). Fixed: sensor off. You set PPM on Home (40–240). Matching only reruns when you change the target.

D’où vient le BPM, par source ? Where does BPM come from, per source?
  1. Mix : déjà taguéMix: pre-tagged
  2. Musiques téléphone : analyse ~90 sPhone music: ~90 s analysis
  3. YouTube : saisie / détectionYouTube: enter / detect
  4. Apple Music : saisie / détectionApple Music: enter / detect
  5. Spotify : saisie / détectionSpotify: enter / detect
  6. Deezer : parfois fourni, sinon saisie / détectionDeezer: sometimes provided, else enter / detect
  7. Sans BPM : ignoréNo BPM: skipped

Sans tempo, un titre importé n’entre pas dans le matching. Mix démo : déjà tagué, lecture dans BeatOnStep. Fichiers téléphone : analyse (~90 s / piste) ou saisie. YouTube, Apple Music, Spotify : saisis ou « Détecter BPM » ; lecture dans leur app. Deezer : le tempo est parfois fourni, souvent pas — même geste.

Without tempo, an imported track isn’t used for matching. Demo mix: already tagged, plays in BeatOnStep. Phone files: analysis (~90 s / track) or manual entry. YouTube, Apple Music, Spotify: enter it or “Detect BPM”; plays in their app. Deezer: tempo is sometimes provided, often not — same gesture.

Comment un titre est choisi ? How is a track chosen?
  1. Sources cochéesTicked sources
  2. Tempo connuKnown tempo
  3. Écart minimalSmallest gap
  4. Pas les 20 récentsNot last 20
  5. Hystérésis une fois lancéHysteresis once playing

Parmi les sources cochées, seulement les titres dont le tempo est connu. Pour le choix, l’app retient le tempo le plus proche de ton rythme — pas de seuil à franchir. On écarte les 20 titres les plus récents. Une fois lancé, un petit écart de rythme ne suffit pas à changer (hystérésis), pour éviter le yo-yo. Si tu forces un morceau, le matching reprend au suivant.

From ticked sources, only tracks with a known tempo. For the pick, the app takes whichever tempo is closest to your rhythm — no cutoff threshold. It skips the 20 most recent tracks. Once playing, a small rhythm wobble isn’t enough to switch (hysteresis), to avoid yo-yoing. If you force a song, matching resumes on the next one.

Attente / Fin, concrètement Wait / End, concretely
Attente Attend que ça tienne · candidat figé · crossfade 1 s Wait until it holds · frozen candidate · 1 s crossfade
Fin End On finit le morceau, puis on change Finish the track, then switch

Pas de changement tant que le titre en cours reste le plus proche. Dès qu’un autre convient mieux : Attente = on attend que ton rythme se stabilise ; le candidat est figé (anti yo-yo). Si lecture dans BeatOnStep, crossfade 1 s. Fin = on attend la fin du morceau ; bannière dans les 5 dernières secondes s’il reste un meilleur choix.

No switch while the current track is still the closest match. Once another fits better: Wait = wait until your rhythm stabilizes; the candidate is frozen (anti yo-yo). In-app playback gets a 1 s crossfade. End = wait until the track finishes; banner in the last 5 seconds if a better pick remains.

Sensibilité − / + (compteur de pas) Sensitivity − / + (step count)
− Moins de pas détectés Fewer steps detected
+ Plus de pas détectés More steps detected

Uniquement en Adaptatif, pendant la détection. Les boutons encadrent le compteur de pas. Chaque tap déplace le seuil de l’accéléromètre (échelle interne −999…+999, 0 = défaut). Badge Sensibilité + Reset. Appui long = plus vite. Persistent.

Adaptive only, while detecting. The buttons sit around the step count. Each tap moves the accelerometer threshold (internal scale −999…+999, 0 = default). Sensitivity badge + Reset. Long-press = faster. Persistent.

« Sous-estimée / Surestimée » : anciens libellés quand l’allure (min/km) était affichée — un facteur ±2 % (bornes 1/3–3) corrigeait l’allure, pas le compteur de pas. Plus dans l’UI.

“Too fast / too slow”: old labels from when pace (min/km) was shown — a ±2% factor (clamped 1/3–3) corrected pace, not the step count. No longer in the UI.

Formule PPM ↔ allure (pas affichée) PPM ↔ pace formula (not shown)

L’app n’affiche plus l’allure (min/km) : la conversion PPM + taille est trop approximative. La formule reste documentée ici pour transparence ; une calibration (ex. 100 m + GPS) pourra revenir plus tard.

The app no longer shows pace (min/km): converting PPM + height is too approximate. The formula stays documented here for transparency; a calibration (e.g. 100 m + GPS) may come back later.

\[ \mathrm{allure}=\dfrac{1000}{\mathrm{PPM}\times k\times h} \]
\[ \mathrm{PPM}=\dfrac{1000}{\mathrm{allure}\times k\times h} \]
k
0,878 — foulée calibrée
h
taille en mètres (défaut 1,70)
ex.
134 PPM à 170 cm → 5:00 min/km
\[ \mathrm{pace}=\dfrac{1000}{\mathrm{PPM}\times k\times h} \]
\[ \mathrm{PPM}=\dfrac{1000}{\mathrm{pace}\times k\times h} \]
k
0.878 — calibrated stride
h
height in meters (default 1.70)
ex.
134 PPM at 170 cm → 5:00 min/km

Un bug, une idée d’évolution, un désaccord sur la formule ?

A bug, a feature idea, a disagreement on the formula?

Forum