BeatCombo
← All posts

How BeatCombo Auto-Generates Charts From Your Music

2026-05-18 · BeatCombo

The hardest problem in a rhythm game is not gameplay — it is producing good charts at scale. Most rhythm games gate users behind a long, manual chart-creation workflow. BeatCombo skips that.

Step 1 — Decode

The editor uses the Web Audio API's decodeAudioData to turn your file (mp3/ogg/wav/flac/m4a) into raw PCM samples. Everything from here is signal processing.

Step 2 — BPM

The mono signal feeds into a beat tracker that searches for the most consistent inter-onset interval across the song. Output: a BPM number with a confidence score, plus a beat grid (timestamps of each beat).

Step 3 — Banded onsets

We split the spectrogram into three frequency bands — low (kick/bass), mid (melody), and high (hi-hat/cymbals) — and find onsets per band. The result is three lists of timestamps representing different "voices" in the music.

Step 4 — Difficulty-aware note placement

Three passes over the onsets produce three charts:

  • Easy — only beat-aligned onsets, mostly from the low/kick band, ~2 notes/sec target density.
  • Normal — adds mid-band melody hits, ~4 notes/sec.
  • Hard — full density across all three bands plus syncopated fills, ~7 notes/sec.

The note-placement pass also assigns lanes (7 keys: S D F space J K L) based on the band each onset came from, so songs feel musical rather than random.

Override knobs

If the auto-detected BPM is off (common with mood pieces or songs with tempo changes), the editor exposes a Manual BPM field. Type in the right tempo and regenerate.

This whole pipeline runs in your browser in 1–3 seconds for a typical 4-minute pop song. The audio never touches our servers until you hit publish.