if anyone is listening, I have made some more progress debugging this issue.
I started by going back to the USB configuration and testing USB Audio directly on the RPi.
Log in via ssh and use something like
$ aplay /mnt/USB/myfile
If the USB Audio is set up properly on the RPi then you should hear something nice through your USB audio system.
While doing this, i found that I couldn’t play FLAC files using aplay. I think aplay doesn’t support FLAC directly, so I converted them to WAV at the same sample rate and frequency. Then
playing 24/96K wav files via aplay works.
playing the same 24/96K wav file via Volumio works!!
So, the problem may be somewhere in the handling of the FLAC files!
Next steps: find out what is reading the FLAC files and why it might have problems.
Volumio is a web interface to mpd. So I tried using a different music playback system on the RPi. Have a look at mplayer.
Here is how I installed and tested it:
$ sudo apt-get update
$ sudo apt-get install mplayer
$ mplayer -ao alsa:device=hw=0,0 /mnt/USB/3-08-String\ Quartet\ No.\ 16,\ Op.\ 135_\ III.\ Lento\ assai,\ cantante\ e\ tranquillo.flac
(this is playing a 24/88K test file on my USB key)
Anyway - it works! Music playback is fine for all file types i have.
Next step: find out what is the significant difference between MPD and Mplayer. The most obvious place to look seems to be the decoder. MPD is using FFmpeg decoder, Mplayer is using libavcodec.
Solution:
I have manually edited the /etc/mpd.config
It now contains an entry like this:
audio_output {
type "alsa"
name "Output"
device "hw:0,0"
format "44100:16:2"
dop "no"
}
This tells mpd to re-format everything as 16/44K output before sending it out. I’m not sure if this is the same as setting the resampling options via the Volumio GUI. But anyway, it works.
Disadvantage - obviously I’m not streaming the original 24/96K hi-res files, but that’s fine for me personally.