FlexASIO
FlexASIO copied to clipboard
Configure all inputs and all outputs of a single USB Audio interface
Hi, How is it possible to configure a precise list of inputs and outputs for a specific device that has many inputs and outputs? (example: USB audio interface like this one)
This is what I would be looking for:
backend = "Windows WASAPI"
bufferSizeSamples = 128
[input]
channels = 10
device1 = "MOTU Analog 1-2 (MOTU Audio Wave for 64 bit)"
device2 = "MOTU Analog 3-4 (MOTU Audio Wave for 64 bit)"
device3 = "MOTU Analog 5-6 (MOTU Audio Wave for 64 bit)"
device4 = "MOTU Analog 7-8 (MOTU Audio Wave for 64 bit)"
device5 = "MOTU Return 1-2 (MOTU Audio Wave for 64 bit)"
[output]
channels = 4
device1 = "MOTU Analog 1-2 (MOTU Audio Wave for 64 bit)"
device2 = "MOTU Analog 3-4 (MOTU Audio Wave for 64 bit)"
Thanks in advance!
FlexASIO can only use one input device and one output device at a time. By "device" I mean the Windows definition of "device", specifically, an endpoint device, i.e. a device that appears in the Windows audio control panel and in the output of PortAudioDevices.exe.
It doesn't matter that some of these "logical" devices are really backed by the same hardware device ("adapter" in Windows parlance): you will only be able to use one of these logical devices at a time in FlexASIO.
To lift this limitation one would need to implement multiple device support in FlexASIO. PortAudio has some rudimentary support for opening multiple devices at the same time, but only for the MME backend. This means that, if someone were to expose this PortAudio feature through FlexASIO (which, currently, it is not), you would be forced to switch to the MME backend to make use of the feature, and would have to suffers the limitations of MME (latency in particular might be a problem).
The other alternative is to open multiple PortAudio streams in FlexASIO. Which is easier said than done, because making that work involves buffer synchronization, which is not trivial to get right and might come with its own latency penalties.
(A somewhat similar discussion occurred in #45.)
Note that some Pro Audio interface drivers make it possible to set up the Windows endpoint devices in a different way. For example some interfaces can be configured to expose a single 7.1 (8 channels) endpoint device instead of 4 stereo endpoint devices. That could be a way to work around your problem, as FlexASIO has no problem opening all 8 channels of a single 7.1 endpoint device at the same time.
Thank you for your answer. It seems complicated indeed to implement this, then.
Remark: For my USB audio interface, all devices listed with PortAudioDevices.exe only have 2 channels:
Output: max channel count 2
and
Input: max channel count 2
This is too bad. This means I can't use FlexASIO as a replacement for ASIO4ALL, which can do multiple outputs. But I also can't use ASIO4ALL because it isn't multi-client, and FlexASIO is.
Related discussion: https://music.stackexchange.com/questions/20484/how-to-make-asio-work-with-multiple-programs-simultaneously-how-can-i-listen-t
This is too bad. This means I can't use FlexASIO as a replacement for ASIO4ALL, which can do multiple outputs. But I also can't use ASIO4ALL because it isn't multi-client, and FlexASIO is.
I get around this by using FlexASIO for my first program and using the Yamaha Steinberg USB ASIO audio from my Yamaha MG10XU for my second program. If i needed a third program with ASIO, i'd be in some trouble.