Nick Wood | 13 May 20:33 2016

Stickers query

Hi all,

I have a query regarding stickers, and I am hoping someone can tell me 
whether the behaviour I am seeing is by design or a bug in MPD:

Suppose I add a sticker to a song called "bookmark".

On MPD v0.16 and 0.18, if I issue the following command:

sticker find song / bookmark

...I get all songs that have the "bookmark" sticker.

However on MPD v0.19, the above never returns anything.

If I replace the URI from "/" to a proper song URI, or a partial URI, 
then the search returns results.  But with the URI set to "/" to search 
everything from the root, I get nothing, yet on earlier MPD versions the 
"/" option seems to work fine.

Any clues as to what might be going wrong? Or is this an intentional 
change in MPD v0.19?

For info, the MPD v0.19 build I am using is the Arch Linux package.

Thanks in advance,


(Continue reading)

Julien Cubizolles | 19 Apr 17:35 2016

mpd creates two ALBUMARTIST entries

I noticed that music files metadata contain both "ALBUM ARTIST" and
"ALBUMARTIST" fields. When both are set, mpd creates ALBUMARTIST fields
in the tag_cache file. That's not a problem for mpd itself but emms gets
confused and emms-cache-set-from-mpd-all creates entries without any
artist field, which makes them useless for searching.

See for instance the following metadata and the corresponding tag_cache


from metaflac:

--8<---------------cut here---------------start------------->8---
--8<---------------cut here---------------end--------------->8---


--8<---------------cut here---------------start------------->8---
song_begin: 02 The Ministry of Defence.flac
Time: 251.306000
Album: The Hope Six Demolition Project
AlbumArtist: PJ Harvey
(Continue reading)

Calimero | 16 Apr 00:58 2016

mpd takes 1.5s to execute previous/next while playing (regression)

Good evening,

I believe I have discovered an regression where mpd's response times on the control socket got slow while playing.
`mpc next`, `mpc previous` or `telnet localhost 6600` and typing next or previous can take a whole second
and a half before mpd responds with OK.

It looks as if mpd is now only polling for commands every second and a half, instead of reacting immediately.

Bisecting leads to:

45f6129ae7c2b9904b292d8b6b16ea36e9126a86 is the first bad commit
commit 45f6129ae7c2b9904b292d8b6b16ea36e9126a86
Author: Max Kellermann <max <at>>
Date:   Wed Nov 11 16:49:15 2015 +0100

    player/Control: don't stop playback in Play()

    Instead of stopping playback completely, only CANCEL the queued song
    if necessary, and use the SEEK command to play the selected song.
    SEEK will take care for current playback state.

:040000 040000 328f83ba03139b5aadce2bff3c8fdc00b3afe9f5
115a2f16251cbb5b44e3e39599319a55bd12371a M    src

diff --git a/src/player/Control.cxx b/src/player/Control.cxx
index db8a8b7..2f788ff 100644
--- a/src/player/Control.cxx
+++ b/src/player/Control.cxx
 <at>  <at>  -55,15 +55,7  <at>  <at>  PlayerControl::Play(DetachedSong *song)
        assert(song != nullptr);
(Continue reading)

TimeZlicer | 20 Mar 10:34 2016

HLS "support"

Hi *
This has worked for the last 2 months

I would not call this a fix or any form or real support, just that
changing from "mad" to "ffmpeg" does allows HLS, m3u8 to be played

Thank you for your consideration

mpd-devel mailing list
mpd-devel <at>
Joerg Raftopoulos | 5 Mar 13:37 2016

Patch to increase number of metadata

Hi all,

a patch to increase the number of metadata in MPD. More a basis for
discussion as a finished product. So far, only ID3 support.

New metadata is: conductor,remixer,bpm,contentgroup,copyright,

Here we go.

diff --git a/src/db/plugins/simple/DatabaseSave.cxx
index fa39164..980d672 100644
--- a/src/db/plugins/simple/DatabaseSave.cxx
+++ b/src/db/plugins/simple/DatabaseSave.cxx
 <at>  <at>  -42,7 +42,7  <at>  <at> 
 #define DIRECTORY_FS_CHARSET "fs_charset: "
 #define DB_TAG_PREFIX "tag: "

-static constexpr unsigned DB_FORMAT = 2;
+static constexpr unsigned DB_FORMAT = 3;

  * The oldest database format understood by this MPD version.
diff --git a/src/tag/Mask.hxx b/src/tag/Mask.hxx
index f2c51bb..7dfc5fb 100644
--- a/src/tag/Mask.hxx
+++ b/src/tag/Mask.hxx
 <at>  <at>  -22,6 +22,6  <at>  <at> 
(Continue reading)

Chris Spiegel | 13 Feb 06:22 2016

Pull request to support OptimFROG files

I've created a plugin for the OptimFROG file format
(  It's available in the branch called
optimfrog in my repository:
mpd-devel mailing list
mpd-devel <at>
Chris Spiegel | 13 Feb 06:15 2016

Pull request to support TAK files

In my git repository:

I've created a branch called tak which adds support for the TAK file
format ( to the FFmpeg plugin.  FFmpeg
already has TAK support, so it was a trivial matter of adding the
extension to the list.
mpd-devel mailing list
mpd-devel <at>
Gavin Kistner | 12 Feb 18:34 2016

idle stored_playlist does not notice filesystem changes

Using the "idle stored_playlist" command works fine when MPD is used to modify a playlist file. However, idle does not notice if the playlist file is edited by a non-MPD source.

Is there a .conf setting (similar to "auto_update" for the music_directory) that can allow MPD to notice when a playlist file is touched? If there is no such setting, is there a good reason not to add one?
-- (-, /\ \/ / /\/
mpd-devel mailing list
mpd-devel <at>
Thomas Petazzoni | 7 Feb 22:11 2016

[PATCH] check if libatomic is needed

The mpd source code uses the C++11 <atomic> functionality, which
internally is implemented using the __atomic_*() gcc built-ins. On
certain architectures, the __atomic_*() built-ins are implemented in
the libatomic library that comes with the rest of the gcc runtime. Due
to this, code using <atomic> might need to link against libatomic,
otherwise one hits build issues such as:

GlobalEvents.cxx:(.text._ZN12GlobalEvents4EmitENS_5EventE+0x14): undefined reference to `__atomic_fetch_or_4'

on an architecture like SPARC.

To solve this, a check is added to know if we need to
link against libatomic or not.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni <at>>
--- | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/ b/
index 107b45a..8e6fab7 100644
--- a/
+++ b/
 <at>  <at>  -233,6 +233,8  <at>  <at>  if test x$have_pthread_setname_np = xyes; then
 	AC_DEFINE(HAVE_PTHREAD_SETNAME_NP, 1, [Is pthread_setname_np() available?])

+AC_SEARCH_LIBS([__atomic_load_4], [atomic])
 dnl ---------------------------------------------------------------------------
 dnl Event loop selection
 dnl ---------------------------------------------------------------------------


mpd-devel mailing list
mpd-devel <at>
richard lucassen | 27 Dec 18:42 2015

mpd hangs, kill -9 necessary

Hello list,

I run Debian Wheezy with native mpd-0.16.7-2. This has worked fine for
a few years as long as I do not choose a radiostream that is broken. In that case
I need to -SIGKILL mpd. This afternoon I compiled a
vanilla 0.19.12 and the reproducible problem is still there:

Step 1: download the m3u list to the playlist dir, it's this particular playlist:

Step 2: remove the state file:

# rm -f /var/run/mpd/state (this is what I use)
removed `/var/run/mpd/state'

Step 3: start the daemon:

~/mpd/mpd-0.19.12/src>./mpd --no-daemon --stderr --verbose /etc/mpd.conf
config_file: loading file /etc/mpd.conf
server_socket: bind to '' failed: Address already in use (continuing anyway, because
binding to '[::]:6600' succeeded)
path: SetFSCharset: fs charset is: UTF-8
libsamplerate: libsamplerate converter 'Fastest Sinc Interpolator'
vorbis: Xiph.Org libVorbis 1.3.2
opus: libopus 0.9.14
sndfile: libsndfile-1.0.25
db: reading DB
curl: version 7.26.0
curl: with GnuTLS/2.12.20
state_file: Loading state file /var/run/mpd/state
errno: Failed to open /var/run/mpd/state: No such file or directory

Step 4:
$ mpc load web

client: [0] opened from
client: [0] process command list
client: process command "load "web""
client: command returned 0
client: [0] process command list returned 0
client: [0] closed

Step 5:
$ mpc play 1 (this works):

client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "play "0""
playlist: play 0:""
client: [1] command returned 0
playlist: queue song 1:""
client: [1] process command list
client: process command "status"
client: command returned 0
client: process command "currentsong"
client: command returned 0
client: [1] process command list returned 0
client: [1] closed
decoder_thread: probing plugin vorbis
decoder: audio_format=48000:f:2, seekable=false
alsa_output: opened default type=PLUG
alsa_output: format=FLOAT_LE (Float 32 bit Little Endian)
alsa_output: buffer: size=26..131072 time=541..2730667
alsa_output: period: size=13..65536 time=270..1365334
alsa_output: default period_time = buffer_time/4 = 500000/4 = 125000
alsa_output: buffer_size=24000 period_size=6000
output: opened plugin=alsa name="ALSA1" audio_format=48000:f:2
state_file: Saving state file /var/run/mpd/state

Step 6:
Now, load entry 7 (which does not work, it generates a 404), then mpd skips to the next entry (which doesn't
work either) and now mpd hangs:

client: [2] opened from
client: [2] process command "status"
client: [2] command returned 0
client: [2] process command "play "6""
playlist: play 6:""
player: played ""
client: [2] command returned 0
playlist: queue song 7:"mmsh://"
client: [2] process command list
client: process command "status"
client: command returned 0
client: process command "currentsong"
client: command returned 0
client: [2] process command list returned 0
client: [2] closed
curl: curl failed: The requested URL returned error: 404
player: played ""
playlist: play 7:"mmsh://"
playlist: queue song 8:""

It will somehow react to a command, like "next":

client: [1] opened from
client: [1] process command "next"
playlist: play 8:""

$ mpc next
error: Timeout

Now mpd hangs:

# strace -f -p 16906
Process 16906 attached with 6 threads - interrupt to quit
[pid 16912] read(10,  <unfinished ...>
[pid 16910] futex(0x8b39e60, FUTEX_WAIT_PRIVATE, 9, NULL <unfinished ...>
[pid 16909] futex(0xb2a25bd8, FUTEX_WAIT, 16912, NULL <unfinished ...>
[pid 16908] futex(0x8b2988c, FUTEX_WAIT_PRIVATE, 293, NULL <unfinished ...>
[pid 16907] clock_gettime(CLOCK_MONOTONIC, {26813, 616325802}) = 0
[pid 16907] clock_gettime(CLOCK_MONOTONIC, {26813, 616946386}) = 0
[pid 16907] epoll_wait(4,  <unfinished ...>
[pid 16906] futex(0x8b298bc, FUTEX_WAIT_PRIVATE, 33, NULL

Only a -SIGKILL will stop mpd.

Is this reproducable for you as well?



server_socket: bind to '' failed: Address already in use (continuing anyway, because
binding to '[::]:6600' succeeded)

I have seen this every time mpd starts, but mpd sees this I suppose: 
tcp6       1      1   LAST_ACK


It is better to remain silent and be thought a fool, than to speak
aloud and remove all doubt.

| Richard Lucassen, Utrecht                                        |
mpd-devel mailing list
mpd-devel <at>
Christian Hesse | 1 Dec 08:53 2015

[PATCH 1/1] fix LimitRTTIME in systemd unit file

From: Christian Hesse <mail <at>>

systemd does not understand LimitRTTIME=-1. For no limit we have to use
the string 'infinity' (see systemd.exec(5)).

Signed-off-by: Christian Hesse <mail <at>>
 systemd/ | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/systemd/ b/systemd/
index 6dce7d9..09a5ad2 100644
--- a/systemd/
+++ b/systemd/
 <at>  <at>  -8,7 +8,7  <at>  <at>  ExecStart= <at> prefix <at> /bin/mpd --no-daemon

 # allow MPD to use real-time priority 50

 # disallow writing to /usr, /bin, /sbin, ...


mpd-devel mailing list
mpd-devel <at>