Switching from Asio to Wasapi in non exclusive mode doesn't work when sample rate has to change

Roon Core Machine

Win 11 i7

Networking Gear & Setup Details

No VPN, or Ethernet issue

Connected Audio Devices

Matrix Element X over USB

Number of Tracks in Library

No library yet, trialing Roon

Description of Issue

Hi.
I’m trialing Roon for the first time.
I would like to use ASIO and WASAPI drivers to play music.

  • ASIO if I want bit perfect music
  • WASAPI if I want to switch between Roon and Youtube - without having to quit Roon first.

So my dac cannot be in exclusive mode.

When windows mixer is set to 44100 Hz (16 24 or 32 bit doesn’t matter) switching from ASIO to Wasapi and back works perfectly when playing a 44100 file.

However
When I select a higher sample rate (like 24 bit 192kHz) in the Windows mixer and

  • I play over WASAPI the first time, the song plays correctly.
    The dac shows 192 as windows up sampled it.
  • I switch to ASIO (using the speaker icon and then the arrows) the song plays correctly.
    The dac shows 44.1 as windows mixer is avoided
    BUT
  • I switch back to WASAPI : the progress bar is moving - but the dac still shows 44.1 and no sound comes out - like it is still stuck in the sample rate of the asio mode!

In short : when going from Asio to Wasapi and the sample rate is not the same as the last sample rate used by Asio, Wasapi won’t play. (A workaround could be to switch the sample rate to the Windows mixer setting BEFORE switching from Asio to Wasapi !)

This will help make my decission if I want a subscription to Roon… or not.

(P.S. in Exclusive mode everything works fine - but then I cannot play youtube videos while Roon is still open)

When in exclusive mode, Roon controls the signal path, which is why you cannot play YouTube at the same time. The alternative, is to pass the signal through the OS mixer, but then Roon cannot control what happens.

Take a look at the help centre guides.

Thank you Martin.
I read all of the above. The second article seems to confirm what I’m suspecting :

  • ASIO is always exclusive mode
  • the communication with the dac seems still in exclusive mode when switching to WASAPI
  • as a result the windows mixer is unable to change the sample rate

Shouldn’t ROON disable the exclusive mode when

  • switching from ASIO to WASAPI - when the device checkbox “exclusive mode” is off ???

Hi, I tried to simulate this behaviour in foobar

I set Windows output to 32/192 and then played a 24/96 pcm

a) using ASIO :
dac shows 96 (showing asio is always exclusive mode),

b) switched to Wasapi “shared” which means not exclusive :
dac shows 192 (so windows mixer took over).

I tried switching from ASIO to WASAPI and back 10 times and it works perfectly in foobar, so it is not the driver.

I looked further and found here on the forum that s.o. else had this issue and Wasapi seems to work again when turning the dac off and on again. In other words : Roon loses control of it (and of the ASIO exclusive mode!) and then the Wasapi driver has full control again (in non exclusive mode).
Of course turning off and on the dac is not a real solution. This clearly is a bug.
When I Restart Roon then suddenly Wasapi works again too, so it’s also not the dac causing this.

So when the devices “exclusive mode” checkbox is unchecked, can Roon just disable the Asio exclusive mode when switching to the Wasapi driver? This should be standard behaviour when the “exclusive” checkbox is unchecked ! This should solve this issue for everyone.

Thank you.

Not necessarily. It could be the DAC or driver behaving badly, i.e., Roon has released control.

Roon support will pick up this thread in due course, but be patient over the holiday season.

1 Like

Okay, thanks, I’ll wait.

1 Like

Okay, so I have done more testing.
Important : the Wasapi driver is NON exclusive mode (checkbox is off) as I need Roon to work along with youtube.

This is a list of commands I did in this exact order and what exactly happens in Roon :

  1. Windows sample rate is set to 96k (*)
  • playing a 96k in Wasapi : works : dac shows 96k
  • playing a 44.1k in Wasapi : works : dac shows 96k
  • playing a 192k in Wasapi : works : dac shows 96k

So here I can play any sample rate file, windows will remix it to 96k and it will play (this if fine)

  1. So windows sample rate is still set to 96k
  • Playing a 44.1k in ASIO : works perfect : dac shows 44.1k (as Asio = exclusive)
  • Playing the 44.1k in Wasapi : initializing driver failed - no sound (44.1k <> 96k)
    As you could see in 1. the 44.1k played there perfectly (it was converted to 96k by windows), but here (after ASIO was used) it fails !
  • Set Windows sample rate to 44.1k manually (**)
  • Press play again, now Wasapi works and the 44.1k file is playing (44.1k = 44.1k (**))
  1. So now windows Sample rate is set to 44.1k (**)
  • Playing a 96k in ASIO : works perfect : dac shows 96k
  • Playing the 96 k in Wasapi : initializing driver fails (96k <> 44.1k (**) ) Same issue as in 2.
  • Set Windows sample rate to 96k manually (***)
  • Press play again, now Wasapi worsk and the 96k file is playing (96k = 96k (***))

So Wasapi works fine, until Asio has been used.
When switching (Roon transfer) from Asio to Wasapi, apparently Asio is still in control, so Wasapi fails when the target sample rate is different then the sample rate of the last track played in Asio.

I’m also trialing Audirvana now, and there I can switch from Asio to Wasapi non exclusive without these issues. Same with foobar (Asio vs Wasapi shared). All fine there. So yes I think it’s a bug in Roon.
(I’m a developer myself btw)

I’'ve been trialing Roon for 5 days now, as I’m considering to buy Roon lifetime before prices go up.
But if this problem is not solved by the end of my trial period, I think I will say Roon goodbye for good and go for a subscription to Audirvana Studio. Sorry but I can’t pay that much money when switching from Asio to Wasapi is still buggy. Roon looks promising, but this is a deal breaker. Hope you understand.

If you’re a developer, you’ll understand that prioritizing work isn’t done this way. When a bug is confirmed it goes on a backlog, is prioritized by the development team, and worked on accordingly.

We’re also in the holiday season with a only a few working days remaining this year.

Kindly note I am a voluntary community member and do not represent Roon Labs.

1 Like

Hi, yes I understand,

But roon lifetime is now 660€ and prices are going up to 785€ (+125€) in January for a lifetime subscription which is too expensive for me (deal breaker). And I don’t feel paying for monthly/yearly subscriptions. I already pay for Qobuz Sublime (yearly subscription).

I just would like confirmation this bug (which looks quite serious) will be addressed in the future (somewhere next year or so). If it won’t, the 660€ is also a deal breaker. If it will, I’ll subscribe immediately.

(I did sent this buggy behaviour to Matrix Audio (dac producer) as well but as I tested in other software players, I don’t expect it’s the driver).

Merry Christmas btw ! :slight_smile:

You may want to post in #audio-gear-talk:matrix-audio, as other users may be able to confirm if this is an issue or settings related.

Yesterday I posted a link to here there, and it was viewed several times but no one replied (yet).

Today I posted a test procedure :
(Anyone with another dac then mine should be able to do the exact same test.
If they experience the same issues, the bug is in Roon, if not, it’s the driver of my dac.)

Matrix Audio hasn’t replied yet, but they might be very busy with debugging their new product lines

Matrix Audio support posted a reply :

A customer mentioned the same issue to us recently.
After you set the output method to ASIO, Roon usually occupies the output channel because ASIO is allow to be occupied exclusively.
So the WASAPI will not get the audio device.
When this issue happens, after you switch back to WASAPI, a restart of Roon will fix this problem.

So this confirms what I said :

  • The output channels used by ASIO are released only when quitting Roon.
  • => They should be released (as well) when transfering from ASIO to (non exclusive) WASAPI.

One cannot expect users to restart Roon every time going from ASIO to (non exclusive) WASAPI. It certainly can be done (Foobar does it, going from ASIO to Wasapi shared works perfectly).