Can I add Apple Spatial tracks to Roon?

Either way the answer will be no. Decoding of any Dolby format would require a license. Roon must unpack at Core before sending to endpoint. It means the Dolby decoding would occur at Core and Core has no way to do this. Roon won’t pass a Dolby format untouched either (although this would be the preferred way to do it, see below).

One other tricky part about the ATMOS format is it holds both the individual audio channels plus audio description metadata. This is what allows an ATMOS processor to support different speaker configurations when there are less actual audio tracks. It uses the audio description data to send those tracks to the available height and other spacial channels. This means Roon needs to send the ATMOS data untouched, something it won’t do, or you’d need Roon to decode based upon your specific speaker configuration and, really, you just want that configuration data sitting in your ATMOS processor and not in some audio server. This is especially true if you’re using a microphone for the processor to calculate delay and EQ curves. The processor really needs the direct ATMOS data to decode against this DSP for it to work right. This isn’t something you want to painstakingly feeding into Roon.

ATMOS is a mess for Roon. Don’t expect it. Just let your surround processor handle it. It knows your speaker details and will apply the metadata correctly.

EDIT: I had an offline chat about the above with another forum member. What is not accurate in the above is that some Dolby and DTS formats use a 2-channel PCM bitstream to encode. What this means is, Roon could send this bitstream as 2-channel PCM to the DTS / Dolby decoder and it will work fine. The decoder will see it as that format, decode it, and play it back correctly. Sending the bitstream to something that doesn’t recognize or can’t decode it would produce noise. Additionally, for this to work it needs to be sent bit-perfect so no DSP, no digital volume adjustment, etc. However, ATMOS and DTS:X and any other format which relies on metadata to decode won’t work as there is no way to transport the metadata from Roon to the decoder.