rhythr is an unofficial community tool that turns Rhythia
(.rhr) replays into videos. It is not affiliated with or endorsed by
Rhythia or Capo Games.
Download from the releases page, then start it and drop a replay into the window: the map downloads itself, a live preview appears and Render video does the rest. Your game install is detected on startup (the Game card reports it, and carries Detect / Locate… for installs in unusual places), so built-in skins use its own textures and colors. Rendering works without it. GPU renderer (wgpu) aiming for pixel-parity with the game, so a rendered video looks exactly like watching the replay in-game with your own skin.
Step by step, including how to export a replay and your skin from the game: the user guide.
- Windows:
rhythr_x.y.z_x64-setup.exe. Click through SmartScreen ("More info" → "Run anyway"; the installer is not code-signed). - Linux (any distro):
rhythr_x.y.z_amd64.AppImage. One self-contained file (ffmpeg included):chmod +x, run. Needs glibc 2.35+ (Ubuntu 22.04 / Debian 12 / Fedora 36 or newer, Arch, openSUSE Leap 15.6+, SteamOS 3.5+). If it won't start, install your distro'sfuse3/fusepackage (the runtime needs afusermountbinary), or run with--appimage-extract-and-run. - Debian/Ubuntu/Mint:
rhythr_x.y.z_amd64.deb(sudo apt install ./rhythr_*.deb; uses the system ffmpeg and registers the.rhrfile type). - Fedora/openSUSE:
rhythr-x.y.z-1.x86_64.rpm. Install ffmpeg separately (RPM Fusion on Fedora) or use the AppImage. - Arch-based (Arch, CachyOS, Manjaro, EndeavourOS, …): install
rhythr-binfrom the AUR. Recommended over the AppImage there: a native install against your rolling-release system libraries, no FUSE involved.
The game runs through Proton on Linux; the startup scan finds the Steam (native, Flatpak or Snap) install and reads the built-in assets from it just like on Windows.
Status: working end-to-end. Parsers, integrity check, the GPU renderer (pixel-calibrated against real footage: notes, skins, HUD, results screen) and a desktop app are functional, with Windows and Linux packages on the releases page.
Placeholder: no screenshot is committed yet.
This tool is a strict read-only renderer:
- No code path writes or re-encodes
.rhrfiles: there is no replay serializer in this codebase, and none will be accepted. - Nothing can alter cursor positions, hits, misses, timing, accuracy or mods. Only visuals are configurable (skin, camera, HUD, resolution, FPS).
- Every replay is run through an integrity check: hits/misses/accuracy are re-derived from the raw input frames and compared against the header. On mismatch the tool warns loudly and burns a "replay data inconsistent (possibly manipulated)" notice into the rendered video.
- This check (and any rendered video) is a heuristic by this tool. It is not an official Rhythia score verification.
| Crate | Purpose |
|---|---|
crates/formats |
Read-only parsers: .rhr replays (all 5 version gates), map cache JSON, .rhm |
crates/sim |
Hit registration (frame flags → per-note results), integrity check |
crates/render |
wgpu GPU renderer: scene, skins/.rhs import, HUD, results screen, video export |
crates/cli |
rhythr-cli binary: info, verify, check, frame, video |
crates/gui |
Desktop app (Tauri): preview + scrubber, HUD overrides, map auto-download, video export |
cargo run -p rhythia-cli -- info testdata/pass_long_score77.rhr
cargo run -p rhythia-cli -- verify testdata/fail_score131.rhr --map testdata/fail_map_map_json.json
cargo run -p rhythia-cli -- check testdata
# A single still frame:
cargo run -p rhythia-cli -- frame testdata/pass_long_score77.rhr \
--map testdata/pass_long_map_map_json.json --at 1:30 -o frame.png
# A video clip (frames → ffmpeg + audio; needs ffmpeg on PATH):
cargo run -p rhythia-cli -- video testdata/pass_long_score77.rhr \
--map testdata/pass_long_map_map_json.json --start 1:25 --end 1:37 -o clip.mp4The renderer runs headlessly on the GPU (Vulkan), the same wgpu backend the game itself uses. The camera model (perspective FOV, note approach, grid placement) was derived from the game's own shaders and calibrated against real footage; no game code or assets are vendored.
cargo run -p rhythia-guiDrop a .rhr anywhere in the window: the map auto-downloads from
rhythia.com (hash-verified against the replay header and cached), the
replay is integrity-checked (a "verified" / "inconsistent" badge on the
replay card), and a live GPU preview with a scrubbable timeline (health
graph + miss markers) appears. Individual HUD elements can be toggled per
user preference. Overrides persist across restarts and apply to every
render. Building the Windows installer: see
docs/WINDOWS-BUILD.md.
testdata/ holds real replays verified against the game's own database
(testdata_manifest.json). Audio/cover files are third-party content and
are not part of the repository.
The .rhr wire format was verified against three independent sources:
the official parseRhr in the rhythia.com web bundle,
yo-ru/rhrParse (MIT) and
gerhaarrd/rhr2mp4 (MIT), plus 311
local replays.
MIT. See LICENSE.