Continuing from the WTB cheap Roon endpoint
http://dcaudiodiy.com/phpBB3/viewtopic.php?f=5&t=1956 thread.....
What I found so far:
All CPUs have more than on core (a core is a CPU inside a physical CPU). Typically, the CPU usage of a music server is in low single digits. That low CPU usage is not an indication of quality of playback since all systems have multiple Cores and the OS manages the multi-tasking of all the processes, assigning them CPU based on some algorithm. That works extremely well for data computing needs, but for real-time computing needs like audio playback, multi-tasking becomes a hindrance. For example, if the music player, mpd, process is moved from core to core, it creates a time lag as all the memory structures need to be assigned to the new core which takes time.
GentooPlayer, a Linux distribution specialized for audio playback is highly configurable (thanks Grover for the tip). One of the features of GentooPlayer (GP for short) allows for pinning processes to cores. In the default GP configuration, mpd was skipping every time a track is changed manually in the music streamer (audirvana). And the quality of the playback was not up the mark when compared to the other music Linux distro, AP-Linux I was using. After I pinned the processes to CPUs, skipping has vanished and the quality of the playback improved.
This taught us two facts:
1. Overall CPU usage of the music server is immaterial. To get good performance, the music player process should be pinned to a core.
2. GP algorithm uses 4 cores for four different task categories. This means, fanless pcs with 2 cores are not ideal candidates for music servers. We need a desktop version of i5 (which has 4 cores) or better for the task, which requires some kind of active cooling.
Today, I came across a resampler for mpd called "Secret Rabbit Code"
http://www.mega-nerd.com/SRC/SRC aka libsamplerate is compiled into mpd. It made a huge difference in my system. The difference is like moving from SS gear to tube gear. The only drawback of libsamplerate is, it is a CPU hog. I set the resample rate to 192kHz/24bit and tried few different types of sources.
With standard 44.1Khz/16bit PCM sources, the music server core was about 24-30% busy. Still, the resampled output was far more pleasing to my ear and there is no skipping.
With 192kHz/24bit PCM sources, music server core was around 27-35% busy and the resampled output was far more pleasing to my ear and there is no skipping. This should work ok for quboz,
With DSD64 sources, music server core was around 40% busy and the resampled output was far more pleasing to my ear and there is no skipping.
However with DSD128 source (Solo by Fiona Joy), the music server core was 94% busy and skipping started and eventually audirvana froze up.
The CPU I am using is only about 2.1Mhz. With this CPU, I cannot play anything over DSD64. Clock speed of the core is the prime important factor for quality music server implementation, which means we have to venture into HT/Gaming PC area. We dont need more than 4 cores. AMD Ryzen CPUs can be overclocked to 4.7MHz. Check out the hardware at Microcenter. Quality PSUs produce a max of 18dB and liquid cooling system with fans about 24dB. It will be a mid-tower which I would tuck it behind the speaker. My DAC can play 786kHz/32bit sources, which has to wait until I upgrade the server.
For anyone who wants to try out the libsamplerate resampler, make the following changes in /etc/mpd.conf and bounce it. I doubt it will work with low-end CPUs like atoms and celerons.
Attachment:
mpd_libcamplerate.png [ 32.25 KiB | Viewed 25032 times ]
DaveR, I read on that libsamplerate plugin is available for foobar200, if you wanted to try.