외부 코덱 팩, C++ 런타임 DLL, 셰이더 컴파일러, 임베디드 DB 없이 .exe 하나로 구동됩니다. 플레이어 본체는 릴리즈 기준 약 2.85 MB입니다.
판정과 노트 위치를 오디오 하드웨어가 실제로 재생한 샘플 수에서 계산합니다. 프레임레이트 변동이나 렉에도 판정 오차가 누적되지 않습니다.
파일 I/O와 오디오 디코딩은 백그라운드 스레드가 맡고, 키음은 로딩 시점에 PCM으로 미리 디코드해 플레이 중 런타임 디코딩이 없습니다.
BMS / BME / BML / PMS를 지원하고 5키·7키·9키·14키(DP)를 자동 판별합니다. BPM 변화, #STOP, 롱노트(LNOBJ/LNType1)를 처리합니다.
Hi-Speed(0.5x~10.0x), 판정 오프셋, 레인 커버, 서든, Mirror / Random / R-Random / S-Random, Groove · Survival · EX-Hard · Easy 게이지를 지원합니다.
리플레이 녹화/재생(.rep), 마디 패스트포워드 연습 모드, 오토플레이, 키 설정 UI를 내장하고 있습니다.
판정과 렌더링 노트 위치 모두 AudioClock(실제 재생 샘플 수)을 단일 기준으로 삼습니다.
오디오 콜백은 뮤텍스나 힙 할당 없이 SPSC 링버퍼(rtrb)로 명령을 받습니다.
OS 내장 Direct3D 11을 외부 크레이트 없이 직접 호출하고, 공유 아틀라스로 화면 대부분을 드로우콜 1회에 그립니다. GPU가 없으면 WARP(CPU 래스터라이저)로 같은 파이프라인을 실행합니다.
BMS 플레이어
패키지 매니저 CLI
패키지 매니저 GUI
opt-level="z", LTO, panic="abort", strip 적용 단일 정적 바이너리 기준 (2026-10-04 측정). 내장 서브셋 폰트(Noto Sans KR/JP 약 1.5 MB)가 목표치(1 MB 미만)를 넘는 주된 이유입니다.
BMS 폴더를 표준 .bmsp 아카이브로 묶어 설치·버전 관리하고, 차분(.bmdp) 패치로 원자적 업데이트를 할 수 있습니다. CLI(bpm)와 독립형 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
현재는 GitHub 저장소에서 직접 빌드해 사용합니다. (Windows, Rust 툴체인 필요)
git clone https://github.com/orphera/beetle 로 소스를 받습니다.
cargo build --release 를 실행하면 target/release/ 에 실행 파일이 만들어집니다.
bpm import <BMS 폴더> 로 곡을 등록하고 beetle-app.exe 를 실행합니다.
↑↓ 이동 · Enter 시작 · Tab 플레이 옵션 · F12 키 설정. 7키 기본 배치는 LShift(스크래치) + Z S X D C F V 입니다.