Hello!
I have an 8-out, 6-in board working perfectly over ASIO. We have deployed several units successfully without any issues, using Asio4All2. I believe I have configured everything correctly in xua_conf.h (as my units have been running 24/7 without problems). The setup is straightforward: no Mixer Core, no ADAT, no SPDIF, no MIDI—everything on I2S.
It works flawlessly on Linux. However, on Windows, it only exposes one stereo audio endpoint for playback (speaker) and one for recording (microphone).
My question is: Does this framework support exposing more endpoints? Ideally, I would like an endpoint for every two channels.
Why? Some of my end users’ applications do not support ASIO, so they need access via standard Windows devices. Since some endpoints are already exposed, I assume it might be possible to expose more. I have seen other ASIO boards, like some from Focusrite, doing something similar.
Is this something the XMOS audio MC framework can do? Is it non-trivial? Any hints on where to look or how to achieve this would be greatly appreciated!
Thanks!
Audio USB exposes only two channels on Windows
-
- Junior Member
- Posts: 7
- Joined: Mon Apr 03, 2023 10:08 pm
-
- Member
- Posts: 8
- Joined: Tue Jul 16, 2024 9:52 am
- Location: Bristol, UK
When not using ASIO4ALL, which Windows audio interface do you use? MME is limited to two channels, but WASAPI can do more than stereo.
The 8-in, 8-out analogue config (2AMi8o8xxxxxx) is tested with the Microsoft usbaudio2 driver. I am able to record and playback 8 channels using Audacity with WASAPI.
The 8-in, 8-out analogue config (2AMi8o8xxxxxx) is tested with the Microsoft usbaudio2 driver. I am able to record and playback 8 channels using Audacity with WASAPI.
-
Verified
- XCore Legend
- Posts: 1071
- Joined: Thu Dec 10, 2009 9:20 pm
- Location: Bristol, UK
Careful using the term "endpoint" when talking about usb audio devices - it has a meaning in the USB world (unless that was your actual meaning ;)
Technical Director @ XMOS. Opinions expressed are my own
-
- Junior Member
- Posts: 7
- Joined: Mon Apr 03, 2023 10:08 pm
Yes, I’m aware of the multiple interpretation issue, but in this case, I think there may be a relationship.
From the GitHub source code, it exposes two Windows audio interfaces: one for playback and one for recording, both with 2 channels, and both working perfectly based on my experience so far.
Does the framework permit me to expose more stereo audio interfaces, for example, channels 3/4? If not, what would be the way to do this, or at least, what is a good starting point to look for in both the source and literature?
When I plug it into Windows, it exposes channels 1/2 from the DAC/ADC to a Speaker/Microphone Audio interface.danielp wrote: ↑Mon Jul 22, 2024 9:48 am When not using ASIO4ALL, which Windows audio interface do you use? MME is limited to two channels, but WASAPI can do more than stereo.
The 8-in, 8-out analogue config (2AMi8o8xxxxxx) is tested with the Microsoft usbaudio2 driver. I am able to record and playback 8 channels using Audacity with WASAPI.
I’m aware that WASAPI works well with Audacity, and I believe there is a build that supports ASIO too. However, some of my end users’ tools are completely proprietary, and I’ve only seen them configured as MME clients.
To be honest, I’ve never implemented audio software in Windows, so I’m not sure if a software that supports an MME audio device automatically supports a WASAPI audio device. My hunch is that it doesn’t.
So what i'm looking for: to expose 4 windows audio device with two channels each. is that possible?
Does this make anymore sense? Anything that points me to the right direction is greatly apreciated!
Thanks!
-
Verified
- XCore Legend
- Posts: 1071
- Joined: Thu Dec 10, 2009 9:20 pm
- Location: Bristol, UK
No, the code doesn't support this, it supports a single streaming interface in each direction, as you suggest. Though I do recall customer development in this multiple streaming interfaces area in the distant past. Windows will treat this as two separate audio devices, I don't know an application that will allow streaming to two interfaces simultaneously, if that is your goal?breadbanana wrote: ↑Mon Jul 22, 2024 9:31 pm Yes, I’m aware of the multiple interpretation issue, but in this case, I think there may be a relationship.
From the GitHub source code, it exposes two Windows audio interfaces: one for playback and one for recording, both with 2 channels, and both working perfectly based on my experience so far.
Does the framework permit me to expose more stereo audio interfaces, for example, channels 3/4? If not, what would be the way to do this, or at least, what is a good starting point to look for in both the source and literature?
Understand, I'm interested in the use case for such a device. Previous efforts are typically based around wanting a separate digital interface (S/PDIF, for example)breadbanana wrote: ↑Mon Jul 22, 2024 9:31 pm So what i'm looking for: to expose 4 windows audio device with two channels each. is that possible?
Does this make anymore sense? Anything that points me to the right direction is greatly apreciated!
Thanks!
Edit: I just re-read your post on priority MME based software, understand reasoning now - is this capable of using multiple interface simultaneously though? This would seem like a sticking point.
Technical Director @ XMOS. Opinions expressed are my own
-
- Junior Member
- Posts: 7
- Joined: Mon Apr 03, 2023 10:08 pm
This customer uses custom-written applications to fit their needs. The device I'm working with is an upgrade for an older analog device from the 80s or 90s, pretty much an audio mixer. They have setups on channels 1/2, 3/4, and 5/6, each set up differently for various software applications. For example, one setup is used solely for archiving, so some tracks aren't needed or are region-specific. So in this case i'm really looking for to work with multiple separated stereo channels this would embrance this and some other simple use cases the end users might have.Ross wrote: ↑Mon Jul 22, 2024 9:44 pmNo, the code doesn't support this, it supports a single streaming interface in each direction, as you suggest. Though I do recall customer development in this multiple streaming interfaces area in the distant past. Windows will treat this as two separate audio devices, I don't know an application that will allow streaming to two interfaces simultaneously, if that is your goal?breadbanana wrote: ↑Mon Jul 22, 2024 9:31 pm Yes, I’m aware of the multiple interpretation issue, but in this case, I think there may be a relationship.
From the GitHub source code, it exposes two Windows audio interfaces: one for playback and one for recording, both with 2 channels, and both working perfectly based on my experience so far.
Does the framework permit me to expose more stereo audio interfaces, for example, channels 3/4? If not, what would be the way to do this, or at least, what is a good starting point to look for in both the source and literature?
Some of these software applications are quite simple, but when I visited their place, I noticed each piece of software in use was configured with an stereo MME device.
I'm just looking ahead and finding a solution before the issues arise. Initially, I assumed ASIO or at least WASAPI was more universal, but it appears I was mistaken!
Yeah, this is quite an embedded solution for the company that maintains these older devices. They have a long list of end users busting equipments os destroying the device performace because wrong usage of external audio boards, his solution? make a dedicated audio usb board for the device.Ross wrote: ↑Mon Jul 22, 2024 9:44 pmUnderstand, I'm interested in the use case for such a device. Previous efforts are typically based around wanting a separate digital interface (S/PDIF, for example)breadbanana wrote: ↑Mon Jul 22, 2024 9:31 pm So what i'm looking for: to expose 4 windows audio device with two channels each. is that possible?
Does this make anymore sense? Anything that points me to the right direction is greatly apreciated!
Thanks!
Passing the inital shock of xc language, i'm having a lot of fun with XMOS, it is a very interesting device, and the framework is amazing.
I'm pretty sure i saw some entry tier USB interface like Focusrite or something like that, implementing this solution. So you could use each pair of channels trough their windows audio device, or you could use it trough ASIO after instaling the manufacturers driver.
This is exactly my point! So now i know the framework is not ready for it... right now, i'm tottaly not ready to tackle this challenge, i have lots of years in embedded, but not so much in USB, and your framework is anything but trivial. As it is so generic i'm geting acquanted to it. But i would love to have at least a starting point to where the black magic happens, what paths should i follow if some day, in the really near future I adventure on this task?
Thanks!
-
- XCore Addict
- Posts: 143
- Joined: Mon Apr 16, 2018 9:14 am
You could ask Thesycon. I saw that they offer some additional virtual MME devices as an extension to their standard license.
-
- Junior Member
- Posts: 7
- Joined: Mon Apr 03, 2023 10:08 pm
Yeah using a virtual MME device is something I have on my toolkit already, i don't love it though.MaximLiadov wrote: ↑Tue Jul 23, 2024 2:08 pm You could ask Thesycon. I saw that they offer some additional virtual MME devices as an extension to their standard license.
I did some test, with good enough results.
But in my way of viewing the product, I have a perfect adequated device capable of doing it, the XMOS MCU, why should I delegate to OS if i can solve it on my device?
If it is possible, the bare minimum I can do is at least give a shot!
But this solution is something I consider as a short term solution, but i would like a more permanent by the standards solution.
-
- XCore Addict
- Posts: 143
- Joined: Mon Apr 16, 2018 9:14 am
I see nothing wrong with virtual devices model on driver side. It already exists, it does work.
I see no shortcuts to do this easily on XMOS. Not sure if you can just duplicate all XUD code for another device instance and how many hardware resources it will take. Sounds a bit crazy to me. I faced all the time with compiler issues here and there, like .xc source file is too big to compile.
PC, on the other hand, has unlimited processing power, memory, and convenient, well-documented compiling and debugging tools.
I see no shortcuts to do this easily on XMOS. Not sure if you can just duplicate all XUD code for another device instance and how many hardware resources it will take. Sounds a bit crazy to me. I faced all the time with compiler issues here and there, like .xc source file is too big to compile.
PC, on the other hand, has unlimited processing power, memory, and convenient, well-documented compiling and debugging tools.