Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tarkah/karaoke-rs

A simple, network enabled karaoke player in Rust
https://github.com/tarkah/karaoke-rs

actix-web glium karaoke music rodio rust wasm yew

Last synced: 12 days ago
JSON representation

A simple, network enabled karaoke player in Rust

Awesome Lists containing this project

README

        







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](#setup)
- [Linux](#linux)
- [macOS](#macos)
- [Windows](#windows)
- [Build from Source](#build-from-source)
- [CLI Arguments](#cli-arguments)
- [Screenshots](#screenshots)
- [Songs Page](#songs-page)
- [Favorites Page](#favorites-page)
- [Artists Page](#artists-page)
- [Queue Page](#queue-page)
- [Player](#player)
- [Acknowledgments](#acknowledgments)

## Setup
### Linux
- Download latest [release](https://github.com/tarkah/karaoke-rs/releases/latest) 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](https://github.com/tarkah/karaoke-rs/releases/latest) 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](https://github.com/tarkah/karaoke-rs/releases/latest) 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](https://rustwasm.github.io/wasm-pack/installer/), then run:
```sh
cd frontend
npm install
npm run build
```
- Compile
```sh
cd ..
cargo build --release
```
- Binary located at `target/release/karaoke-rs`

## CLI Arguments
```
karoake-rs 0.11.1
tarkah
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 Sets a custom config file
-d, --data Sets a custom data directory
-p, --port Specify website port
--port-ws Specify a websocket port when using the web player feature
-r, --refresh-collection Specify if collection should be refreshed on startup [possible values: true,
false]
-s, --songs Sets a custom song directory
```

## Screenshots

### Songs Page
![songs](/screenshots/songs.png?raw=true)

### Favorites Page
![favorites](/screenshots/favorites.png?raw=true)

### Artists Page
![artists](/screenshots/artists.png?raw=true)

### Queue Page
![queue](/screenshots/queue.png?raw=true)

### Player
![player1](/assets/background.png?raw=true)

![player1](/screenshots/player_1.png?raw=true)

![player2](/screenshots/player_2.png?raw=true)

## Acknowledgments

- [@maxjoehnk](https://github.com/maxjoehnk) - Thanks for designing the frontend!
- [@Keavon](https://github.com/Keavon) - Thanks for helping extensively test the new frontend & web player!