• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

I am really confused on how Windows 10 audio works.

dualazmak

Major Contributor
Forum Donor
Joined
Feb 29, 2020
Messages
2,820
Likes
2,950
Location
Ichihara City, Chiba Prefecture, Japan
You should review the threads of member "dualazmak" who is doing similar work in an extremely serious fashion.
He uses Lupisoft EKIO software, and the OktoResearch DAC (eight channel version)
https://www.audiosciencereview.com/...oftware-crossover-and-multichannel-dac.12489/

Hello gene_stl,
Thank you for your kind note and introduction to my thread.

Hello Ge0,
Your visits and participation in my thread entitled "Multi-Channel, Multi-Amplifier Audio System Using Software Crossover and Multichannel-DAC" will be much welcome and appreciated!

dualazmak
 

dualazmak

Major Contributor
Forum Donor
Joined
Feb 29, 2020
Messages
2,820
Likes
2,950
Location
Ichihara City, Chiba Prefecture, Japan
Last edited:
OP
Ge0

Ge0

Member
Joined
Jan 11, 2021
Messages
23
Likes
25

BassThatHz

New Member
Joined
Jan 1, 2022
Messages
1
Likes
2
BassThatHz is a freaking nut case :). I've been reading his 60 page long thread on his audio system for the past 2 nights. I still haven't come to any indication that he is using audio interfaces. But, I'm sure that will come.
You were probably looking at the wrong thread (like a speaker-build thread or something.) I have many different threads of various things.

This is the one you want:
I'd recommend reading it from the last page to the first, as the beginning was more research-ish and the end pages are a working-solution.
In summary I coded my own ASIO DSP engine in C# (.Net Framework 4.8 for Windows), it uses a highly modified version of NAudio.

It answers a lot of your questions, but not all of them. (So I will try to do that here, and copy and paste it over there too, as many people might be wondering those specifics.)

As others have suggested, this is a rather developer specific set of questions, so hold onto your hat.
I can "try" to answer your question in regards to audio on Windows (specifically ASIO), as best I can (I'm not a Microsoft-internal developer.)
I am really confused on how Windows 10 audio works. Is there a guide for beginners or dummies that does not assume you are already an expert? I get a headache reading most of the articles I have uncovered.
  • What is windows native audio vs. AISO? Why do I need ASIO?
  • How does windows route sound from an application to an audio layer?
  • How does windows route the audio layer signal to physical hardware?
My end goal is to figure out how to get a VST host to work seamlessly within windows. How can I route 2 channel input to the host? The host output would be routed to a multi-channel audio interface output's. Each channel will have its own cross-over filters applied for the purpose of actively driving a set of loudspeakers.

ASIO allows a running application to "talk" directly to the audio driver that your device has (or provided/installed more-likely).
Why do we want that?
Because it allows for maximum speed (lowest latency) and allows for bit-perfect audio streams.
Where as native audio uses the Windows kernel mixer dll which is an abstraction layer with internal re-sampling and limited hardcoded DSP functionality (i.e. anti-HiFi), native audio is generally limited to 7.1, which in this day and age is simply inadequate for object-based sound or hi-res.

How does it route?
As far as I know, it doesn't.
Windows audio support multi-tenant streams, as such the streams are simply amplitude-additive. Be it Chrome tabs or 10 different games & players. It just adds the bits and sounds louder and more confused.

Some virtual drivers have routing support, like ASIO Bridge or whatever. That's something they have specifically coded. They act as virtual ASIO or virtual native-audio devices (speakers and mics, essentially.) Any app can grab the data.

How do the apps grab that data?
There are many different ways, the most common is DirectX API. Another might be HTML5 \ flash \ java browser abstraction layers.
Another is ASIO API. Another is Windows API.

They don't talk directly to each other, they talk to the API, the API connects them via driver abstraction layers.
Just like a video game, it talks to DirectX, DirectX talks to the graphics driver, and that talks to the graphics card. Same idea.
This allows for maximum flexibility and modularity / separations of concerns.

In the case of NAudio, it scans a particular path in the Windows Registry to grab the ASIO driver hook info, and then uses Windows OLE dll (.Net Extern lib Refs) to attach .Net Framework to the audio hardware via the audio hardware drivers. (It uses asynchronous buffers to pass the audio data between the processes via the ASIO API.)

Asynchronous buffers is just a fancy way of saying array parameter of a function callback in programmer-land.

I don't know anything about VST implementations, I was going to look into it, but ultimately decided not too because it would just add an extra layer of slowness and complicity that I didn't want in my app. Mine is ASIO only and Windows only.
As for the speed, back in the old days when CPU's only had single cores or dual cores, Windows ADHD was an contention, but not anymore with our many-core CPU's. (As long as you don't do anything silly with the OS like Windows Updates, Defragging and Playing a Game while trying to run my app.)
I've never seen it skip a frame of audio to cause a buffer underrun.
My app is multi-threaded from the ground up, it supports at least 256 channels and 256 cores. Most apps like JRiver and Audition are single threaded (or not well-multithreaded.)
My app has both IIR and FIR.
My app is also free\unrestricted, and I'll be release the source code for it probably later in 2022 when I get a chance. Right now it's still in Beta (but working.) For now there are partial code dumps on the pages of that link (yes it IS complicated stuff and WILL melt some brains.) Thankfully one doesn't need to know the details to be able to click the buttons to use it.

My system has a lot of speakers and subs, about 72 Motu channels. I coded the app out of frustration with the quality and speed of existing audio players and applications (like Audition), that sort-of worked but not at the level I needed/wanted.
The anti-subscription model. LOL... Problem solved!

Anyhow, I think I have answered your question precisely and accurately and in a "for-dummies" format. Which I think is what you wanted...
 
Last edited:
Top Bottom