Any song in, a playable Beat Saber map out.
Five difficulties, built from rules and top-rated human patterns, checked for parity and vision blocks. Runs on your PC.
Download · How it works · FAQ · Roadmap · Português
- Any song you like. Custom maps exist only for songs someone chose to map. Beatloom makes one for yours, from Easy to Expert+.
- Human patterns, no trained model. Swings are cut from well-rated maps on BeatSaver and chained by rules that keep wrist parity valid.
- Checked before you play. Every map comes with a report: parity errors, vision blocks, handclaps, notes per second within each difficulty's range.
- On your own computer. A local page, no account. You watch the map in 3D and send it to your Quest over Wi-Fi.
An unofficial hobby project, not affiliated with Beat Games.
- Paste a YouTube link or pick an audio file. Fix the cover, name and artist if needed.
- Listen. Beatloom finds the beats and bars, and separates drums, bass, vocals and the rest to hear each one.
- Build. It chains swings from human patterns into five difficulties, adds arcs, chains, bombs and walls, and lights in the cover colors.
- Play. Watch it in 3D, read the report and send it to the Quest.
Make maps in bulk
- Playlist. The link can be a YouTube playlist: each track is queued and becomes a map. Pasting the same playlist again does not repeat what is already done.
- Playlist in the game. With a playlist link, tick "Also create the playlist in the game": the maps show up grouped in Beat Saber under the playlist name. It needs a playlist mod (PlaylistManager) on the Quest. The playlist goes along when you send the maps; with no Quest connected, download the
.bplistfrom the list. Any map can join a playlist, or a new one: select it in the list and use "Add to playlist". Not yet tested on a real Quest. - Queue. You can pause it, clear it and remove one item. It is saved to disk: closing Beatloom does not lose it.
- Fast mode. About 6 times faster, without separating the instruments, so no held notes and no walls.
Play it your way
- New map. Before generating you choose the difficulties and the amount of notes.
- The way you play (in Settings). No notes on the top row, no note hidden behind another, how much the arms may cross (never, a little, free), and sabers and notes in the cover colors.
- Mods, optional. "I have Chroma" puts the cover palette in the lights, light by light, plus a light sign in the back with the artist and the song, and light pillars. "I have Noodle Extensions" adds a separate difficulty set (Lawless) with notes that appear and fall and the sign animated. With both off, the map depends on no mod; with them on, players without the mod see the usual lights.
See it before you play it
- Map sheet. 3D viewer, the numbers of each difficulty and the result of the checks. You can rename, download the zip, redo and delete (it goes to
saida\lixeira).
Keep improving
- Redo the maps. Select maps in the list and redo them with the current generator and preferences, or use "Redo all maps". Name, artist, cover and difficulties stay; the previous version goes to
saida\versoes. With the saved analysis it takes about 10 seconds per map. - Redo only the lights. Current environment, lights, colours and mods, with the notes exactly as they are: for one map ("⋯" menu), the selected ones or "New look for all maps".
The page opens at http://localhost:8777, in English or Portuguese, and only answers your own computer.
| Rhythm | Beats and bars by beat_this, onsets by librosa on the song and on each instrument separated by Demucs (drums, bass, vocals, rest). BPM events when the tempo varies. |
| Swings | Windows of 1, 2 and 4 beats cut from human maps, chosen by rehearsing 8 beats ahead and keeping wrist parity valid. A chorus repeats its pattern, sometimes mirrored. |
| Voice and drums | A sung syllable becomes a note, the pitch of the voice pulls the row and the cut direction, a long note becomes a held note. Kick low, snare in the middle, a strong cymbal becomes a double. |
| Vocabulary | Arcs, chains on dry attacks, stacks on accents, reset bombs after rests, decorative, dodge and crouch walls. |
| Lights | They follow the song sections (intro, verse, build-up, drop, break) and the drums, in the cover colors, in an environment picked by the mood of the song. |
| Data | Cover, name, artist, album, year and link found in the file or the video. |
Every map comes with a report. It checks: valid schema (bsmap), parity errors, vision blocks, handclaps, stacked notes, one hand's saber passing through the other hand's note, notes on the beat grid, slack at the start and end, and notes per second within the range of each difficulty.
You need Windows. Nothing has to be installed first, and no administrator account is needed.
- Download
beatloom-setup.exefrom the latest release and open it. - Wait for the first-run setup. The page shows what is missing and downloads it with a progress bar.
- Click New map, paste a YouTube link (or pick an audio file) and generate.
The installer is not signed, so Windows shows "Windows protected your PC". Click "More info", then "Run anyway". If you prefer, download the source zip from the same release, unzip it and double-click start.bat: it is the same thing without the shortcuts.
What is downloaded the first time
Everything goes inside the Beatloom folder (%LOCALAPPDATA%\Beatloom). Uninstalling or deleting the folder removes it all; the uninstaller asks whether to keep the generated maps.
| What | Size and time | Required |
|---|---|---|
| Python 3.12 and the packages | about 2 GB, several minutes | yes |
| ffmpeg and Node.js | small | yes |
| Pattern library: the note data (no audio) of 1000 well-rated BeatSaver maps | about 20 minutes, one request per second; if you close it, it resumes where it stopped | yes |
| ArcViewer (GPL-3), the 3D viewer in the page | about 80 MB | no |
| ADB, to send maps to the Quest | small | no |
The pattern library ships with neither the repository nor the release, because it is derived from other mappers' work. On a PC with an NVIDIA card start.bat installs the CUDA build of torch, otherwise the CPU build.
The first time, plug the headset in with a USB cable with developer mode on, accept the prompt inside the headset and click "Find the Quest over USB" in Settings. After that maps go over Wi-Fi. The page shows whether the Quest is reachable, which maps are already on it and which changed since they were sent, sends several at once and deletes from the headset.
Without a Quest: copy the unzipped folder to the SongCore custom levels folder.
Be realistic about this. On 18 songs of different styles (indie pop, rock, metal, electronic), all pass every automatic check. Passing means "playable, no known defect", not "fun". Few of these maps have been played in a headset.
Known limits:
- 1/4 grid only: no triplets or swing. No dot notes.
- Not yet seen in the game: chains, bombs, dodge walls, the lights of the newer environments, and the Chroma and Noodle Extensions effects (the artist sign, the pillars, light by light, the animated Lawless set). The format is validated, the result on screen is not.
- Slow songs get many double notes on Expert+ to reach the target density.
- The installer has not been tested on a clean machine yet.
- Built and tested on Windows. Other systems are not a target.
The numbers behind each generator change are in docs/RESULTADOS.md (in Portuguese).
Is it a trained AI model? No. It listens with beat tracking and source separation, then picks swings from patterns cut out of human maps, by rules. No model is trained on maps.
Do I need a Quest? No. Without one, copy the unzipped map to the SongCore custom levels folder. The Quest only makes sending easier.
Can I upload the maps to BeatSaver? Only flagged as auto-generated, as BeatSaver requires, and only with music you have the right to use. See "Please be considerate" below.
Does it need a good GPU? No. With an NVIDIA card the instrument separation runs on it; without one it runs on the CPU, slower. Fast mode skips the separation.
Something went wrong. Open an issue with what you did and what the page showed.
Maps made by this tool are automatic. If you share one, say so, and follow the rules of the site you upload to (BeatSaver requires AI-generated maps to be flagged). Only use music you have the right to use.
A local Python server (standard library only) and a plain HTML, CSS and JS page. docs/ARCHITECTURE.md explains how a map is built; docs/DEVELOPING.md has the manual install, the command line, the tools, the release steps and the folder map. The code, command-line output and the report are written in Portuguese; the web page is translated.
Parity and map checks are ported from bsmap and BeatSaber-MapCheck by Kival Evan. Beat tracking by beat_this (CPJKU), source separation by Demucs, viewer by ArcViewer (AllPoland), stage 1 swings by BeatKenja. Pattern data comes from maps published on BeatSaver by their mappers.
MIT license, see LICENSE.
If Beatloom mapped a song you love, a ★ on the repo helps other people find it.
