Roon Client/Server - Best Practice?

All file decoding occurs on the core. The bits are then transmitted to the remote, either in their original format or processed (if you have volume normalization or crossfade enabled). The remote owns the audio clock and has a fairly large (multi-second) buffer that fully isolates it from timing characteristics of the server.

The remote handles all compatibility-oriented conversions itself (e.g. converting to a sample rate compatible with your DAC, converting DSD to PCM for playback on PCM DACs, etc).

If your DAC fully supports the source material, then the remote is just a passthrough.

Some of this is in flux as we make RoonSpeakers more mature. We will eventually need to support endpoints that don’t have the horsepower to do, for example, DSD256 to 88.2k PCM conversion in software, which would require us to create a mechanism for doing that sort of work in the Core. Today, playing high-rate DSD on anything but a bleeding edge android tablet is dicey–the conversions use a lot of CPU. There are also some reliability benefits to reducing network bandwidth for cases like this.

2 Likes