A BMS player that treats binary size as the top metric and runs as a single executable with no external runtime to install.
It offers deterministic judgement driven by the audio hardware clock and a non-blocking UI.
No codec packs, C++ runtime DLLs, shader compilers, or embedded databases. One .exe runs it; the player itself is about 2.85 MB in release builds.
Judgement and note positions are computed from the number of samples the audio hardware has actually played, so frame-rate drops and lag never accumulate timing error.
File I/O and audio decoding run on background threads, and keysounds are pre-decoded to PCM at load time, so nothing is decoded at runtime during play.
Supports BMS / BME / BML / PMS and auto-detects 5, 7, 9, and 14-key (DP) charts. Handles BPM changes, #STOP, and long notes (LNOBJ/LNType1).
Hi-Speed (0.5xβ10.0x), judgement offset, lane cover, sudden, Mirror / Random / R-Random / S-Random, and Groove Β· Survival Β· EX-Hard Β· Easy gauges.
Built-in replay recording/playback (.rep), a measure fast-forward practice mode, autoplay, and a key config UI.
Judgement and rendered note positions both use AudioClock (actual samples played) as the single source of truth.
The audio callback takes commands over an SPSC ring buffer (rtrb) with no mutexes and no heap allocation.
Calls the OS-provided Direct3D 11 directly with no external crate, drawing most of the screen in one draw call from a shared atlas. Without a GPU it runs the same pipeline on WARP (the CPU rasterizer).
BMS player
Package manager CLI
Package manager GUI
Single static binaries built with opt-level="z", LTO, panic="abort", and strip (measured 2026-10-04). The embedded subset fonts (Noto Sans KR/JP, ~1.5 MB) are the main reason the build exceeds the under-1 MB goal.
Bundle a BMS folder into a standard .bmsp archive, install and version it, and apply atomic updates with delta (.bmdp) patches. Available as a CLI (bpm) and a standalone GUI (bpm-gui).
bpm import ./songs/my_song/
bpm pack ./songs/my_song/ -o my_song-1.0.0.bmsp
bpm install ./my_song-1.0.0.bmsp
bpm update patch-1.1.0.bmdp
bpm list
For now, build it yourself from the GitHub repository. (Requires the Rust toolchain on Windows.)
Run git clone https://github.com/orphera/beetle.
Run cargo build --release; executables appear in target/release/.
Register songs with bpm import <BMS folder>, then launch beetle-app.exe.
ββ to move, Enter to start, Tab for play options, F12 for key config. The default 7-key layout is LShift (scratch) + Z S X D C F V.