Generate playable beatmaps for Rhythia from any local audio file — fully offline, no manual charting.
Supports MP3, OGG, WAV, FLAC (FFmpeg enables M4A/AAC and other formats).
- Automatic BPM detection and beat tracking (or set
--bpmmanually) - Difficulty scale 1–10 (generator setting, not an official star rating)
- Exports
map.rhm(Rhythia),map.sspm(SSPM v2), andssqe_raw.txt - Deterministic output via
--seed
Requires Python 3.10+.
pip install -r requirements.txtFFmpeg is optional but recommended for non-WAV/OGG/FLAC inputs.
python rhythia_automap.py "song.mp3" --difficulty 5Generated files are saved to maps/<song_name>/ next to the script
(map.rhm, map.sspm, ssqe_raw.txt, audio.ogg, report.json).
Useful options:
python rhythia_automap.py song.mp3 -d 8 --bpm 174 --preview --overwrite-d, --difficulty— 1..10 (see table below)--style— pattern style:auto(default),flow,stream,jump,chaos--bpm,--beat-offset-ms— override automatic beat tracking--offset-ms— shift notes in time--density,--max-nps— control note frequency--preview— also export OGG with ticks at note times-o, --out— custom output directory
Scale from 1 to 10. Each level has its own profile: note cap (NPS), cursor speed,
jump range, and rhythmic grid. Fractional values (e.g. 6.5) blend two levels.
| Level | Name | Feel |
|---|---|---|
| 1 | Warmup | Very sparse notes on the main beats, tiny steps, long repeated patterns |
| 2 | Easy | Beats only, short sweeps, comfortable pace |
| 3 | Casual | First off-beats, two-note subdivisions, small shapes |
| 4 | Standard | Steady beat map with occasional 8th notes, wider shapes |
| 5 | Advanced | Regular 8ths, longer motifs, occasional jumps |
| 6 | Intense | 16th-note grid unlocked, faster cursor, bigger jumps mixed in |
| 7 | Expert | Streams begin, jump patterns appear, sections change every 12 notes |
| 8 | Extreme | Dense streams, burst sections, fast cursor, heavy jump usage |
| 9 | Master | 32nd-note grid, very dense streams, near-constant movement |
| 10 | Omega | Maximum everything: 48 NPS cap, 110 cells/sec cursor, jump spam |
Levels 9–10 are intentionally extreme and may be unplayable for most people.
--style reshapes patterns without changing the difficulty scale:
auto— default; jump-pattern ratio follows the difficulty profileflow— smooth and readable: adjacent movement only, no streams, no jumpsstream— dense, evenly-spaced note trains at a comfortable jump rangejump— long deliberate jumps everywhere, short pattern sectionschaos— no motifs at all; every note is an independent random cell
Example: an easy-but-jumpy map — python rhythia_automap.py song.mp3 -d 3 --style jump
Run start_windows.bat for an interactive prompt, or run_diagnostic_windows.bat if generation fails (saves a detailed log).
Difficulty is a generator scale, not official stars. Always playtest maps before sharing.