Help needed on ”allowed_formats“, in particular DSD as DoP - Solution turns to alsa buffers and real-time scheduling #1684
-
Please, I need help for my mpd.conf file in ~/.config/mpd/ on Linux (openSUSE Tumbleweed). Tumbleweed provides mpd version 0.23.10. I am using I have a USB DAC dongle (Cayin RU6) hooked up to my Linux laptop. This device can play PCM up to 32/384kHz, and it can play DSD natively up to DSD256. Currently, I am limiting myself to audio files up to 24/384 and DSD 256. However, this DAC doesn‘t work properly with mpd, unless I specify First, bit depth changes from track to track (both 16 to 24 and 24 to 16) are hit or miss. Reason unknown. The remedy is Second, on my Linux Tumbleweed, native DSD doesn‘t work with this dongle DAC. DoP does work, though, at least in part. My question is: What Solution (1) might be preferred, followed by (2). Solution (3) would involve two steps, changing DSD256 to PCM, and changing the latter to DSD128 and send that as DoP. Thanks a lot in advance. |
Beta Was this translation helpful? Give feedback.
Replies: 10 comments 6 replies
-
What does that mean, exactly?
That's what MPD does with your configuration. See https://www.musicpd.org/help/ if you need help with that.
MPD can't resample DSD, and it can't convert PCM to DSD. It can only play back DSD as-is, or convert DSD to PCM. |
Beta Was this translation helpful? Give feedback.
-
Thank you for replying swiftly! Let me reply to your questions and remarks in turn. Solution (1) "forbid DSD256 entirely" would mean to not output anything, just skip any DSD256 track. Solution (2) "decimate DSD256 to PCM at 352.8kHz" indeed then would be the best solution. And indeed, from reading the manual, I had expected it to do exactly that with my configuration. Solution (3) is not needed. It was inspired by what Roon does on my Windows machine. Do you have any ideas regarding Solution (2)? |
Beta Was this translation helpful? Give feedback.
-
Dear Max, sorry for engaging you more than you like. I DID READ the manual/help up front, in particular the chapters on Direct Stream Digital (DSD), Audio format settings > Global output format and > Resampler, Plugin reference > Output plugins > alsa. Unfortunately, that did not help beyond what I have now. I keep getting stuttering noise when trying to play DSD256, which should automatically be turned into PCM with my configuration as you say. So, please let me continue to try to find a solution. Please forgive me for the moment, I will soon provide the usual information on my setup - MPD version is 0.23.10; I use Cantata to control it; and I will enter verbose logging soon. Anyway, for now, here is the relevant portion of my ~/.config/mpd/mpd.conf file:
which is followed by
The The remainder of the config file is concerned with other devices and the general settings like files, paths, which are not relevant here. Please, I hope to be allowed to ask for further help: Could you take a look at that full config, please, and check whether there is anything offending in it. As you can see, I had also experimented with the |
Beta Was this translation helpful? Give feedback.
-
Here are two text files, one is the Verbose logging was done for playing a few tracks:
I am finding some Attached files: |
Beta Was this translation helpful? Give feedback.
-
Thank you, Max, for taking a deeper look and for giving these recommendations - highly welcome. I'll check into them later. For now, I still owe a test with an actual high-rate PCM track. Here is what happens when playing a so-called DXD 32/352.8 .wav file. It is Verbose log attached: Remark: I have another laptop, HP 8560w, from 2011, i5 CPU (4 threads), 16 GB RAM, SSD; thus, a bit "smaller" and what I called "slower". It runs Windows 10, players are foobar2000 and Roon. Until now, I have no problems at all with any DAC of mine and with any audio file. The Windows machine plays anything up to 768kHz and DSD512 fine. So, thank you again for your help! I will dig deeper into your recommendations and see what I can achieve. |
Beta Was this translation helpful? Give feedback.
-
Dear Max, good morning, Out of your recommendations, I tried the easiest one now: Setting
With these settings, everything (PCM, DSD up to DoP128) that worked before keeps working fine. For DSD256 as DoP, the stuttering and noise are greatly reduced now, but unfortunately do not disappear completely. There is a stutter every second or so. So you were on the right track, my problem looks like a latency problem - thank you so much for that help. I will keep on trying to check your other recommendations. Real-time scheduling looks to be promising, but I have to find out whether and how I could enable this on openSUSE Tumbleweed. |
Beta Was this translation helpful? Give feedback.
-
Dear Max, I turned to the "get real-time scheduling correct" recommendation of yours now. I would like to publish my solution here, although it merely is a lesson for me in Linux real-time scheduling. Please forgive me for this write-up, but I think such settings are not in the common working knowledge for quite some Linux users. Up-front, here is my MPD result now:
So, thanks a lot for your help. I am happy to have improved my MPD setup a lot. Dear Max, I have two more items for you regarding the MPD documentatin:
Thanks in advance! Now, here are the basics: In order to allow Music Player Daemon to properly acquire real-time scheduling, I did the following:
Remarks: The "-" applies both hard and soft limits. Setting nice to -19, one notch below the top-most value. With these settings, MPD - at least in my per-user configuration - gets real-time scheduling, as evidenced by
while playing. The two important threads get FIFO real-time scheduling. The file mpd.service provided in the MPD package is pre-configured for the required real-time settings; limits.conf allows MPD to do that. Actually, for MPD it would be required to put only Final remark: Myself, I normally run MPD in a per-user configuration, done via Thanks for your patience and help. |
Beta Was this translation helpful? Give feedback.
-
Oh, no debate please. This is my openSUSE Tumbleweed output on a terminal (bash):
With the ^, nothing comes out of the command. Without it, the answer is supplied. Maybe the effect is due to bash. |
Beta Was this translation helpful? Give feedback.
-
Addendum:
|
Beta Was this translation helpful? Give feedback.
Here are two text files, one is the
mpd --version
output, the other is the verbose logging. Sorry for not cleaning the verbose logging file ...Verbose logging was done for playing a few tracks: