A cross-platform CLI and GUI application to easily modify osu! beatmap parameters. (osu trainer clone)
- Change the approach rate, circle size, hp drain, overall difficulty, and playback rate of any osu! beatmap
- Each field is populated upon loading a new map
- Fields can be locked to prevent this behavior on a per-field basis
- Each field is populated upon loading a new map
- AR and OD scaling
- Support for mp3, ogg, and wav audio formats
- Customize the playback rate of an audio file while keeping its pitch intact (only works for mp3 and wav formats)
- Light, Dark, osu!, and custom color schemes
- Auto and manual map selection modes
- Manually choose maps to modify using the file picker
- Automatically choose maps to modify based on the currently chosen map inside of a running osu! instance (requires gosumemory to be running)
- Tag generated maps with the "ruso-map" tag to easily find them inside osu!
- Calculate space used up by all generated maps
- Quickly remove all generated maps and audio files to free up unused space
- Generate .osz files for quickly loading maps into osu!
- Run gosumemory on startup for seamless auto select integration
- No dependence on gosumemory for auto mode
- Fancy animations/Improved UI
- Install ruso using the installation guide for your OS.
- Run ruso for the first time to initialize and create important files.
GUI users
Enter the settings tab and set your osu! songs path as well as the path of your gosumemory executable if you plan to use auto mode.
CLI users
Run
ruso --help
or check out the usage section for help info to get started.
Note that mp3 files take approximately 1s to process for every 20s of audio. If ruso appears to be hanging while generating a map just give it a few seconds and it should finish up.
Windows
If you prefer a standalone binary (recommended), download the latest release of
ruso-x86_64-pc-windows-msvc.exe
from the releases page.If you prefer an installer, download the latest release of
ruso_x.x.x_x64-setup.exe
from the releases page.
macOS
Download the latest release for your respective architecture from the releases page.
Architecture File Apple Silicon ruso-aarch64-apple-darwin
Intel ruso-x86_64-apple-darwin
Linux
Make sure you've installed the necessary dependencies.
Distribution Method Debian ruso_x.x.x_amd64.deb
from releasesArch Linux (AUR) yay -S ruso-bin
(not working yet)Any (Recommended if not listed) ruso-x86_64-unknown-linux-gnu
from releasesAny ruso_x.x.x_amd64.AppImage
from releases
WebkitGTK (Linux only)
Required by GUI to draw the main window
Distribution Method Debian sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev
Arch Linux sudo pacman -S webkit2gtk-4.1 gtk3 libappindicator-gtk3
Fedora/RHEL sudo dnf install webkit2gtk4.1-devel libappindicator-gtk3-devel
openSUSE sudo zypper install webkit2gtk3-soup2-devel libappindicator3-1
Gentoo sudo emerge --ask net-libs/webkit-gtk:4.1 dev-libs/libappindicator
Void sudo xbps-install -S libwebkit2gtk41 gtk+3-devel libappindicator
- gosumemory (optional) - Used to get map data from a running osu instance when using auto mode
All other dependencies are listed in the Cargo.toml
file and baked into the binary, no need to worry about installing them.
Ruso offers the Light, Dark, and osu! themes out of the box.
Basic custom theming is also supported by modifying the color variables in the automatically generated custom.css
file. This file will be in your respective OS' configuration directory for ruso.
Operating System | Path | Example |
---|---|---|
Windows | {FOLDERID_RoamingAppData}\ruso | C:\Users\Alice\AppData\Roaming\ruso |
macOS | $HOME/Library/Application Support/ruso | /Users/Alice/Library/Application Support/ruso |
Linux | $XDG_CONFIG_HOME/ruso or $HOME/.config/ruso | /home/alice/.config/ruso |
Paths in this example are in Linux format but will be formatted for your respective OS when running ruso --help
.
Generates osu! maps based on given args.
Running with no arguments runs the GUI version.
Usage: ruso [OPTIONS]
OPTIONS:
Options that can be enabled or disabled with (-/+) will use their respective values in '$HOME/.config/ruso/settings.json' if left unspecified.
-h, --help Print the help information and exit.
-V, --version Print version and exit.
-a, --approach-rate [AR] The approach rate of the map. Will remain unchanged if not provided.
-/+A Enable (+A) or disable (-A) approach scaling with rate. Scaling will not work if '-a' is specified.
-b, --bpm [BPM] The new bpm of the map. This will override '--rate' if provided.
-c, --circle-size [CS] The circle size of the map. Will remain unchanged if not provided.
-C, --clean Remove ALL maps and audio files generated by ruso and exit.
-d, --hp-drain [HP] The hp drain of the map. Will remain unchanged if not provided.
-/+f Enable (+f) or disable (-f) forcing the generation of audio files even if they already exist.
-g, --gosumemory Spawn gosumemory as a child process.
This will use the paths provided in '$HOME/.config/ruso/settings.json' as the gosumemory and osu! songs path respectively.
-o, --overall-difficulty [OD] The overall difficulty of the map. Will remain unchanged if not provided.
-/+O Enable (+O) or disable (-O) overall difficulty with rate. Scaling will not work if '-o' is specified.
-p, --path [PATH] The path to the osu! map.
This can be a regular path or a path the osu! songs path provided in '$HOME/.config/ruso/settings.json' as the root.
This is inferred, and the former will take precedence over the latter.
If this is not provided, ruso will attempt to connect to a running gosumemory instance with the websocket url provided in '$HOME/.config/ruso/settings.json'.
-/+P Enable (+P) or disable (-P) the rate of a song affecting its pitch.
-r, --rate [RATE] The playback rate (or speed) of the map.
This will speed up the .osu file and the corresponding audio file.
-u, --used-space Print the amount of space used by maps generated by ruso in bytes and exit.
-/+z Enable (+z) or disable (-z) generation of .osz files.
You can either build ruso into a standalone binary or bundle it into a self-contained package.
Building (Recommended)
Building ruso requires an up-to-date installation of cargo and the dependencies.
- Clone the repo and cd into it.
git clone https://github.com/Cyanistic/ruso.git cd ruso
- Use cargo to build the application.
cargo build --release
That's it! The build artifacts will be in
target/release
.
Bundling
Building ruso requires an up-to-date installation of cargo, the Dioxus CLI and the dependencies.
- Clone the repo and cd into it.
git clone https://github.com/Cyanistic/ruso.git cd ruso
- Use the Dioxus CLI to bundle the application for your platform.
dx bundle --release
That's it! The bundled build artifacts of the application will be in
dist/bundle
.
If you have any suggestions or criticisms you would like to share please post them in the discussions page as they are greatly appreciated.
- The original osu-trainer that inspired me to make a cross-platform version with more features
- libosu for making it easy to parse beatmaps (although I did have to add mania support myself)