• 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!

Shadrach

Addicted to Fun and Learning
Joined
Feb 24, 2019
Messages
676
Likes
980
Depends on what you mean. As long as you're using a shared backend such as MME, DirectSound or WASAPI Shared, then yes, you can have multiple FlexASIO instances running to the same device. But there's nothing particularly interesting about that: in that mode FlexASIO emulates a typical (e.g. DirectSound) Windows application, and goes through the entire Windows audio stack (including the Windows mixer). Therefore it's completely unsurprising that it supports multiple clients per device. It would be misleading to say that this is a way to do "multiple ASIO to the same device" since FlexASIO (just like ASIO4ALL) is a universal ASIO driver, i.e. it's an emulation layer, not a "true" ASIO driver (such as one that would be provided by the audio device manufacturer).

When using WDM-KS (either in FlexASIO or in ASIO4ALL), things get a bit more interesting because, AFAIK, there are devices out there that make it possible to run multiple KS streams at the same time to the same endpoint - it's hardware mixing, basically. It was all the rage in the days before Windows Vista (hardware audio acceleration), but I don't know if you can still do that in modern Windows versions. The reason why that's interesting is because it makes it possible to run a bit-perfect, but not necessarily exclusive, pipeline to the hardware. I've never tried it, though.

Following a similar principle, it is theoretically possible for an audio manufacturer to provide a "native" ASIO driver that allows multiple ASIO applications to use the same endpoint. That would require them to implement some kind of mixing capability either in the driver or in the hardware. I doubt any manufacturer would bother, though.



To put a different spin on that question, keep in mind that in general you can't use multiple ASIO drivers (or multiple instances of the same driver) at the same time from the same ASIO Host Application process. That's a silly limitation of the ASIO Host API, which uses global state all over the place. I suspect there are ways for application developers to circumvent that limitation through clever workarounds, but I don't know if anyone bothered.
I've been wondering about this. I keep seeing ASIO4all being referred to as a driver, but my understanding is it is what we used to call a wrap, or as you have written, an emulator. There are 'true' ASIO drivers available. I wondered if some of the problems amirm has encountered with try to get ASIO4all to woek with some equipment might be avoided by using a proper driver.
 

edechamps

Addicted to Fun and Learning
Forum Donor
Joined
Nov 21, 2018
Messages
910
Likes
3,621
Location
London, United Kingdom
I've been wondering about this. I keep seeing ASIO4all being referred to as a driver, but my understanding is it is what we used to call a wrap, or as you have written, an emulator.

Yes. That's true for FlexASIO, ASIO2WASAPI, ASIO2KS as well. The colloquial term is universal ASIO driver. All these drivers do is build a bridge between the ASIO API and some standard Windows audio API. Nothing more. I get the impression that some people don't realize this, and believe that, say, ASIO4ALL is "magic" in some way. It's not. It's just a bridge to WDM-KS. If your audio application has a direct WDM-KS output mode, that's basically the same as using ASIO4ALL (modulo small differences in how they're using the WDM-KS API).

(It doesn't help that the term "ASIO driver" is a bit misleading to begin with, because the term "driver" implies kernel-mode operation, but an ASIO driver is technically just a DLL that runs in user space; it's not a "driver" in the Windows sense of the term. Though in the case of a native driver, it would presumably interact with the Windows driver for the audio device in some special way.)

There are 'true' ASIO drivers available.

Depends on the hardware. For a $10 USB dongle for example, I really doubt the manufacturer took the time to develop a native ASIO driver for it :) Even for hardware that does come with ASIO drivers, such drivers are often riddled with bugs, to the point of being worse than using something like WDM-KS or WASAPI Exclusive (either directly or through an universal ASIO driver).
 

Shadrach

Addicted to Fun and Learning
Joined
Feb 24, 2019
Messages
676
Likes
980
I don't use Windows any more, but I understood that the changes in the Windows audio stack from XP onwards eliminated the need for a wrap because Direct Sound, in it's various implementations was made usable. ASIO drivers then became useful only for latency reduction when recording (?)
 

edechamps

Addicted to Fun and Learning
Forum Donor
Joined
Nov 21, 2018
Messages
910
Likes
3,621
Location
London, United Kingdom
ASIO was invented to improve latency. If you look at the ASIO SDK docs, they mostly focus on latency considerations and not much else.

ASIO was introduced in 1997. Microsoft did a lot of work in the past few years to improve the latency of WASAPI Exclusive for Pro Audio applications. I would not be surprised if modern applications, using modern hardware and running on modern Windows, can achieve better latency through WASAPI Exclusive than native ASIO.

Today, ASIO is used in other contexts like "audiophile" playback and measurement software. It was not originally designed for these use cases (which mostly don't care about latency), but because audio paths in ASIO are often bit-perfect, it works pretty well for these applications. It also helps that, from a software developer perspective, the ASIO API is relatively simple and straightforward, which means integrating ASIO into an application is relatively cheap and easy. (That said, I wish these developers gave WASAPI more of a chance, as it is quite easy to use too, and the API is better designed than ASIO.)
 
Top Bottom