MusicPlayerPlus
Featureful ncurses based MPD client inspired by ncmpc with integration for Beets, spectrum visualization,Bandcamp/Soundcloud, asciimatics, cantata, and more
Install / Use
/learn @doctorfree/MusicPlayerPlusREADME
MusicPlayerPlus is a character-based console and terminal window music player
- plus Beets media library management with preconfigured plugins
- plus Character-based spectrum visualizer
mppcava - plus Music Player Daemon and ALSA configuration management
- plus Mopidy Music Server with preconfigured extensions
- plus Navidrome Music Server/Streamer automated install/config/service
- plus Spotify and YouTube Music players
- plus Bliss acoustic analysis and song similarity database
- plus Essentia acoustic analysis and metadata extraction
- plus YAMS MPD Last.fm scrobbler running as a service
- plus Media fuzzy finder using
fzf - plus Album cover art download
- plus Bandcamp collections download
- plus Soundcloud favorites download
- plus Discogs user collection to markdown generator
- plus Automated setup, import and organization, metadata, playlists, ...
Table of contents
- Overview
- Quickstart
- Installation
- Post Installation Configuration
- Client Configuration (required)
- MusicPlayerPlus Configuration File
- MPD Music Directory Configuration
- Initializing the Beets media library management system
- Additional metadata analysis and retrieval
- Activating the YAMS scrobbler for Last.fm
- MPD Audio Output Configuration
- Fuzzy Finder Configuration
- Start MPD
- System verification checks
- Initialize Music Database
- Installing Mopidy
- Installing Navidrome
- Spotify and YouTube Music players
- Terminal Emulator Support
- Discogs User Collection
- MusicPlayerPlus Services and Clients
- Documentation
- Removal
- Troubleshooting
- Infrared remote control of MPD
- Screenshots
- Videos
- Building MusicPlayerPlus from source
- Contributing
Overview
The MusicPlayerPlus project provides integration and extension of several audio packages designed to stream and play music. MusicPlayerPlus interacts with the Music Player Daemon (MPD). Outputs from the MPD streaming audio server are used as MusicPlayerPlus inputs for playback and visualization. MusicPlayerPlus components are used to manage and control MPD and ALSA configuration.
MusicPlayerPlus integrations and extensions are primarily aimed at the character-based terminal user. They enable an easy to use seamlessly integrated control of audio streaming, playing, music library management, and visualization in a lightweight character-based environment.
Audio streaming is provided by the Music Player Daemon (MPD).
At the core of MusicPlayerPlus is the mpplus command which acts as
a front-end for a variety of terminal and/or tmux sessions.
The mpplus command can be used to invoke:
- The lightweight character-based MPD client,
mpcplus - One or more terminal emulators running an MPD client and visualizer
- A tmux session using the tmux session manager
tmuxp - A spectrum visualizer
- A download of album cover art for every album in a music library
- Conversion of all WAV/M4A format media in a music library to MP3 format media
- An import of a music library to the Beets media library manager
- A download of lyrics for all songs in the music library without lyrics
- Analysis and retrieval of audio-based information for media matching a query
- YAMS MPD Last.fm scrobbler activation
- Any MPD client the user wishes to run
- One of several asciimatics animations optionally accompanied by audio
- A fuzzy listing and searching of the audio library using
fzf
[Note:] Typical use of mpplus as a music player and spectrum visualizer
will invoke a tmux session to display the MPD client, spectrum visualizer, and
album cover art all in a single terminal window. MusicPlayerPlus configures
tmux with a custom key binding to exit tmux sessions. To exit an mpplus
tmux session, the Alt-x key binding can be used.
Integration is provided for:
- mpd, the Music Player Daemon
- mpcplus, character-based MPD client
- beets, media library management system
- essentia, acoustic metadata analysis and extraction
- mopidy, music server with cool extensions
- navidrome, self-hosted music server and streamer
- yams, MPD scrobbler for Last.fm
- cava, an audio spectrum visualizer
- mplayer, a media player
- fzf, interactive fuzzy finder
- asciimatics - automatically display a variety of character-based animation effects
- asciinema - automatically create ascii character-based video clips
- tmux, a terminal multiplexer
- tmuxp, a tmux session manager
- Enhanced key bindings for extended control of terminal windows and tmux sessions
- Several terminal emulators
- kitty (the default MusicPlayerPlus terminal emulator)
- cool-retro-term
- gnome-terminal
- tilix
The goal of MusicPlayerPlus is to provide the user with a sophisticated set of complex music library tools that can be integrated and managed in a fairly simple to understand fashion. Also, to make some cool looking powerful stuff happen from the command-line in a character-based environment.
Requirements
MusicPlayerPlus is compiled and packaged for installation on Linux platforms. It has been tested on the following platforms:
- Arch Linux
- CentOS Linux
- Fedora Linux
- Raspberry Pi OS
- Ubuntu Linux
Installation and initialization require admistrative privilege. The mppinit
command, executed after installing MusicPlayerPlus, installs several packages
and therefore requires access to the Internet along with administrative
privilege (e.g. sudo privilege).
Memory and storage requirements depend upon the size of the music library.
With a moderate sized music library, the Music Player Daemon can exceed a 2GB memory capacity. Therefore, 4GB or more of memory is recommended.
Storage should be sized to adequately host what will likely be a growing music library. Plan ahead and leave your library room to grow. A few hundred Gigabytes of storage might suffice for some music libraries but a Terabyte or more will provide room to grow. Testing is performed on systems with 4GB RAM and 2TB storage using a 600GB music library.
Essentia metadata extraction, Blissify similarity analysis, and transcoding all consume significant CPU resources. Testing has been performed on systems with the following CPU resources:
- 8 x Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
- 2 x Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
- 4 x ARMv7 Processor rev 3 (v7l)
All of these processors were able to handle significant loads. However, import, metadata extraction, and transcoding are all much quicker on the 8 x Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz system. Although not necessary, these infrequent operations consume much less time o
