Skip to content

A simple, network enabled karaoke player in Rust

License

Notifications You must be signed in to change notification settings

tarkah/karaoke-rs

Repository files navigation

A simple, network enabled karaoke player in Rust.


Your karaoke collection can be browsed and queued from a self served website and played either natively on your computer, or remotely through any browser. Only supports MP3+G (mp3 & corresponding cdg) files.

Now includes a web player. Songs can be played from any modern browser, anywhere in the world! Use command line flag --use-web-player to enable this feature. Player is accessible from the /player page on the website and can be controlled just like the native player through commands on the queue page.

Setup

Linux

  • Download latest release or build from source
  • Run karaoke-rs --help to see all arguments
  • Place your song collection at ~/.local/share/karaoke-rs/songs, or specify location via --songs path/to/song/directory
  • Default configuration file is created at ~/.config/karaoke-rs/config.yaml. This can be copied / changed and specified via --config path/to/config.yaml
  • You may need to force disable vsync to eliminate flickering, set environment variable vblank_mode=0

macOS

  • Download latest release or build from source
  • Run karaoke-rs --help to see all arguments
  • Place your song collection at $HOME/Library/Application Support/karaoke-rs/songs, or specify location via --songs path/to/song/directory
  • Default configuration file is created at $HOME/Library/Preferences/karaoke-rs/config.yaml. This can be copied / changed and specified via --config path/to/config.yaml

Windows

  • Download latest release or build from source
  • Double click karaoke-rs.exe to run with default configuration. Run from command prompt / powershell karaoke-rs.exe --help to see all arguments
  • Place your song collection at %APPDATA%\karaoke-rs\songs, or specify location via --songs C:\path\to\song\directory
  • Default configuration file is created at %APPDATA%\karaoke-rs\config.yaml. This can be copied / changed and specified via --config C:\path\to\config.yaml
  • Ensure all paths supplied via argument are absolute from the root of the applicable drive. Relative paths appear to cause program to crash

Build from Source

  • Build frontend

First install wasm-pack, then run:

cd frontend
npm install
npm run build
  • Compile
cd ..
cargo build --release
  • Binary located at target/release/karaoke-rs

CLI Arguments

karoake-rs 0.11.1
tarkah <[email protected]>
A simple, network enabled karaoke player in Rust

USAGE:
    karaoke-rs [FLAGS] [OPTIONS]

FLAGS:
    -h, --help              Prints help information
    -w, --use-web-player    Use web player instead of native player
    -V, --version           Prints version information

OPTIONS:
    -c, --config <FILE>                Sets a custom config file
    -d, --data <DIR>                   Sets a custom data directory
    -p, --port <PORT>                  Specify website port
        --port-ws <PORT_WS>            Specify a websocket port when using the web player feature
    -r, --refresh-collection <BOOL>    Specify if collection should be refreshed on startup [possible values: true,
                                       false]
    -s, --songs <DIR>                  Sets a custom song directory

Screenshots

Songs Page

songs

Favorites Page

favorites

Artists Page

artists

Queue Page

queue

Player

player1

player1

player2

Acknowledgments

  • @maxjoehnk - Thanks for designing the frontend!
  • @Keavon - Thanks for helping extensively test the new frontend & web player!