From 425badd7f9c966824b37e5da23f96dc64ae5e7c2 Mon Sep 17 00:00:00 2001 From: feois <68548170+feois@users.noreply.github.com> Date: Sun, 23 Jun 2024 23:46:04 +0800 Subject: [PATCH] Update README.md --- README.md | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 119 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ae3d68e..96182d1 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,111 @@ This project is about an open-source music player built with Rust (backend) and You can simply download from [here](https://github.com/feois/music-player/releases) +### How to use + +This application is separated into two different program, the backend (Rust) and the frontend (Godot). + +The backend can run even when the frontend is closed, but you need the frontend to manage playlists. + +The backend can listen to keyboard from anywhere so even when the backend is closed you can control some functionalities. + +The controls listed below that is tagged GUI (e.g. **press some key (GUI)**) will only works when the frontend window is focused while the controls tagged Global (e.g. **press some key (Global)**) will work regardless if frontend window is focused. + +The global controls only listen to keys on the left side (i.e. Shift left, Control left, Alt left). + +### The frontend (GUI) + +![image](https://github.com/feois/music-player/assets/68548170/db915ab0-58ca-4fef-8e26-b619374bf1eb) + +- You can **press W or Up (GUI)** or **press S or Down (GUI)** to move up or down when the library is focused + - Similar feature exists for the playlist +- You can **double click (GUI)** or **press Enter (GUI)** while a song is selected to **add it into playlist** and **play it instantly** + - The **play** symbol beside the song works similarly +- Or you can also **press shift (GUI)** while you **double click (GUI)** or **press Enter (GUI)** to just **add into playlist** and not play it + - The **plus** symbol beside the song works similarly +- You can **press Space (GUI)** to **search the library** + +![image](https://github.com/feois/music-player/assets/68548170/07bf0d17-0ddd-4a5b-8464-d57a66931171) + +- When you play a song, there will be a new section under playlist that shows title, artist, album and lyrics +- You can **press H (GUI)** to hide this section +- You can also **press P (GUI)** to hide playlists +- You can **drag the circled area (GUI)** to change the size of each section +- Volume controls + - You can **click the volume button (GUI)** or **press Alt+M (Global)** to **mute or unmute** + - You can **click (GUI)** the volume bar to **set volume** + - You can also **click and drag (GUI)** the volume bar to **change volume** + - You can **scroll up or down (GUI)** or **press Alt+Up or Alt+Down (Global)** to **change volume by a step** (like +5% or -5%) +- Playback controls + - You can **click the progress bar (GUI)** to **jump to that specific position of the song** + - You can also **click and drag the progress bar (GUI)** + - You can **click the play symbol (GUI)** or **press Alt+Space (Global)** to **play or pause or resume song** + - You can **click the rewind symbol left to the play symbol (GUI)** or **press Alt+Left (Global)** to **rewind by a set duration** + - You can **click the fast forward symbol right to the play symbol (GUI)** or **press Alt+Right (Global)** to **fast forward by a set duration** + - You can **click the jump to beginning symbol left to the rewind symbol (GUI)** or **press Alt+Ctrl+Left (Global)** to **jump to the beginning of the song** or to de facto replay the song + - You can **click the jump to end symbol right to the fast forward symbol (GUI)** or **press Alt+Ctrl+Right (Global)** to **jump to the end of the song** or to de facto skip to next song + - You can **click the history symbol left to the jump to beginning symbol (GUI)** or **press Alt+Ctrl+Up (Global)** to **go back to previous song in history**, this feature works similarly to the history feature in browsers + - You can **click the stop symbol right to the jump to end symbol (GUI)** or **press Alt+Shift+Space (Global)** to **stop the playback** +- Playlist controls + - You can **click the plus symbol (GUI)** to **add a new playlist** + - You can **click the T symbol (GUI)** to **rename playlist** + - You can **click the folder symbol (GUI)** to **import a playlist**, note that you might need to reload library after importing + - You can **click the disk symbol (GUI)** to **export a playlist** + - You can **click the X symbol (GUI)** to **delete a playlist**, you cannot delete when only one playlist presents + - You can select a song and **press Delete (GUI)** to **remove a song from playlist** + - You can select a song, then **click and drag (GUI)** to **change the song's position** in the playlist + - You can select a song and **double click (GUI)** or **press Enter (GUI)** to **play it instantly** +- Automatic playback controls + - You can **click the Repeat symbol (GUI)** or **press Alt+R (Global)** to **toggle the repeat mode**, the current symbol represents the repeat mode currently used + - Repeat All mode: The playlist is repeated when finished + - Repeat One mode: The same song is replayed again and again + - No Repeat mode: The playback will stop when the playlist is finished + - Stop Every Song mode: The playback will stop every time the song is finished + - You can **click the Shuffle symbol (GUI)** or **press Alt+Shift+R (Global)** to **turn on or off the shuffle mode**, the dimmed shuffle symbol means no shuffling is currently performed + - Shuffling is fair, every song in the playlist will be guaranteed to be played once before the playlist is considered finished + - If no shuffling is enabled, the next song will be the song below the currently played song in the order of the playlist +- You can **click the reset symbol in the top left section (GUI)** to **reload the library** + +![image](https://github.com/feois/music-player/assets/68548170/bf20171e-e0fd-4543-a704-eda8775b553d) + +- You must **click Save** before closing the settings for the changes to take effect +- You can only **click Discard** to close the settings (and discard any changes at the same time) +- You can **change the libary path** in **settings**, you can either **click the path and type the desired path** or **press the folder symbol** to bring up a window that helps selecting directory + - Note that you will need to **reload library** to take effect + +### The backend + +- Closing the frontend window will not close the backend process +- You can **press Alt+E (Global)** or **click the X symbol on top left (GUI)** to **close the backend process** (and also the frontend window) +- You can **press Alt+C (Global)** to **close or open the frontend window** + +### Synchronized lyrics / Floating lyrics + +Floating lyrics is a feature that is **only available for x11**. The feature currently **only supports the SYLT frame in id3 tags (tags used by MP3)**. + +Floating lyrics are enabled by default and activates automatically when you play a song with SYLT frame. Floating lyrics will not disappear when the frontend window is closed and will stay on top of all windows. + +![image](https://github.com/feois/music-player/assets/68548170/b090a0e2-5ddf-4b3c-9b26-0e08fae69207) +![image](https://github.com/feois/music-player/assets/68548170/bf02a58f-a5a8-4f1b-9a82-cb628dc6c98b) +![image](https://github.com/feois/music-player/assets/68548170/619f8c02-f8ba-4735-b3c8-2e89658bfa43) + +You can **press Alt+H (Global)** to **show or hide the floating lyrics**. + +You can **press Alt+L+1 or Alt+L+2 or ... or Alt+L+9 (Global)** to **change the position of floating lyrics** (Note that you need to play the song after you change position to update the floating lyrics) + +![image](https://github.com/feois/music-player/assets/68548170/3c767063-27c4-403e-ae8e-d654696ae260) +![image](https://github.com/feois/music-player/assets/68548170/d6fa0b5e-5971-44cb-9920-45239e59fe40) +![image](https://github.com/feois/music-player/assets/68548170/0eb58f02-996d-454a-a2a2-0456ea2ca3e8) +![image](https://github.com/feois/music-player/assets/68548170/f6f3796e-e003-4790-8f21-bb6593f9d072) +![image](https://github.com/feois/music-player/assets/68548170/30344092-1c82-4aae-9dee-79e71a5ad19c) +![image](https://github.com/feois/music-player/assets/68548170/a8fedac4-08a1-4c0c-a413-bce4dd4be26d) +![image](https://github.com/feois/music-player/assets/68548170/dfe7af27-ec82-427d-b392-3d62b7213d72) +![image](https://github.com/feois/music-player/assets/68548170/3029f956-a5ff-4b15-ac4c-b6bc73825b64) +![image](https://github.com/feois/music-player/assets/68548170/f2926f30-a6dc-4d39-9722-4e6e3f22088e) + +You can change the margin of the floating lyrics from the edge of screen in settings of the frontend window. + + ## How to compile ### Dependencies @@ -52,10 +157,21 @@ Therefore, the recommended way is to build a custom export template yourself wit ![image](https://github.com/feois/music-player/assets/68548170/c6401b85-f128-41b5-8c84-d22a6a491aff) -## Help +## FAQ + +### I don't like the color scheme + +It is a planned feature to allow custom themes, but you can manually change the theme (It is an easy task!) in Godot and compile yourself at the moment + +### I don't like the floating lyrics' font + +You can change it in `src/lyrics.rs` and (again) compile yourself, note that it has to be in the format of [XLFD](https://en.wikipedia.org/wiki/X_logical_font_description) + +### I don't like the keybinds + +It's planned to allow changing keybinds but as I am happy with the current configuration, it will not be a priority for me, you are welcome to make a pull request tho :) -Known bugs: -- The GUI might not be successfully closed sometimes, you will need to use Task Manager (or anything similar) to terminate the program +You can change it in `src/main.rs` and compile yourself ## License