servers [windows]: select WASAPI as default device if available#6994
servers [windows]: select WASAPI as default device if available#6994dyfer merged 1 commit intosupercollider:3.14from
Conversation
|
@Spacechild1 how does this look to you? |
382d172 to
3ac4c94
Compare
|
I don't have time to actually test myself, but looks good to me!
Actually, we should not do that because we might end up with two devices with different APIs. For example, take a laptop with no built-in microphone input, but a generic ASIO driver: I'd suggest to add a comment to |
3ac4c94 to
4dc5415
Compare
|
I just tried this locally. From my side side this is good to go! |
|
Thanks @Spacechild1 |
|
I think this can definitely go to 3.14. I would rather not do this in a bug fix release. |
Do you mean - yes in 3.14.0 but not in 3.14.1 ? |
|
Yes! |
|
if this goes into 3.14 we definitely need a 3.14-rc2 |
|
Yes, we need rc2 anyway, I think. BTW this wasn't feasible until Christof's relatively recent PR to enable resampling in WASAPI, that's why we haven't had this for so long. |
|
I don't have any clue about windows anymore, but if it helps and is not a big change I think its fine to bring this into 3.14 via rc2 ;) |
|
All right! In that case I'll merge this. |
|
To be extra safe: |
|
Here are two results: Windows 11 ARM: Windows 10 ARM: |
|
I have tested with Windows 10 (x64) and Windows 11 (64) on Parallels Desktop on iMac 2013 (intel i7). Windows 10 (x64) Windows 11 (x64) |
|
@prko did you try playing sound in your tests by any chance? Does it work fine with now dropouts etc (comparing to the MME driver)? |
|
The device in question is input-only, like a microphone, and that seemed to work fine.
From: Marcin Pączkowski ***@***.***>
Sent: Monday, 23 June 2025 21:47
To: supercollider/supercollider ***@***.***>
Cc: sternsc ***@***.***>; Mention ***@***.***>
Subject: Re: [supercollider/supercollider] servers [windows]: select WASAPI as default device if available (PR #6994)
[Image removed by sender.]dyfer left a comment (supercollider/supercollider#6994)<#6994 (comment)>
@prko<https://github.com/prko> did you try playing sound in your tests by any chance? Does it work fine with now dropouts etc (comparing to the MME driver)?
—
Reply to this email directly, view it on GitHub<#6994 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AAXQZNE7EKCDIA5OEIQ54CL3FBKU5AVCNFSM6AAAAAB7OSOKLGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSOJXG42DSOBTGA>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
|
The following is a result on a real machine: Windows 10 x64: I tested the following code firestly: It was successful. Although I could see the sound level on the s.meter, I could not hear any sound. There are no dropouts on this real machine:
|
|
Thanks for testing @prko ! |
|
After additional testing I'm now merging this, so that we include it in 3.14.0-rc2. |
|
Sorry for the delay in the sound test. On the virtual machine, there are always dropouts, so I could not test the sound on my MacBook Pro. |
|
Thanks! But are the dropouts worse than when using a MME device? |
|
I think WASAPI drops more sound. |
That's not surprising, given that MME's default output latency is 4x larger than WASAPI's (92 ms vs 23 ms). On an actual Windows machine, you shouldn't get any dropouts in either case. (23 ms is still a pretty big buffer size.) Your other test confirmed this. As @dyfer already noted, VMs are known for having audio issues. If you experience dropouts, just increase the hardware buffer size. (4096 roughly matches the MME default.) |
|
@dyfer Sorry for the delay; I have now tried the PR "3.15.0-dev" on Win10 and Win11, with a startup file that doesn't specify anything audio. On booting the server, all the APIs are still listed, and it selects WASAPI on the default audio device(s). This is as intended, I believe. Good! |
…ider#6994)" This reverts commit b390407.
@Spacechild1 from a test in CI I believe this is not correct after all. When running the current version on a system with only an ASIO device, the server now doesn't select ASIO as the default device (presumably because we get Separately we have logic to handle different APIs, so I think we should always return a default device from the I think we need to fix this for 3.14 and make rc3, what do you think? EDIT: fix submitted in #7051 |
Purpose and Motivation
Use WASAPI for the default device selection on Windows.
We seem to need this before we can disable old APIs, see #6900 (comment)
Types of changes
To-do list