Set streaming mode and asio buffering on topping d10


Hi, My question is: What are the optimal settings to use in JRiver when playing Apple Music? I'm running JRMC28 on a Win 10 PC with Edge browser installed. I have added http://HTTPS://applemusic.com to the streaming tab in JRiver. After signing in to my account, music plays nicely through my desktop system (Topping D10 Balanced via USB to PC, and balanced connectors to JBL 306P, and using manufacturer supplied ASIO driver). Sounds pretty doggone good, even though Hi Res isn't available via Apple Music on a PC. I had to select JRiver Media Center as the output device under the Windows Control Panel -> Sound -> Playback tab in order to use the JRiver controls and ASIO driver. Otherwise, Apple Music played from inside JRiver, but accessed the DAC bypassing JRiver controls, and without using the ASIO driver. With this arrangement, it is my understanding that the stream received is compressed AAC in 16-bit, 44.1 KHz. During playback, JRiver Audio Path reports 16/44.1 as the input signal, and 32/44.1 as the output. My goal is to avoid resampling. Has this been achieved? Or are there more optimal settings available?

Each steaming mode increases the USB buffer, which is set in X milliseconds. The ASIO buffer is listed in samples, in other words, how long it depends on the sample rate.

Under all conditions, the ASIO Buffer must be larger than the USB buffer, or dropouts or other strange effects may happen. The USB streaming mode sets the following USB buffer length:

Minimum Latency = 1 millisecond Low Latency = 2 milliseconds Standard = 4 milliseconds Relaxed = 8 milliseconds Reliable = 12 milliseconds Safe = 16 milliseconds Extra Safe = 32 milliseconds

If using 768kHz sample rate (or DSD512 or DSD256 vis DoP) 8192 samples are around 10 milliseconds, so for correct operation at this sample rate the ASIO buffer setting just be the maximum 8192 and streaming mode must be relaxed (8mS).

The downside is that such a setting will generate high latency at low sample rates, for example at 44.1kHz 8192 samples are 185 milliseconds, to which 8 milliseconds must be added.

All of this is avoided if using the WASAPI audio subsystem.

The latest 3.20 driver allows ‘automatic’ samples.

The ASIO buffer is used to exchange sample data between the driver and an application (DAW). The ASIO buffer size is adjustable. However, because the ASIO buffer layer is driven by the USB streaming layer there is a dependency on the USB Streaming Mode setting. ASIO can work without dropouts only if the following condition is met:

ASIO buffer size (in ms) >= USB streaming buffer depth (in ms)

By convention, the ASIO buffer depth is specified in terms of samples which creates another dependency on the current sample rate. For example, if USB streaming mode is set to standard then the minimum ASIO buffer depth is 4 milliseconds which corresponds to 176 samples at 44100 Hz and 384 samples at 96000 Hz. Usually, an ASIO buffer size (in terms of samples) that is a power of two is preferred. In most DAWs sample processing is more efficient if such an “even” number is chosen. So in the above example, we round up to the next power of two and end up with 256 samples at 44100 Hz and 512 samples at 96000 Hz.

The driver internally does not perform buffer size checks and does not enforce an ASIO buffer size that still works with the current USB streaming mode setting according to the condition defined above. This logic is implemented in the control panel. The control panel allows the user to pick one of the power-of-two numbers between 64 and 4096 and then checks if this works with the current USB streaming mode setting (The driver provides an API function which performs this check internally). If the selected ASIO buffer is too small for the current setting then the control panel displays a warning message. In this case, the user should pick a larger ASIO buffer size value.

As a consequence of the convention of specifying the ASIO buffer size in terms of samples, the user has to adjust the ASIO buffer size every time the sample rate in a DAW is changed.

Alrighty, I did some investigating. I can record digital audio with my Focusrite Scarlett 6i6 2nd Gen, allowing for some comparisons. Keep in mind, I limited my recordings to the first 60 seconds of each track.

First, I used my Bluesound Node 2i since that is the only device I have that sets the sample rate of a connected DAC correctly for Amazon Music. Consequently, my suspicion has long been that this device is bit perfect, and it is. I recorded it playing some FLAC files from a USB stick and the result is identical to what I have on disk. So that's a good start.

Next I tried to find a song in 24/192 that I have purchased and that is available on Qobuz and Amazon Music as well.

My first attempt was Beck - Paper Tiger, track 2 from the album Sea Change (Qobuz, Amazon Music, ). While I can get this to play at 24/192 on the desktop, Qobuz didn't play along on the Node 2i for some reason. With another 24/192 song it did, so this was a weird fluke, not sure what happened. I played and recorded the first 60+ seconds with the Amazon Music integration. Attempts 1, 3 and 4 were identical, attempt 2 had a good chunk that is somehow different. After attempt 2 I turned on the clock trim feature in the Node 2i, maybe it was one of those glitches it's trying to prevent that caused the difference. But broadly speaking, the results are repeatable - one worry I had was that streaming service may leave a slightly different watermark each time you play a song to track copyright infringement. That does not appear to be the case, though. Comparing the output to what I had on disk from HDtracks was strange. Some chunks were identical, some were not. Scrolling through the list of bit-by-bit differences, I noticed a pattern, there is some regularity to the blocks with different bits. I suspect some watermarking is going on, but I didn't look into it further yet. Unclear whether it's watermarked on Amazon Music or on HDtracks (or both).

My second attempt was Muddy Waters - Good Morning Little Schoolgirl, track 4 from the album The Folk Singer (Qobuz, Amazon Music, ). The Amazon version and the HDtracks version have the same kind of regular difference as with the previous song, which I find interesting. Actually, for both Amazon and Qobuz, almost exactly the first second is completely identical to the HDtracks version, then the differences start. So very likely there's some watermarking at play here.

For the third attempt I gave up on hi-res, switching to 16/44.1 with Main Titles, track 1 from Christophe Beck's The Pink Panther soundtrack (Qobuz, Amazon Music, Qobuz Store). That was helpful because I bought this album from Qobuz. And the streaming version is exactly identical. Whether I look at the downloaded FLAC file, record the output from the Bluesound Node 2i, use the Qobuz Windows app with ASIO or WASAPI exclusive, I get exactly the same bits. Perfect. Going to non-exclusive WASAPI mode, there are two short chunks, less than 4 ms long, that are different, everything else is identical to WASAPI exclusive mode. The exact same thing can be observed with the Amazon Music app, the same two parts of the track differ between exclusive and non-exclusive mode, even though the tracks themselves have lots of differences, but also lots of identical segments. Maybe some more watermarking? Anyway, it seems like Amazon Music is using WASAPI whether exclusive mode or non exclusive mode is used. That is probably good, which we can see when using Qobuz with DirectSound instead of non-exclusive WASAPI mode, resulting in far more differences than between the two WASAPI modes. Still, the vast majority of bits are identical, it looks like it's the loudest segments that differ, possibly because Windows needs to leave some headroom to mix the sound of multiple applications. So if you can choose between DirectSound and WASAPI in any form, use WASAPI. Lastly, I can confirm that the Amazon Music Windows app's output in WASAPI exclusive mode is identical to the output of the Node 2i with Amazon Music (provided the DAC's bit depth/sample rate matches the track's bit depth/sample rate). So manually adjusting the sample rate of the DAC for each song and using exclusive mode should yield the same result that we should get if the app adjusted the sample rate itself.

For the fourth attempt I used a track that I had on CD, namely Lindsay Lou - Sugar from the album Southland (Qobuz, Amazon Music, Portmerch). That was also very interesting. I found that when ripping the same CD multiple times, you may get largely the same bytes, but maybe a few more or less in the beginning or the end. Similarly, I had to shift the bits a bit to make things line up. Amazon had the better result here, skipping the first 12 samples of Amazon's track made it completely identical with my CD rip. For Qobuz instead I skipped the first 12 samples of my CD rip, then got a small chunk of different bits, with the rest of the file being completely identical. So essentially this song is completely identical between Amazon Music and Qobuz, making it a good candidate to try and see whether you hear differences between the two services.

In summary, using Amazon Music in exclusive mode + matching the DAC's sample rate to the track is objectively the best way to use it. However, skipping exclusive mode seems to make little difference as long as the volume is set to max in the app and on the OS level, enhancements are disabled for the audio device, etc. Yes, it won't be entirely bit perfect, but at least in my testing, 99% of the track had the exact same bits either way. It would be nice if Amazon could set the sample rate for us in exclusive mode, like the Node 2i does.

Apart from that, watermarking seems to be in play for some tracks, possibly from the publisher side and outside of the control of the streaming services. What the impact of those differences is on the sound I can't say, but since the watermarks aren't identical across the services there doesn't seem to be a way to categorically rule out differences in sound even for the same recordings / masters.

What should I set my ASIO buffer size to?

Usually, an ASIO buffer size (in terms of samples) that is a power of two is preferred. In most DAWs sample processing is more efficient if such an “even” number is chosen. So in the above example, we round up to the next power of two and end up with 256 samples at 44100 Hz and 512 samples at 96000 Hz.

What is topping D10 balanced ASIO?

D10 Balanced supports professional ASIO applications. When using ASIO in MAC or Liunx, it can be set in the music playback software; when using ASIO with Windows, you can use the customized driver from Thesycon. D10 Balanced can accurately indicate the audio format (PCM or DSD) and sampling rate of the playing music.