Topic: How to get ASIO bit-perfect playback?

Hello,

I got some interesting results when I tried to play high-resolution TIDAL music using an ASIO/WASAPI-enabled player on Windows 10 (19045). In ASIO mode, the player streams at the correct sample rate. I mean it doesn't upsample/downsample the original stream, which is good. Meanwhile, it increases the number of bits from any source material (16-/24-bit) to 32-bit.

Is this normal ASIO driver behavior?

       Source                                Windows?                             DAC
FLAC 16-bit / 44.1 kHz  ->  PCM 64-bit / 44.1 kHz  ->  PCM 32-bit / 44.1 kHz.

Driver date: 22.01.2024
Driver version: 0.9833
Hardware revision: 209

https://i.imgur.com/Wd1BgHt.jpeg

Re: How to get ASIO bit-perfect playback?

As long as you do not reduce the volume in the application, the result is bit perfect.
ASIO driver have direct access to the audio HW.
Also WASAPI (in exclusive mode if I remember right).
If Tital should have a possibility to play a local wav file from your computer, then you can perform the Bit test (play the WAV files that are provided by RME for this purpose). Or using an audio player.

BR Ramses - UFX III, 12Mic, XTC, ADI-2 Pro FS R BE, RayDAT, X10SRi-F, E5-1680v4, Win10Pro22H2, Cub13

Re: How to get ASIO bit-perfect playback?

Thanks for the suggestion. I use the "Exclusive Mode" option and in this case the volume control is automatically disabled. The volume is set to the default maximum. I'll try to run a bit test with local sample files through the TIDAL players.

4 (edited by johny_2000 2024-04-19 01:40:16)

Re: How to get ASIO bit-perfect playback?

So this is the Audirvana Studio player that routes Tidal Hi-Res music to ASIO/WASAPI/Kernel devices. Based on Audirvana tech support messages, the bit depth and sampling rate of the output stream are controlled by the device driver. So, in my case, 32-bit depth is what the RME ADI-2 ASIO driver advertised itself in Win OS. This has nothing to do with the original TIDAL stream parameters (bits/SR) or software processing (I have everything disabled, but there may be volume, upsampling/downsampling, effects, etc.).

Quote:
==============================================================================
In short:
No matter the settings in Audirvana, Audirvana always reports (in the right below corner) the maximum bitrate your DAC is capable of, this info is provided by your DAC (driver) to Audirvana.
....
Internally the 16-bit integer is passed as a 32-bit integer, because I assume your DAC is a 32-bit DAC.
16-bits passed as 32 bits is like packaging something in a slightly too large box. But what comes out is exactly the same number. So your signal is not converted or upsampled in any way. The indicator at the bottom left of Audirvana shows the original source (16-44.1 in your case) and the indicator at the bottom right shows how your DAC handles it.
==============================================================================

Is it true that the ADI-2 DAC in ASIO mode advertises itself to the OS as a 32-bit device?

P.S. Haven't done a "Bit Test" with RME files yet.

5

Re: How to get ASIO bit-perfect playback?

Very competent support team here - kudos to the Audirvana team!

Yes, 32 bit. That's more than typical for ASIO.

Regards
Matthias Carstens
RME

6 (edited by johny_2000 2024-04-19 02:14:50)

Re: How to get ASIO bit-perfect playback?

MC wrote:

Yes, 32 bit. That's more than typical for ASIO.

Thank you MC for confirming my guesses.

I have not used streaming platforms before, but only used local playback through Foobar2000 in ASIO mode.
It did not provide such detailed information about the process of playing files from source to destination device.
As a tech geek, I like to see and control all the details of the playback process, as implemented in Audirvana.

Re: How to get ASIO bit-perfect playback?

Question to MC,

Is it possible to extend the bit statistics in DIGIChek NG to 32-bit in the future?
It's currently 24-bit, and if I feed a 16-bit stream in ASIO mode, I see that the eight least significant bits (LSB) are zero.
But if I feed a 24-bit stream in ASIO mode (32-bit basis), there are eight more low-order bits that are not currently visible.

https://i.imgur.com/GNG92Kx.jpeg

Re: How to get ASIO bit-perfect playback?

I finally found a software solution to route the audio of the TIDAL app for Windows to the ASIO interface of the ADI-2 DAC. Its name is VB-Audio Hi-Fi CABLE & ASIO Bridge (Donationware). Essentially, this is a Virtual Hi-Fi Cable and ASIO Bridge (XP, VISTA, WIN7, WIN8, WIN10/11 32/64 bit). https://vb-audio.com/Cable/index.htm

By setting "Hi-Fi Cable Input" as the default Windows audio playback device, selecting "ASIO MADIface USB" as the target device and turning on "ASIO Bridge", it now works fine with TIDAL application in bit-perfect mode and sample rate of ADI-2 DAC switching automatically.
https://i.imgur.com/6VgBv8X.jpeg

https://i.imgur.com/l2GBSmE.jpeg


In TIDAL app select 'VB-Audio Hi-Fi cable' device, turn on 'Use Exclusive Mode' and 'Force Volume'.

Notes: The buffer size in "MADIface Series Settings" needs to be set <= 2048 samples, otherwise it will cause some (unknown to me) incompatibility with ASIO Bridge.
https://i.imgur.com/Uo0eIoj.jpeg

9 (edited by johny_2000 2024-04-21 05:35:41)

Re: How to get ASIO bit-perfect playback?

For information on selecting the ASIO buffer size, see the VB-Audio Hi-Fi Cable manual.
https://vb-audio.com/Cable/VBCABLE_SystemSettings.pdf

===============================================================================
Alert when ASIO Buffer is too big.
ASIO Buffer size is displayed in a red blinking rectangle if it is too big compared to the cable MAX Latency. Again we must respect the main rule where buffer used must have size below 1/3 of the Cable MAX Latency.
===============================================================================

Now this makes sense since by default the Cable MAX Latency is set to 8192 smp (can be changed +/-). So 1/3*8192=2730 smp. So the buffer size selection of 2048 smp in the MADIface Series Settings < 2730 smp, and 4096 smp/8192 smp is simply too big.