I've done some more work on this. I filed a bug suggesting that mpd detect PulseAudio before ALSA, but there is a reasonable objection to this: with PulseAudio configured to auto-spawn, this can result in PulseAudio being started for a user who does not want it (on a system where pulseaudio is installed but not used by default). ALSA's own pulse-audio detection code may or may not have this problem too; I'm not sure, as I don't understand PulseAudio's quite complex API. Link to bug report:
Thanks for the link about not running PulseAudio in system mode; I've added a note about this to the mpd page I cited.
So it seems that the best solution is indeed to modify mpd's /etc/mpd.conf.
There is another matter, which is that ALSA is set up to use PA by default anyway on recent Ubuntu. For some reason, it doesn't work when I start mpd normally, but does work if I start it with --no-daemon. I don't yet know whether this is a bug in mpd or libasound, but I'll file a separate bug. In any case, I would argue that it's still best to fix *this* bug by a default configuration that uses PA directly, as that avoids going through an extra stage ALSA→PA→ALSA, which is just asking for yet more bugs (like the one I've just found!) and/or performance problems.
I've done some more work on this. I filed a bug suggesting that mpd detect PulseAudio before ALSA, but there is a reasonable objection to this: with PulseAudio configured to auto-spawn, this can result in PulseAudio being started for a user who does not want it (on a system where pulseaudio is installed but not used by default). ALSA's own pulse-audio detection code may or may not have this problem too; I'm not sure, as I don't understand PulseAudio's quite complex API. Link to bug report:
http:// musicpd. org/mantis/ view.php? id=3234
Thanks for the link about not running PulseAudio in system mode; I've added a note about this to the mpd page I cited.
So it seems that the best solution is indeed to modify mpd's /etc/mpd.conf.
There is another matter, which is that ALSA is set up to use PA by default anyway on recent Ubuntu. For some reason, it doesn't work when I start mpd normally, but does work if I start it with --no-daemon. I don't yet know whether this is a bug in mpd or libasound, but I'll file a separate bug. In any case, I would argue that it's still best to fix *this* bug by a default configuration that uses PA directly, as that avoids going through an extra stage ALSA→PA→ALSA, which is just asking for yet more bugs (like the one I've just found!) and/or performance problems.