Music Player Daemon (MPD) is a flexible, powerful, server-side
application for playing music. Through plugins and libraries it can
play a variety of sound files while being controlled by its network
protocol.
This took more than three years (sorry for the long delay), and in
these years, many many new features have accumulated: better
multi-channel support, improved partitions, many new protocol
features, NFS4 support, …
On the development side, MPD has switched to C++20 and thus needs a
modern compiler (e.g. GCC 12). The dependency on Boost was removed,
good riddance!
Support for the Haiku operating system was removed because there was
no maintainer. macOS support got removed temporarily, but was brought
back by a new maintainer (thanks, Camille
Scholtz). The Android port is
still there, but hasn’t received enough attention to make it really
usable.
Since MPD 0.23, there were 2397 commits by 72 contributors.
There is no shortage of ideas for MPD 0.25, and unfortunately there
are too many open bug reports. I’ll try to finish MPD 0.25 faster
than 0.24, but time constraints are still difficult for
me. My orignal idea was to
finish MPD 1.0 for its 20th anniversary, but we’re already two years
past that… and the code still feels not mature enough to call it
1.0. Maybe in 2028, for MPD’s 25th anniversary?
Today, I have turned off the forum. Almost all of the traffic in the
last few years was spam; deleting it every day seemed like a waste of
time, and the problem got only worse. Those who seek support needed
to register yet an account on yet another website, which made the
forum hard to reach. The forum link now redirects to GitHub
discussions;
that also requires an account, but many people already have a GitHub
account. Those who don’t want that can still get MPD support via IRC
on libera.chat.
Last week, the MPD project has moved its IRC channel from Freenode to
Libera.Chat. This seemed necessary after
recent events at
Freenode.
Meanwhile, the original #mpd channel on Freenode was seized by
Freenode staff. Point
your IRC client to irc.libera.chat and join the new #mpd channel!
This version fixes a bug which broke compatibility with MPD versions
older than 0.21 (ncmpc requires at least MPD 0.19). The “outputs”
page can manage partitions (MPD 0.22 feature). The “search” page has
a new filter for file modification time.
It fixes bogus ReplayGain values in the mpcdec plugin which caused
distorted sound, bogus bit rate values in the two DSD plugins and a
rare build failure with glibc 2.30.
This release fixes a crash bug, a seek bug and a protocol error
message bug. Additionally, it contains several improvements for the
sidplay decoder plugin.
The command list supports multiple group levels (was
implemented improperly until version 0.20.22). There are various ALSA
specific fixes, improving xrun protection, buffer drain and DSD_U32
support. The defunct Tidal plugin has been deprecated (Tidal has
changed the protocol).
There is a new command listneighbors. Searches are faster because
unused tags will not be transferred. Abstract sockets are now
supported in the --host option.
Two minor build failure has been fixed (one with -Dlocal=no and one
with non-standard libgcrypt installation path). Two Haiku-specific
bugs have been fixed. The Qobuz/Tidal plugins now load metadata for
songs loaded from a stored playlist.
There are numerous bug fixes in the commands albumart and
tagtypes, in the simple database plugin, in the udisks storage
plugin. There is support for the “Album Artist” tag in APE tags and
the shout output plugin can use TLS.
This release fixes various bugs in the ALSA output plugin. If MPD is
started as a systemd service and no log file is configured, MPD
defaults to the journal instead of syslog.
There are three crash bug fixes in the httpd plugin (related to the
option always_on), the ALSA plugin uses less CPU with dmix, and the
broken zlib support has been fixed. A bug in the FFmpeg plugin which
caused broken sound was fixed.
In filter expressions, there are two new operators: one matches
substrings, and one uses regular expressions.
It contains the first bunch of fixes for regressions, most of them
build failures. Two important changes affect the new filter
expressions: strings can now be escaped with backslash and operator
== no longer searches substrings.
The clang compiler bug has caused many more crashes on Android, and
this release contains a more reliable workaround. Additionally, a
missing player idle event has been added and a float-to-s32
conversion bug has been fixed.
There are new commands queued, seekthrough, mount, unmount.
The search command accepts MPD 0.21 filter expressions. Command
load can be used with a range.
The protocol has seen several bug fixes, e.g. list ... group now
works properly. The curl storage plugin encodes paths. The
experimental Android app can now run as a service. There is a
workaround for a clang compiler bug which could cause crashes.
Fixes a configuration parser bug and a build failure. Building now
requires Meson 0.47 and a few obsolete options have been removed. The
“artist” page has been renamed to “library” and the tags on that page
are now configurable.
Several crash bugs and one build failure have been fixed. A good
amount of code refactoring has eliminated the GLib dependency;
instead, boost::asio is used as the new I/O event loop.
This release is a major overhaul of the UI look: colors are enabled by
default and different background colors can now be configured. The
new default color theme is supposed to make ncmpc look more friendly.
At the top, ncmpc shows a list of all pages.
ncmpc considers $XDG_CONFIG_DIR for loading its configuration file.
The old path ~/.ncmpc/config is obsolete, but will be used as
fallback.
The minimum required MPD version has been raised to 0.19.
The proxy database plugin supports more tags and a “password”
setting. Cuesheets support the non-standard “FLAC” file type. URI
schemes are case-insensitive. The Android and Windows builds now have
the curl storage plugin (for WebDAV). The Android build supports
Aarch64 and x86 CPUs.
A problem with the modified-since filter has been fixed. Pulse
streams are “corked” while paused due to “single” mode. The DSD
decoders support more MIME types and larger ID3 tags. The Opus
decoder supports the R128_ALBUM_GAIN tag. The Android and Windows
builds have the proxy database plugin.
This release fixes crash bugs in the mms input plugin and on macOS,
supports FFmpeg 4.0 (compiler warning) and implements “list … group”
in the proxy database plugin.
Two crash bugs (search screen and chat screen) and a tab completion
bug have been fixed. The look of the progress bar has been slightly
improved. ncmpc has been rewritten in C++, and the manual is now
built with Sphinx.
Gapless CUE sheet playback has been fixed, and the curl plugin now
allows authentication methods other than “Basic”. On Android and
Windows, the nfs storage plugin is now available.
Music Player Daemon0.20.17
has been released. A crash bug in the ALSA output and a rounding
error in the ALSA mixer plugin has been fixed. Real-time scheduling
with Musl has been fixed. The Android builds are now compatible with
Android version 4.0.
Change log
mpc0.29
has been released. Build with recent C compilers (GCC 7 and
clang 4.0) has been fixed. There is now the --format directive
“%prio”. The default format falls back to “performer” if there is
no “artist” tag. The outputs command now prints attributes. mpc
now uses Meson/ninja instead of autotools to build.
Change log
libmpdclient2.14
has been released. It can receive output attributes (MPD 0.21) and
has improved support for local and abstract sockets.
Change log
Update (2020/02/11) this issue has been resolved meanwhile. Cary
Audio has published the modified MPD source code.
Cary Audio sells a product called “DMS-500” which is based on MPD.
Their MPD binary has been linked with various proprietary libraries,
including the Roon RAAT SDK and a MQA decoder.
After my request for the source code, Cary Audio has sent me a tarball
with only a part of the source, and it doesn’t even compile. The most
important parts have been ripped out of that tarball. So far, Cary
Audio has not replied to my complaint.
According to the
GPLv2 section 4,
Cary Audio’s license to distribute MPD is terminated. Hence, Cary
Audio products containing MPD are illegal due to copyright violation.
This release fixes a PulseAudio plugin crash during auto-detection, a
crash bug on Haiku, database search within mount points and makes the
iso9660 archive plugin compatible with libcdio 2.0.
A crash bug after seek failure has been fixed, and two bugs related to
restoring mounts from the state file. The soxr resampler clears its
internal state after manual song change. The Android port no longer
crashes from Android 8’s seccomp filter.
It fixes state file corruption in the presence of mount points and a
Solaris build failure. Locking in all archive plugins has been
optimized to reduce xruns.
It fixes two crash bugs after connection failure, re-adds the
“lyrics_plugin_dir” compile-time option and allows detecting
libncurses without pkg-config.
It fixes problems with Unicode paths, song durations with the ffmpeg
plugin, track numbering with the gme plugin and adds
application/xml support to the curl (WebDAV) storage plugin.
It fixes random crashes when compiled with a recent clang version due
to a new compiler optimization gone wrong. Two more crash bugs were
fixed which could occur with implausible audio buffer settings.
Directory loop detection on NFS was broken because MPD truncated inode
numbers to 32 bit; now MPD uses the full 64 bit.
After the Mantis hack, I have decided to rely less on self-hosted
servers and use GitHub instead. For this, I have created the
MusicPlayerDaemon organization on GitHub
and moved my projects there. These are now the official repositories
and the official place to report bugs and feature requests.
Client developers interested in moving a project into the organization
shall drop me an email (max+github@musicpd.org).
The old git server (git.musicpd.org) and
the mantis server (bugs.musicpd.org) are
fading out. Please update your git:// URIs, e.g.:
A critical Mantis security vulnerability
was used to vandalize the MPD bug tracker through Tor (one day before
the fix was released). Much of the database has been deleted.
I could curse that it’s the usual PHP-style bug, and how I wish there
was a usable non-PHP bug tracker, but it really boils down to my
failure to set up the backup script after migrating to a new server
(which was too long ago already). D’oh!
Please help: please write new tickets, for bugs and feature requests.
And sorry for the trouble.
This release fixes GCC 7 warnings, eliminates flickering, adds
compatibility with lirc 0.9.4. DSD and floating point formats are
displayed properly. The connection to MPD is established
asynchronously, i.e. ncmpc stays responsive while waiting for the
connect.
It fixes the HTTP redirect headers in the curl input plugin, stream
tags after automatic song change, and a crash bug in the mpcdec
decoder plugin. Two build failures with old compilers/libraries have
been fixed as well.
It fixes problems with ReplayGain, the proxy database plugin, and the
playlistadd command. When playing stereo on a multi-channel-only
DAC, the two stereo channels are copied only to front-left and
front-right, while the other channels remain silent.
Again, there are various serious bug fixes for old & new bugs. The
alsa output plugin can now properly play DSD_U32 (previously
broken), and initial support for DSD_U16 was added. The recorder
output plugin had a problem with the format_path setting. A general
problem with static noise after song change was fixed. A problem with
skipping songs within a CUE sheet has been fixed. The alsa input
plugin has a crash bug fix and a major optimization, fixing buffer
overruns.
The first bug-fix release fixes several serious bugs: two crash bugs
in the curl input plugin, one crash bug in the wavpack decoder
plugin and one crash bug in the volume_normalization feature.
There are two new features: the alsa mixer plugin normalizes the
displayed value according to human ear perception (with code from
alsamixer). The new curl storage plugin allows using music from a
WebDAV share.
It fixes a queue priority artifact, enables a few paranoid systemd
security settings, and contains various fixes for the plugins
ffmpeg, pcm, sidplay and winmm.
It fixes problems with FFmpeg 3.1, non-x86 NetBSD and clang 3.9.
Support for WildMidi 0.4 was added. The PulseAudio output can now
play back 32 bit, 24 bit and floating point.
mpc 0.28 has
been released.
It improves the listall and searchplay commands, and adds a new
pause-if-playing command. The new environment variable MPC_FORMAT
is used if no other output format is specified.
Change log
ncmpc 0.25 has
been released.
It adds a new %disc% format and fixes various LyricsWiki problems.
Previously missing *.m4 files required by the configure script
have been added to the tarball.
Change log
It fixes a memory leak, a build failure with Boost 1.61, a build
failure with FFmpeg 3.1. The sidplay decoder plugin can now be
built with libsidplayfp instead of libsidplay2.
It fixes several seeking problems, a spurious crash bug, and the
replay_gain_handler "mixer" setting. With DSD, the “silence”
pattern is now 0x69 instead of 0x00.
It adds support for FFmpeg 3.0 and uses FFmpeg as a fallback plugin
instead of mad. The Opus decoder supports bigger metadata packets.
Several build failures have been fixed.
It fixes a problem with supplementary groups on glibc 2.19+, ID3
parser problems in AIFF and RIFF files, disappearing duration of
remote songs during playback, and adds support for the TAK codec in
the ffmpeg decoder plugin.
It fixes a build failure on non-Linux, a deprecated syntax in the
systemd unit, and an assertion failure with malformed UTF-8 tags
(only with --enable-debug).
It fixes a buffer overflow in the ape tag plugin, a crash in the
ffmpeg decoder and encoder plugin, limits the loop count in the
gme decoder and fixes a problem with lagging volume display after
enabling/disabling an output.
It allows the dsdiff and dsf decoders to read larger ID3 tags and
fixes loading duplicate tag types from the state file. The
despotify plugin has been removed because the underlying third-party
library is unmaintained and has been defunct for quite some time.
Again, various rare build failures have been fixed.
It fixes a bug in the curl input plugin, improves mms startup,
supports larger ID3 tags in dsdiff and dsf files and adds support
for floating point samples in the ffmpeg decoder. Several clang 3.6
compiler warnings has been fixed, as well as one build failure on
NetBSD.
It fixes bugs in the embedded CUE sheet parser, the ffmpeg decoder
plugin, the listplaylist protocol command and a whole bunch of bugs
in the NFS client. On the Windows port, a serious crash bug was
fixed.
It fixes crash and deadlock bugs in the plugins nfs, zzip,
dsdiff, dsf and opus. The mp4v2 decoder plugin had to be
removed due to a license conflict (MPL 1.1 is not compatible with the
GPL).
It fixes a crash bug that can occur on malformed file names. The
ffmpeg decoder now supports the Opus codec, and the opus decoder
recognizes more MIME types.
It fixes various bugs: a crash in the faad plugin, playback of
redirected streams and streams with query string, negative replay gain
values in the mad plugin, problems with native DSD playback. It
adds support for *.m3u8 and audio/aacp.
It fixes a crash bug with ffmpeg/libav version 11, two more crash
bugs related to seeking, and a range parser bug on certain 32 bit
architectures (such as ARM).
It fixes two build failures with the proxy database plugins and
improves stream playback with the decoder plugins audiofile,
dsdiff, dsf, faad and sndfile. Two improvements to the
“random” mode ensure that the first and second song being played are
really random.
mpc 0.26 has
been released. It fixes a crash when adding absolute paths. The
playlist command can now show the contents of stored playlists. The
search command supports --format.
It fixes a race condition on non-Linux operating systems, disturbing
the database update and more. The opus decoder plugin now properly
recognizes song durations on high-latency files.
It fixes several minor bugs in the decoder plugins ffmpeg, gme and
sndfile. Playback doesn’t get interrupted anymore when the current
song gets deleted.
It improves the previous workaround for the Raspberry Pi audio driver
bug, eliminating noise during song change. Child processes launched
by the “pipe” output plugin no longer ignore signals. Several build
failures have been fixed.
At this early stage of development, the app is not particularly
useful. There is no user interface, the service is not well
integrated into the Android operating system, and all it can do is
play HTTP streams (MP3, Vorbis, Opus, FLAC). Stay tuned for updates!
It improves the Icy metadata parser, adds support for libav
v10_alpha2 API changes and fixes two build failures: one with the
Vorbis encoder and another one on Solaris.
It fixes a crash in the pls playlist plugin and a memory leak in the
faad decoder plugin. Supplementary groups are only initalized when
MPD is started by user root.
It fixes more byte order bugs and build failures. The “curl” input
plugin now works around a libcurl bug that was fixed in
version 7.32.0. A clipping bug with resampling 24 bit audio was
fixed. The “proxy” database plugin has learned to forward the
“db_update” attribute.
It fixes more bugs: properly follow HTTP redirects on radio streams,
correct song order in PLS playlists, flush output buffer before
handling the “close” command, big-endian support.
It fixes various bugs: one playback with volume normalization enabled,
an ALSA endless loop, whitespace problems in the protocol parser and a
few networking tweaks.
Internally, the code base has been rewritten from C99 to C++11, which
improves code readability and maintainability.
Support for the Opus codec has been added, both decoder and encoder.
The protocol has been extended to allow reading arbitrary tags
(e.g. Vorbis comments). “find” and “search” can be limited to a
portion of the filesystem tree. The “volume” command has been
re-added.
Library dependencies have been updated. Various obsolete plugins have
been removed (e.g. soup, mp4ff, ffado).
Countless small improvements: turn off timer wakeups while idle to
reduce battery usage; MPD is no longer unresponsive while waiting for
a stream; improved error reporting; and so on.
The MPD website has been relaunched. Wikia has been hosting the MPD
website for a few years, but Wikia turned out to be an annoying
experience for many visitors. Lacking a real maintainer, the wiki
grew into a confusing mess over the years, making it harder and harder
to find the answer to a given problem. The goal is now to move
helpful information from the old wiki to the user manual
(which nobody knew it existed).
The previous forum went up in flames, and for a while we had nobody willing to step up and set up a new one. No longer! A fresh new forum is now available: http://forum.musicpd.org/ – the old data is gone, but signing up again takes just a minute or two.
Version 0.3.2 of Guimup is a bugfix release. The source code and amd64/i386 DEB packages are available from sourceforge. See coonsden.com for a full changelog.
Version 0.3.1 of Guimup is a bugfix release. The source code and amd64/i386 DEB packages are available from sourceforge. See coonsden.com for a full changelog.
The official mpd forum is once again available, with new tricks in place to prevent a spamfest like last time. So, if you want to talk about mpd or ask (or even answer) questions, you are welcome to join us on the forum.
Lately a change in ffmpeg introduced crashing issues in mpd. This issue has been fixed in ffmpeg and also mpd now has a fix to handle broken ffmpeg installations, so please update both. If you cannot update for any reason, you can disable ffmpeg in mpd.conf by adding “decoder { plugin “ffmpeg” enabled “no” }”.