Yet another phigros chart player.

Related tags

Command-line prpr
Overview

prpr - PhigRos Player, written in Rust

Usage

To begin with, clone the repo:

git clone https://github.com/Mivik/prpr.git && cd prpr

For compactness's sake, font.ttf used to render the text is not included in this repo. As the fallback, prpr will use the default pixel font. You could fetch font.ttf from [https://mivik.moe/prpr/font.ttf].

wget https://mivik.moe/prpr/font.ttf -O assets/font.ttf

If your chart contains textures, place them in the assets/texture folder. Now the folder structure should be like this:

prpr
├── assets
|   ├── texture
|   │   └── ...
|   ├── (font.ttf)
|   └── ...
└── ...

Finally, run prpr with your chart's path.

# .pez file can be recognized
cargo run --release --bin prpr-player mychart.pez

# ... or unzipped folder
cargo run --release --bin prpr-player ./mychart/

# Run with configuration file
cargo run --release --bin prpr-player ./mychart/ conf.yml

Chart information

info.txt and info.csv are supported. But if info.yml is provided, the other two will be ignored.

The specifications of info.yml are as below.

id: (string) (default: none)

name: (string) (default: 'UK')
difficulty: (number) (default: 10)
level: (string) (default: 'UK Lv.?')
charter: (string) (default: 'UK')
composer: (string) (default: 'UK')
illustrator: (string) (default: 'UK')

chart: (string, the path of the chart file) (default: 'chart.json')
format: (string, the format of the chart) (default: 'rpe', available: 'rpe', 'pgr', 'pec')
music: (string, the path of the music file) (default: 'music.mp3')
illustration: (string, the path of the illustration) (default: 'background.png')

aspectRatio: (float, the aspect ratio of the screen (w / h)) (default: 16 / 9)
lineLength: (float, half the length of the judge line) (default: 6)
tip: (string) (default: 'Tip: 欢迎来到 prpr!')

intro: (string, introduction to this chart) (default: empty)
tags: ([string], tags of this chart) (default: [])

Global configuration

The optional second parameter of prpr-player is the path to the configuration file. The specifications are as below.

adjustTime: (bool, whether automatical time alignment adjustment should be enabled) (default: true)
aggresive: (bool, enables aggresive optimization, may cause inconsistent render result) (default: true)
aspectRatio: (float, overrides the aspect ratio of chart) (default: none)
autoplay: (bool, enables the auto play mode) (default: true)
fixAspectRatio: (bool, forces to keep the aspect ratio specified in chart) (default: false)
interactive: (bool, whether the GUI is interactive) (default: true)
multipleHint: (bool, whether to highlight notes with the same time) (default: true)
offset: (float, global chart offset) (default: 0)
particle: (bool, should particle be enabled or not) (default: false)
playerName: (string, the name of the player) (default: 'Mivik')
playerRks: (number, the ranking score of the player) (default: 15)
speed: (float, the speed of the chart) (default: 1)
volumeMusic: (float, the volume of the music) (default: 1)
volumeSfx: (float, the volume of sound effects) (default: 1)

Acknowledgement

Some assets come from @lchzh3473.

Thanks @inokana for hints on implementation!

License

This project is licensed under GNU General Public License v3.0.

You might also like...
⚡🦀 Yet another rust system info fetcher.
⚡🦀 Yet another rust system info fetcher.

Yarsi: Yet another rust sys info fetcher ✨ Showcase requirements 🙀 cargo 🦀 install with $ curl https://sh.rustup.rs -sSf | sh installation ❤️‍🩹 Ya

YAL is Yet Another scripting Language(but worse)

YAL - Yet Another Language YAL is yet another scripting language(but worse). Syntax Basic syntax fun main() { print("Hello, World!"); } Fibonacci

Yet another command-line chat GPT frontend written in Rust.
Yet another command-line chat GPT frontend written in Rust.

gpterm Yet another command-line chat GPT frontend written in Rust. Features Stream output with typing effect Store chat messages/history Context aware

Yet another code execution engine written in Rust.
Yet another code execution engine written in Rust.

exec Yet another blazingly fast code execution engine written in Rust. Paths GET /api/v1/status GET /api/v1/runtimes POST /api/v1/execute POST /api/v1

Nerf is (yet another) rust GUI lib

NERF Nerf is (yet another) rust GUI lib. It is heavily inspired by Flutter, and is designed to build apps that could run on any plateforms, such as wi

Yet another Python environment manager.

yen The easiest Python environment manager. Create virtual environments for any Python version, without needing Python pre-installed. Installation Get

A command driven spotify player
A command driven spotify player

spotify-player Table of Contents Introduction Examples Demo Installation Requirements Spotify Connect Streaming Commands Actions Search Page Mouse sup

Calculate a player's skill level using Elo, DWZ, Ingo, TrueSkill, Glicko and Glicko-2 algorithms known from their usage in chess and online games.

skillratings Skillratings allows you to calculate the player's skill instantly in 1v1 matches or after tournaments/rating periods with a list of resul

Intuitive GTK4/LibAdwaita music player
Intuitive GTK4/LibAdwaita music player

Resonance Harmonize your listening experience with Resonance. Resonance is an intuitive music player application written in Rust & Python, with a clea

Owner
Mivik
Mivik
Yay - Yet another Yogurt - An AUR Helper written in Go

Yay Yet Another Yogurt - An AUR Helper Written in Go Help translate yay: Transifex Features Advanced dependency solving PKGBUILD downloading from ABS

J Guerreiro 8.6k Jan 1, 2023
yet another typing test, but crab flavoured

toipe A trusty terminal typing tester for the tux. Usage Install cargo install toipe Run typing test toipe looks best on a nice terminal (such as Ala

Samyak Sarnayak 431 Dec 20, 2022
Yet another fractal generator (based on glium)

Juliabrot Yet another fractal generator. Juliabrot is a Rust application using the OpenGL Framework to render in realtime. Install Rust To download Ru

Max 2 Feb 27, 2022
Yet another package manager for Rust.

Rpip Installing. Make sure you have just (packages) installed! Once you have just installed move into the root directory (where this file is) and run

null 2 Apr 27, 2022
Yet another Codeforces cli

cf-tool-rs A Rust implement for https://github.com/xalanq/cf-tool WIP. Pull Requests / Contributions are welcomed! How to Configure? Configure File sh

Woshiluo Luo 2 May 8, 2022
Yet Another Kalman Filter Implementation. As well as Lie Theory (Lie group and algebra) on SE(3). [no_std] is supported by default.

yakf - Yet Another Kalman Filter Yet Another Kalman Filter Implementation, as well as, Lie Theory (Lie group, algebra, vector) on SO(3), SE(3), SO(2),

null 7 Dec 1, 2022
Yet another lightweight and easy to use HTTP(S) server

Raptor Web server Raptor is a HTTP server written in Rust with aims to use as little memory as possible and an easy configuration. It is built on top

Volham 5 Oct 15, 2022
Yet Another Texture Packer - a small and simple CLI application to pack multiple textures/sprites into a texture atlas/sprite sheet

YATP (Yet Another Texture Packer) A small and simple CLI application to pack multiple textures/sprites into a texture atlas/sprite sheet. Installation

Petar Petrov 2 Sep 11, 2022
Yet another sort crate, porting Golang sort package to Rust.

IndexSort IndexSort Yet another sort crate (in place), porting Golang's standard sort package to Rust. Installation [dependencies] indexsort = "0.1.0"

Al Liu 4 Sep 28, 2022
🚀 Yet another repository management with auto-attaching profiles.

?? ghr Yet another repository management with auto-attaching profiles. ?? Motivation ghq is the most famous solution to resolve stress of our reposito

Naoki Ikeguchi 29 Dec 2, 2022