A fast and interactive console music player written in C++ for UNIX Systems.
Supports any .mp3
, .wav
and .flac
files! (with or without embedded metadata)
Great TUI with great metadata parsing along with custom keybinds all wrapped in one!
-
Insanely fast sorting and caching system thanks to Inode data structure of filesystem and C++ libraries (lmus_cache.h)
-
Remote Caching of a directory that immediately registers in the current session
-
Ncurses library for making the beautiful and fast TUI
-
Dynamic Scrolling, string search, clean status bar and more!
-
Showcases songs sorted by artist, then albums with release years and other metadata in a clean manner
-
SFML for the audio API for smooth audio quality and features
-
Modular Code for easy usage of all SFML features
-
Pretty much all basic and advanced song controls are implemented with the exception queues
-
Songs with or without metadata are all displayed with equal song controls!
-
Custom keybinds that fit ever user's needs!!
lmusDemo.mp4
For pictures on the working application, check the misc/pictures
folder
-> A UNIX based filesystem (x86_64 arch)
-> A directory with mp3 / wav / flac
files which have proper embedded metadata (without metadata also works fine)
-> Dependencies: cmake
, ncurses
, sfml
, nlohmann-json
and ffmpeg
(for building this project)
This has only been tried and tested on Arch Linux 6.9 kernel (x86-64)
If you want to do this the hard way (without build.sh
):
- Clone this repository:
https://github.com/nots1dd/Litemus.git
- Install the required C++ libraries:
ncurses
,SFML
,nlohmann-json
(andffmpeg
in your system) - Run
cmake -S . -B build/
- Run
cmake --build build/
- If the build is successful, copy
keybinds.json
to$HOME/.config/litemus/
directory (create it if needed)
This will generate a ./build/Litemus
executable and will be able to read your custom keybinds. Run it to get the Litemus experience!
If for some reason you do not like or have cmake, there is a Makefile
for this project
-> In the current directory run: make
(sudo make
should NOT be necessary)
-> Copy keybinds.json
over to $HOME/.config/litemus/
directory
This should compile all the files and link them to a Litemus
executable. Simply run it!
-> To clean up, run: make clean
Tip:
A simpler way is to just use the
build.sh
script that does everything for you (including adding thelmus
alias to your shell rc!)NOTE: Run
chmod +x build.sh
in order for it to execute. ALWAYS BE CAREFUL OF WHAT YOU ARE EXECUTING!!
Custom keybinds are fully implemented within LiteMus, with an efficient system of parsing them (via nlohmann-json
of course)
-> When building using build.sh
, a $HOME/.config/litemus/
directory is created where the current directory's keybinds.json
is copied to
-> The $HOME/.config/litemus/keybinds.json
file can be updated as you need!
-> There is verbose output as well that lets the user know if anything went wrong while parsing
NOTE:
The code checks for the TAB, ESCAPE and ENTER special characters only!
Adding unknown fields or any special characters that might pose a security risk while parsing are taken care of
However, if there are still any form of vulnerabilities or unexpected results, feel free to open an issue!
There is currently no means of installing this on any Linux distro other than building it from source.
If you encounter any issues with building Litemus from this repository in any distro, feel free to create an issue.
Tip:
LiteMus can only dynamically window based on the initial window sizes
Hence, it is noted that it still has some major dynamic resizing issues
BEST RESULTS are seen on: 1920x1080 screen size
- Have clean windows for showing session details, lyrics view
- Possibly have an audio visualizer (text based) integrated (POSSIBLY ANOTHER PROJECT)
- Make the code more modular and easy to read, modify
- Add other audio formats (.wav, .flac)
- Have custom keybinds
This project is licensed under GNU GPL v3