07-11-2022, 07:05 PM
@Igorf11, yes thats correct there is code block for DSD1024 in Audio Info but it's only meant to print what ALSA and MPD report for the audio file and playback params.
@TheOldPresbyope, Looking at the lib code it does suggest that there is no support for 1024 DSD.
I ran a few tests with the file using my Revolution DAC which claims support up to DSD512. The highest I've ever tested is DSD256 though.
First I had to switch ALSA output mode to "Direct (hw)" in Audio Config to get the file to play and then what happens is MPD and ALSA negotiate an output format based on the file and what the audio device reports its capabilities are and I end up with heavily glitched audio due to decoder DSD -> PCM conversion XRUNS.
I think if OP wants to pursue further he could post an issue in the MPD Git repo with a generic test case using stock Bullseye 64 bit Lite and latest version of MPD.
pi@sig:~ $ moodeutl -F
*** Scanning for playback devices ***
Card 0, ID `b1', name `bcm2835 HDMI 1'
Card 1, ID `Headphones', name `bcm2835 Headphones'
Card 2, ID `Revolution', name `Revolution'
Device 0, ID `USB Audio', name `USB Audio', 1 subdevices (1 available)
2 channels, sampling rate 44100..705600 Hz
Sample formats: S16_LE, S32_LE, SPECIAL, DSD_U32_BE
Buffer size range from 16 to 262144
Period size range from 8 to 131072
Subdevice 0, name `subdevice #0'
pi@sig:~ $
MPD verbose log
Jul 11 14:36 : client: [139] process command "play"
Jul 11 14:36 : alsa_output: opened _audioout type=COPY
Jul 11 14:36 : alsa_output: buffer: size=178..131072 time=252..185760
Jul 11 14:36 : alsa_output: period: size=89..65536 time=126..92880
Jul 11 14:36 : alsa_output: default period_time = buffer_time/4 = 185759/4 = 46439
Jul 11 14:36 : alsa_output: format=DSD_U32_BE (Direct Stream Digital, 4-byte (x32), big endian, oldest bits in MSB)
Jul 11 14:36 : alsa_output: buffer_size=131072 period_size=32768
Jul 11 14:36 : output: opened "ALSA Default" (alsa) audio_format=dsd512:2
Jul 11 14:36 : soxr: soxr engine 'cr32'
Jul 11 14:36 : soxr: soxr precision=20, phase_response=50.00, passband_end=0.91, stopband_begin=1.00
Jul 11 14:36 : soxr: samplerate conversion ratio to 0.46
Jul 11 14:36 : exception: Failed to convert for "ALSA Default" (alsa); PCM conversion from f to dsd is not implemented
Jul 11 14:36 : output: Retrying without DSD
Jul 11 14:36 : alsa_output: opened _audioout type=COPY
Jul 11 14:36 : alsa_output: buffer: size=178..131072 time=252..185760
Jul 11 14:36 : alsa_output: period: size=89..65536 time=126..92880
Jul 11 14:36 : alsa_output: default period_time = buffer_time/4 = 185759/4 = 46439
Jul 11 14:36 : alsa_output: format=S32_LE (Signed 32 bit Little Endian)
Jul 11 14:36 : alsa_output: buffer_size=131072 period_size=32768
Jul 11 14:36 : output: opened "ALSA Default" (alsa) audio_format=705600:32:2
Jul 11 14:36 : soxr: soxr engine 'cr32'
Jul 11 14:36 : soxr: soxr precision=20, phase_response=50.00, passband_end=0.91, stopband_begin=1.00
Jul 11 14:36 : soxr: samplerate conversion ratio to 0.11
Jul 11 14:36 : output: converting in=6144000:dsd:2 -> f=6144000:dsd:2 -> out=705600:32:2
Jul 11 14:36 : alsa_output: Decoder is too slow; playing silence to avoid xrun
.
.
.
@TheOldPresbyope, Looking at the lib code it does suggest that there is no support for 1024 DSD.
I ran a few tests with the file using my Revolution DAC which claims support up to DSD512. The highest I've ever tested is DSD256 though.
First I had to switch ALSA output mode to "Direct (hw)" in Audio Config to get the file to play and then what happens is MPD and ALSA negotiate an output format based on the file and what the audio device reports its capabilities are and I end up with heavily glitched audio due to decoder DSD -> PCM conversion XRUNS.
I think if OP wants to pursue further he could post an issue in the MPD Git repo with a generic test case using stock Bullseye 64 bit Lite and latest version of MPD.
pi@sig:~ $ moodeutl -F
*** Scanning for playback devices ***
Card 0, ID `b1', name `bcm2835 HDMI 1'
Card 1, ID `Headphones', name `bcm2835 Headphones'
Card 2, ID `Revolution', name `Revolution'
Device 0, ID `USB Audio', name `USB Audio', 1 subdevices (1 available)
2 channels, sampling rate 44100..705600 Hz
Sample formats: S16_LE, S32_LE, SPECIAL, DSD_U32_BE
Buffer size range from 16 to 262144
Period size range from 8 to 131072
Subdevice 0, name `subdevice #0'
pi@sig:~ $
MPD verbose log
Jul 11 14:36 : client: [139] process command "play"
Jul 11 14:36 : alsa_output: opened _audioout type=COPY
Jul 11 14:36 : alsa_output: buffer: size=178..131072 time=252..185760
Jul 11 14:36 : alsa_output: period: size=89..65536 time=126..92880
Jul 11 14:36 : alsa_output: default period_time = buffer_time/4 = 185759/4 = 46439
Jul 11 14:36 : alsa_output: format=DSD_U32_BE (Direct Stream Digital, 4-byte (x32), big endian, oldest bits in MSB)
Jul 11 14:36 : alsa_output: buffer_size=131072 period_size=32768
Jul 11 14:36 : output: opened "ALSA Default" (alsa) audio_format=dsd512:2
Jul 11 14:36 : soxr: soxr engine 'cr32'
Jul 11 14:36 : soxr: soxr precision=20, phase_response=50.00, passband_end=0.91, stopband_begin=1.00
Jul 11 14:36 : soxr: samplerate conversion ratio to 0.46
Jul 11 14:36 : exception: Failed to convert for "ALSA Default" (alsa); PCM conversion from f to dsd is not implemented
Jul 11 14:36 : output: Retrying without DSD
Jul 11 14:36 : alsa_output: opened _audioout type=COPY
Jul 11 14:36 : alsa_output: buffer: size=178..131072 time=252..185760
Jul 11 14:36 : alsa_output: period: size=89..65536 time=126..92880
Jul 11 14:36 : alsa_output: default period_time = buffer_time/4 = 185759/4 = 46439
Jul 11 14:36 : alsa_output: format=S32_LE (Signed 32 bit Little Endian)
Jul 11 14:36 : alsa_output: buffer_size=131072 period_size=32768
Jul 11 14:36 : output: opened "ALSA Default" (alsa) audio_format=705600:32:2
Jul 11 14:36 : soxr: soxr engine 'cr32'
Jul 11 14:36 : soxr: soxr precision=20, phase_response=50.00, passband_end=0.91, stopband_begin=1.00
Jul 11 14:36 : soxr: samplerate conversion ratio to 0.11
Jul 11 14:36 : output: converting in=6144000:dsd:2 -> f=6144000:dsd:2 -> out=705600:32:2
Jul 11 14:36 : alsa_output: Decoder is too slow; playing silence to avoid xrun
.
.
.