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 any Linux platform. 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® Core™ i7-7700K CPU @ 4.20GHz
2 x Intel® Celeron® 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® Core™ i7-7700K CPU @ 4.20GHz system. Although not necessary, these infrequent operations consume much less time on a more powerful CPU.
MusicPlayerPlus Commands
MusicPlayerPlus adds the following commands to your system:
mpplus : Primary user interface, invokes an MPD client, spectrum visualizer, and more
mpcplus : Featureful NCurses MPD client, compiled with spectrum visualizer
mppinit : One-time initializaton of a user’s mpcplus configuration
mppcover : Display album cover art for currently playing song
mppdl : Downloads audio tracks from Bandcamp, Soundcloud, or a URL
mpcplus-tmux : Runs mpcplus, a visualizer, and displays album art in a tmux session
mppsplash-tmux : Runs mppsplash, a visualizer, in a tmux session
mppsplash : Fun ascii art screens using ASCIImatics animations. Ascii art commands:
mppjulia : ASCIImatics animated zoom on a Julia Set
mppplasma : ASCIImatics animated plasma graphic
mpprocks : ASCIImatics animated MusicPlayerPlus splash screen
raise_cava : Raises the mppcava spectrum visualizer window
set_term_trans : Sets an xfce4-terminal window’s transparency level
fzmp : Browse, search, and manage MPD library using
fzf
fuzzy finder andmpc
MPD clientartist_to_albumartist : Copies the Artist tag to the AlbumArtist tag
create_playlist : Create a new playlist using a Beets query
listyt : List YouTube video titles and urls
bliss-analyze : Acoustic analysis of audio files
blissify : Create MPD playlists using song similarity
essentia_streaming_extractor_music : Analyze and extract acoustic characteristics
mpd-configure : Create an MPD configuration file optimized for bit perfect playback
mpd-monitor : Display info on currently playing MPD song
The bliss-analyze
and blissify
commands are currently not available on
Raspberry Pi installations due to lack of support for that architecture in
the ffmpeg
library.
[Note:] MusicPlayerPlus functions as a front-end and management system for
any MPD/Mopidy/Navidrome client. The default MPD client is mpcplus
but any
MPD client can be configured by setting MPD_CLIENT
in ~/.config/mpprc
.
While mpcplus
is the recommended MPD client, ncmpcpp
is also supported
with some integration for visualizer data source management. Other MPD clients
available for use with MusicPlayerPlus include ncmpc, pms, vimpc, pimpd2,
nncmpp, mmtc, and mpq.
Additional detail and info can be found in the MusicPlayerPlus Wiki.