Acquiring 8 channels in realtime... USB->USB?

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
I need to get 7.1 audio into an x86 machine. For the sake of example I'll assume the source is a PS4; I want a fairly generic approach that could work with any 7.1 source with little per-device hassle.

Approaches I have considered:
* TOSLINK with Dolby Digital Live/DTS-I: This is probably the path of least resistance, but it can only handle 6 channels, it's compressed, and it has a serious and unavoidable algorithmic delay. Additionally not all devices that have a TOSLINK port can actually do realtime Dolby (the PS4 can, many desktops can't without hacked/unofficial drivers).

* Analogue: The PS4 doesn't have any analogue out, but inexpensive "7.1 sound card" devices are available which will happily produce 8 analogue channels. I could buy a fairly expensive professional USB audio interface for the macbook, lead 8 cables across, deal with levels/clipping/interference/all the other issues that come with the analogue hole, and hopefully get an acceptable result.

* USB: This is the idea I like the most, but I'm not sure if it's practical. Imagine a box with two USB A cables coming from it. One connects to a source, which sees a 7.1 UAC1/UAC2 sound output. The other connects to my macbook. Ideally, it shows up as an 8-channel UAC1/2 input device. Less ideally, but still workable, it could just show up as some kind of high speed serial stream of bytes to be dealt with in software.

Please enjoy the world's most detailed and informative diagram:

myVK5XN.png


This would allow me to just plug it into any device that can output 7.1 over USB and enjoy 8 uncompressed low-latency channels.

I imagine this is going to involve finding a combination of ICs to do the job and composing them appropriately, perhaps writing some code for a microcontroller somewhere. It might be entirely impractical, in fact.

As I'm sure you can tell, I'm not an electrical engineer and am very much out of my depth. But I'm a quick learner, and if anyone can point me in the right direction, I'm perfectly willing to break stuff and waste plenty of time and money on this.
 
Last edited:
Thanks for suggesting ADAT, that hadn't even crossed my mind. The source end of things isn't really a solved problem yet though- it looks like the AL1401 takes 4x (I2S?) stereo pairs and pushes them out over ADAT, so I still need something that can talk to a USB host, show up as an 8-channel USB Audio device, and convert the audio it gets provided with to I2S stereo pairs to be sent to the AL1401. And that's the part I've really struggled with; there don't seem to be many multichannel USB Audio ICs.
 
Fanatic
Joined 2009
Paid Member
Voicemeeter banana has two virtual soundcards built in, can have 3 additional input sources, there are separate audio buses, and it can use vban to transmit a lot of audio channels via network protocols.

Edit:
If you want the definite PRO solution, you need to check out Dante's Audinate system, some of the stuff is priced low enough to get for home useage.
Audinate - Dante Audio Networking, AV's Leading Technology
 
Last edited:
Yes it might- thanks for the link

(Various network options)
Thanks for the suggestions but that isn't really what I had in mind- I'm looking for traditional direct wired connections. Basically I wish ADAT was as ubiquitous as TOSLINK; since it isn't, I need to find a workaround.

Although I've been somewhat sidetracked by finding out about freeDSP and other such boards- now I'm wondering if I could skip the PC do the convolution on one of those...
 
Fanatic
Joined 2009
Paid Member
Thanks for the suggestions but that isn't really what I had in mind- I'm looking for traditional direct wired connections. Basically I wish ADAT was as ubiquitous as TOSLINK; since it isn't, I need to find a workaround.

Indeed, I've been having a hard time banging my head against the limits of transmission of sound via digital interfaces. It's not a limitation of the TOSLINK cable, plugs or whether it is coax or optical. It is the standard itself that should be updated, but in a world where Cash is King, Popularity Rulez, and because HDMI have been focusing firstly on compatibility to everything, all other functions gets placed a long way down the list, so it is not the best format to use for specific functions.
The transition to LAN based audio transmission via already existing protocols for error correction and latency, elegantly sidesteps a number of limitations found in other solutions. And there is more than enough bandwidth to get a good data flow for audio.
 
Last edited:
Windows 10 now has a native UAC2 driver that supports multi-channel and should work with these boards as well. They work without any custom drivers in Linux and MacOS using UAC2.
And you can buy a fully functional Windows driver from them, if you wish, for something like $10.

And if you want bit perfect you should stay away from Windows anyway, unless you want to go and change the sampling rate every time you play a different stream to match it.
People have been discovering lately that even with ASIO drivers windows still resamples the streams and changes the volume :)
 
People have been discovering lately that even with ASIO drivers windows still resamples the streams and changes the volume :)

Can you provide the link, where this was described?

Because my experience is totally different - using XMOS ASIO driver, window does not resample audio data and cannot change the volume (however, changing the volume is still possible in some player softwares).
I have made a lot of experiments, testing the reliability of the USB transmission (because UAC uses isochronous data transfer type, which does not guarantee the correct data transfer - no data ressending if an error occurs).
I used 2 way data transfer - data loop at I2S side after XMOS USB<>I2S interface. Then the send and received data wee compared.
The results were very good. But, if the windows can change the data or make the volume control - it will be no bitperfect data transmission, which was.

P.S. Also DoP mode operation can be the evidence, that the data is not changes.
 
Last edited:
This will give you the USB to I2S part: XMOS Multichannel high-quality USB to/from I2S/DSD SPDIF PCB - DIYINHK. You can probably use 2 of them to get the full functionality you're looking for.

OK thanks for the link- so as a sanity check, I could literally just buy two of these and solder the i2s out lines from one to the in lines of another?

I'm not too worried about Windows drivers, I'm aware of the UAC2 driver issue. I'm more concerned about whether it would work with a PS4, but there are commercial "gaming amp" products that show up as 8-channel audio devices, so I expect it would work.

I actually don't really care about transmission being literally bit-perfect, as long as it sounds transparent to my ears.
 
OK thanks for the link- so as a sanity check, I could literally just buy two of these and solder the i2s out lines from one to the in lines of another?

In theory, yes, I have not done it myself. You might want to think about using a separate power supply (or some sort of isolator) for the boards to avoid bridging the two computers and getting a nasty ground loop and associated hum.
 
OK thanks for the link- so as a sanity check, I could literally just buy two of these and solder the i2s out lines from one to the in lines of another?

I'm not too worried about Windows drivers, I'm aware of the UAC2 driver issue. I'm more concerned about whether it would work with a PS4, but there are commercial "gaming amp" products that show up as 8-channel audio devices, so I expect it would work.

I actually don't really care about transmission being literally bit-perfect, as long as it sounds transparent to my ears.

Did you end up trying the USB to I2S to I2S to USB conversion, and did it work? I'm trying to do something similar, connecting 2 MCHStreamers together to go from a source PC to a dedicated DSP PC.
 
Did you end up trying the USB to I2S to I2S to USB conversion, and did it work? I'm trying to do something similar, connecting 2 MCHStreamers together to go from a source PC to a dedicated DSP PC.

I thiink that the simplest way is:
uP with dual USB FS Device port

PC-> USB FS UAC1.0 (Play Only)-> uP RAM Buffer - > USB FS UAC1.0 (Record Only)-> Console
Sorry, in the end I abandoned this approach and went with the optical DTS option I listed in the OP. I also ended up using a Raspberry Pi rather than an x86 box.

So the path is:
6-channel source w/ DTS Interactive encoding->optical->Pi with Hifiberry Digi+ I/O->software decode of DTS stream to 6 channels->convolution with IRs and other tweaks to audio->stereo PCM->optical->DAC.

The delay is low enough that my puny ears/brain can't detect it; same goes for the lossy DTS compression.

As an aside- Using the pi (3A+, so supports USB host mode), I attempted to gather USB audio via the Linux USB Gadget system. The result was a mess- UAC1 outputted garbage when I tried to use more than 2 channels, and UAC2 didn't work at all with Win10's default drivers. A deep dive into Linux kernel mailing lists revealed a very complicated situation which a few people might be working on fixes for. I'll revisit USB if that clears up.

As another aside- if you want to use a desktop PC as a source, buy a mobo where the manufacturer didn't cheap out by skipping the DD Live and DTS-I licenses. Otherwise you'll have to spend a stupid amount of time wrestling with unofficial hacked drivers from other boards. Oh well, it works now! Still haven't actually tried with a PS4- I have a Slim with no optical port, so I'll need to get an HDMI audio extractor box for it.

Thanks everyone for the advice ITT!
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.