USB Audio Interface 48x48 – Questions about scalability and performance

Discussions about USB Audio on XMOS devices
Radek
New User
Posts: 2
Joined: Fri Jul 25, 2025 9:13 am

USB Audio Interface 48x48 – Questions about scalability and performance

Post by Radek »

Hi everyone,
This is my first post here, so first of all – hello and thank you for all the valuable discussions on this forum. They've been a great help in getting started with the XMOS platform. I’ve been working with the XK-AUDIO-316-MC-AB evaluation board for about a week now, and I’d like to share my goals and a few technical questions.

I’m trying to build a USB Audio interface with 48x48 channels at 48kHz, which would be scalable downward depending on the sample rate, like this:

48x48 @ 48kHz

24x24 @ 96kHz

12x12 @ 192kHz

I know that a 48x48 interface is possible, as Behringer's Wing console uses XMOS and achieves something similar.

So far, I’ve managed to get a 32x32 @ 48kHz system working with conversion to 8 x TDM8, and it runs relatively stable. Unfortunately, XUA-USB does not allow more than 32x32 channels, at least not in the default configuration.

Question 1:
Is there any way to go beyond this 32x32 limit? Perhaps by modifying the USB audio stack or using a non-standard approach?

Question 2 – Performance:
At 96kHz, I can only run one TDM8 bus reliably. When I try to use two TDM buses, performance becomes unstable. I’ve been thinking about a few possible solutions and would appreciate your thoughts on whether any of them make sense:

Use XMOS parallel ports and connect them to an FPGA, where I could freely configure the audio streams as needed.

Use two XMOS processors connected via xCONNECT, where one handles USB + 6x I2S (12 channels), and the second handles, for example, 3x TDM (up to 96kHz).
I know this would result in fewer channels than I originally intended, but I’m open to reducing the number of channels if necessary.

Upgrade to a faster 800 MHz XMOS processor – I’m not sure if this would make a significant difference in real-world performance.

Any advice, examples, or confirmation that someone has already gone down this path would be much appreciated. I’m aiming for a stable, scalable system with as many channels as reasonably possible, while being aware of the inevitable trade-offs.
User avatar
Ross
Verified
XCore Legend
Posts: 1230
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

The theoretical max channel count for standard bandwidth endpoint in an async usb audio device is as follows (assuming a 4byte sample slot size):

36 in/out @ 48 kHz
20 in/out @ 96 kHz
10 in/out @ 192 kHz

So you'll need a high-bandwidth implementation, which we just so happen to be releasing in a few weeks so stayed tuned...!

We'll be topping out a theoretical max channel count of about double the above (we are only implementing 2 transactions per iso transfer, the spec allows for 3)

Expect to require an 800 MHz part for this.
Technical Director @ XMOS. Opinions expressed are my own
User avatar
Ross
Verified
XCore Legend
Posts: 1230
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

To achieve higher than what's above a 3 byte sample slot size could be used, the issue with this is the extra processing overhead to unpack the samples.

This would take a 48k to a theoretical max of 53 channels on a standard bandwidth EP.
Technical Director @ XMOS. Opinions expressed are my own
Radek
New User
Posts: 2
Joined: Fri Jul 25, 2025 9:13 am

Post by Radek »

Thank you, Ross, for the quick reply.
This is really great news – the new implementation should be more than sufficient for my application.
Could you share a bit more information about the external TDM/I2S communication capabilities in this implementation?
For example, would it be possible to run 2x TDM8 at 192 kHz, and 4x TDM8 at 96 kHz?
One last question – is it possible to run both I2S and TDM lines simultaneously?