Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Split multichannel audio between two physical devices (Read 4509 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Split multichannel audio between two physical devices

Hi everybody, I've read some other similar topics but I haven't found a clue yet.

I have two physical USB DACs (Topping E30), connected at the same time on two USB ports.
My foobar outputs a 4-channel audio (via DSP manager > Convert Stereo to 4 channels). If you're curious here's why, it has already been discussed.
Now I'd just like audio to be split : channels 1-2 go to DAC 1, and channels 3-4 go to DAC 2.

Here's what I've done so far :
- Installed Topping ASIO driver
- Installed ASIO4ALL
- Installed foobar ASIO component

Foobar sees ASIO4ALL v2 among the outputs, no problem.
Under Prefs > Output > Asio, I see 3 different drivers : ASIO4ALL v2, Realtek ASIO, and Topping USB Audio Device.
If I double click on "Topping USB Audio Device", I can see both of my E30 DACs.
However if I double click on ASIO4ALL v2, I see that none of the DACs appear in ASIO4ALL control panel. Only the Realtek (which I don't want to use) appears in the list of WDM devices.

Am I doing something wrong ? Should I uninstall Topping driver for ASIO4ALL to see my DACs ? Is there a better solution than ASIO4ALL for what I want to do ?
Thanks in advance for your help. :)

Re: Split multichannel audio between two physical devices

Reply #1
However if I double click on ASIO4ALL v2, I see that none of the DACs appear in ASIO4ALL control panel.
Are DACs connected to PC at this moment?

You probably can do what you need even without ASIO4ALL if E30 already has ASIO driver. Can you post screenshot what you see when you click "Add new" in "Custom channel mappings", then select your Topping's driver in " Driver? I mean this window:

Re: Split multichannel audio between two physical devices

Reply #2
Thanks Rollin :) Here are two screenshots.
I would be happy if I didn't need ASIO4ALL. Fingers crossed !

Re: Split multichannel audio between two physical devices

Reply #3
Unfortunately i can now only suggest to uninstall Topping's driver and see what happens.

Re: Split multichannel audio between two physical devices

Reply #4
I've properly uninstalled Topping driver and rebooted.
Now I don't see the DACs among Windows Sound > Playback devices, and I don't see them in Device manager either.
But ASIO4ALL doesn't seem to see them either (see pics).

Re: Split multichannel audio between two physical devices

Reply #5
This is strange. Win10 should automatically detect device and install standard driver for it. Is device at least visible in Device Manager as unknown device or something like that?
Did you try to disconnect and connect USB cable after removing driver?

Re: Split multichannel audio between two physical devices

Reply #6
I have rebooted, disconnected and reconnected USB of one of the DACs.
Now it appears in Device Manager as E30 with the usual yellow triangle.
In this laptop I'm using Win 8.1, not Win 10.

Right-click > Properties says that "The device can't be started (Code : 10)". Maybe that's why ASIO4ALL can't see it ?
We also see that a standard MS driver has been installed for it. It's a 2013 driver (6.3.9600.16490).

Here are some screen caps. They're in french but I guess you'll understand. I hope they help.
For the record, under "Périphériques logiciels" (Software devices), there is no MS GS Wavetable Synth, even when showing hidden devices.

Re: Split multichannel audio between two physical devices

Reply #7
Small addition : a member of ASR just said this :
"You need Win10 for the out of the box, up-to-date UAC2 driver. Win 7, 8 and 8.1 are simply outdated and won't work without Topping driver install. No way around that."
So I need Topping driver with Windows 8.1. No problem.
But why I can see both my E30s with foobar2000 (and use them, one at a time), but I still can't see them with ASIO4ALL ? Is the Topping driver having some kind of very exclusive access to the point that ASIO4ALL can't even see the E30s ?
Is there a way to install the UAC2 driver on Windows 8.1 maybe ? I've found this link but I don't know if it's reliable : https://www.driver-soft.com/html/501280.html

Re: Split multichannel audio between two physical devices

Reply #8
Does output with WASAPI exlusive works when driver is installed? Does output with WASAPI shared works?

Re: Split multichannel audio between two physical devices

Reply #9
If you mean "WASAPI (event)" and "WASAPI (push)" outputs, they both work when Topping driver is installed, no problem :)

Re: Split multichannel audio between two physical devices

Reply #10
A shot in the dark: disable "USB selective suspend" in windows' power settings. Then restart/reboot everything and try again.
Also, it would be good idea to try with another PC.

Re: Split multichannel audio between two physical devices

Reply #11
I have tried at the moment. It doesn't change anything.
The laptop is in high performance mode, but still the USB selective suspend was active, so I disabled it and rebooted. A4A still doesn't see the DACs.
I can try with another laptop, but it will just be Win 7 instead of Win 8.1. I have no Windows 10 at all.

Re: Split multichannel audio between two physical devices

Reply #12
On second thought and after discussing with my GF, I may have the possibility of installing Windows 10 on the same laptop.
Would Windows 10 really improve things ?
Would it make possible to use both DACs without A4A ?

Re: Split multichannel audio between two physical devices

Reply #13
Maybe you can use another program in place of ASIO4ALL, which can use the ASIO protocol itself instead of KernelStreaming for communicating with sound cards, such as VB-Audio Voicemeeter, or the other products that offer more channels. I am not sure how it handles the inevitable difference in clock speed of 2 audio outputs, whether it involves resampling.

Unsurprisingly, UAC2 appears to be designed to enforce planned obsolescence...

Re: Split multichannel audio between two physical devices

Reply #14
I am not sure how it handles the inevitable difference in clock speed of 2 audio outputs
Hi j7n. The goal is for two different people to listen to the same music at the same time on two different headphones. My foobar outputs a 4-channel audio (EQed individually for each headphone thanks to Rollin's amazing help), which then has to be split between the two stereo DACs (unless foobar could do it directly, which would be amazing). That was the only purpose of A4A for me.

I'm no expert, but I've been told that in my case clock sync issues between both DACs shouldn't have any audible difference. AFAIK such difference is about 2 samples per second. So for one whole 4-minutes song, it would be 480 samples, which is 0,0109 seconds @ 44.1 KHz. Which means that the song would end 0,01 sec later in one headphone vs. the other, so none of the listeners would notice. And at the end of the song we generally press pause or stop, so audio delay is reset to 0. How could that be a problem ?

Plus I don't know if it means something, but A4A buffer size can go up to 1024 samples. Possibly even more in other software.

As for software, I have only tried A4A for the moment. I would like to try DDMF's Virtual Audio Stream, but it doesn't seem to be available anymore. Which is a pity since its GUI was amazing. I can try Voicemeeter of course. Any other suggestions ?

Re: Split multichannel audio between two physical devices

Reply #15
I guess in your application his would not be a problem. Taking another look, I am not certain that this program can route different virtual input channels to its outputs. Maybe you could ask on their forum, where the dev is active, if that is possible before making changes to the system.

Re: Split multichannel audio between two physical devices

Reply #16
I apologize for the misleading comment. It appears that the program is quite limited as a mixer. I was told on the forum that it cannot use 2 ASIO outputs, only Windows, which is not available here.  :-[
Spoiler (click to show/hide)

Re: Split multichannel audio between two physical devices

Reply #17
Thanks for asking @j7n . I'm not sure I understand Andres' reply, it looks awfully complicated !
However, I have found this that can be used with Voicemeeter : https://forum.vb-audio.com/viewtopic.php?f=8&t=394
Isn't this exactly what we're looking for ? (maybe it doesn't work with ASIO)
Here, Vincent Burel says that it's possible, he just doesn't talk about ASIO : https://forums.tomshardware.com/threads/how-can-i-use-3-sound-cards-for-5-1-surround-sound.3536885/

And if it's not, what are the remaining options ?
- Windows 10 ? How would that work exactly ?
- JACK Audio maybe ? https://jackaudio.org/news/
- Forgetting about ASIO and using Equalizer APO ? (that would be too bad, I have invested a lot of time with Rollin to be able to use foobar's Convolver to separately equalize ch1-2 and ch3-4...).
It's very frustrating to have 2 DACs + 2 Headphone amps + 3 pricey headphones in my living room right now, and not be able to use them like intended...

Re: Split multichannel audio between two physical devices

Reply #18
FYI I have submitted a support issue by email to ASIO4ALL developer.
ASIO4ALL includes a small debug utility (enum4ks.exe). I have run it (with Topping driver installed). Here is the report.
The utility detects both Topping DACs, but ASIO4ALL can't see them.

Re: Split multichannel audio between two physical devices

Reply #19
You could try to install it and follow the instructions by Andres, and then uninstall if it doesn't work. But it seems unlikely that it can use a WDM/KS device if A4A can't detect one. The dev posted on October that he could implement 2 outputs, but hasn't yet. Large GUI, but the mixer is more limited than what comes with sound cards...

 

Re: Split multichannel audio between two physical devices

Reply #20
I hope the A4A developer is active, responds soon and finds out what's going on. A4A should be able to detect the USB DACs, that's why the dev provided the enum4ks utility. If we can make A4A detect them, the problem should be solved. I believe it would be the easiest solution.

I have also emailed Topping's tech service, hoping that they may provide an option to aggregate both DACs in their ASIO driver. Some other DAC manufacturers in the past had that function (e.g. Mytek).

Re: Split multichannel audio between two physical devices

Reply #21
I have good news ! :D

Somebody on ASR just said that A4A detected his Topping DAC on Windows 10 ! That's great news !

So unless A4A developer answers my emails, maybe Windows 10 is the way to go. If so, I will perform the update, do the test suggested by Rolling in repy #1 of this topic, and keep you posted. ;)

Re: Split multichannel audio between two physical devices

Reply #22
@Rollin , @j7n , I'd like to report some great news : IT WORKS !!! IT WORKS !!! IT WORKS !!! :D  :D  :D

Moving from Windows 8.1 to Windows 10 did the trick. It took the whole night with all the updates (it's an old PC...), but it was worth it.
Once Windows 10 was installed, these were my steps :
  • Connect USB DAC #1 : it was correctly detected by Windows. Finally !
  • Connect USB DAC #2 : same thing.
  • Install ASIO4ALL, with no need at all for the Topping ASIO driver.
  • Launch ASIO4ALL : both DACs instantly appeared. One of them seemed inactive (red cross), but clicking on it activated it like the first one.
  • Launch foobar.
  • Select ASIO4ALL as output device.
  • Go to DSP Manager and add "Convert stereo to 4 channels".
  • Go to Prefs > Playback > Output > ASIO and select ASIO4ALL.
  • Create a custom channel mapping as follows (see attached picture - as you can see both DACs are recognized).
  • Add Convolver + 4-channel wav32 impulse response like already discussed with Rollin ;)
  • Optional : Prefs > Playback > Stop playback after current track (this is for peace of mind - avoiding audio drift due to clock sync issues by resetting the audio stream after each song)

At this point I played some music.
- Good news : music played on both headphones simultaneously
- Bad news : there were big artifacts on a regular basic (like "tac-tac-tac-tac-tac" lots of times per second). It was terrible !  ::)

Fortunately, the solution was easy : increase ASIO4ALL buffer size from the default (512) to the max (2048 samples).
Caution : the buffer size must be increased for each of the DACs ! Don't forget the second one !

I played some music again, checked both connected headphones alternatively, and it seemed to work.  :o So I asked my GF to put her headphones on, and we tested if there were any glitches over one full song.
The song played perfectly on both headphones, and we both finished exactly at the same time, with no noticeable delay, as expected. This is normal : if the lack of a master clock makes audio drift of (for example) 2 samples per second, then after a 4 min song, the drift is only 480 samples, which is 0,01 sec @44,1 KHz, so absolutely non-noticeable between both listeners. I'm not even sure that the audio drifted at all : maybe ASIO4ALL managed to keep everything under control, due to the fact that 480 samples is less than the 2048 samples buffer size (I don't know if that's how it works : I'm not an ASIO4ALL expert, and its developer seems dead, he doesn't reply on any of his 3 email addresses...  :'( ).

So I can confirm once and for all that YES, it was possible to achieve what I wanted (see the other attached pic), with Windows 10 and ASIO4ALL. IT WORKS !!!  :)

I have to thank everybody who helped me, especially Rollin : his help was beyond precious, I couldn't have made it alone, so...

With that said, I only have some easy questions before going back and enjoy my music  :)) :
  • Should I check the first checkbox in my screenshot ? (Use 64-bit ASIO drivers)
  • Should I check the second checkbox ? (Run with high process priority)
  • In Prefs > Playback > Output, the output format seems to be selectable (I'm used to it being selected automatically). Right now it's on 16-bit. Should I select 32-bit ?
    Both of my DACs are natively 32-bit, so I guess I should, even for 16-bit music, because that would allow for lossless digital volume control directly from foobar. Am I right ?
  • Are there other parameters that I should check ? (on ASIO4ALL, on foobar, on Windows...)

Thanks again for your help !

Re: Split multichannel audio between two physical devices

Reply #23
I suspect, that your setup is currently working not exactly as you think it is working.
In output you need to choose "ASIO4ALL v2 - my channel mapping" as output device, not simply "ASIO4ALL v2".
"Convert stereo to 4 channels" converts to FL-FR-BL-BR, not FL-FR-C-LFE. In custom channel mapping settings BL and BR are Surround Left and Surround Right respectively

Using 64 bit driver and/or running with high priority theoretically will result in more stability, i.e. less chances to get clicks and dropouts.

In Prefs > Playback > Output, the output format seems to be selectable (I'm used to it being selected automatically). Right now it's on 16-bit. Should I select 32-bit ?
Both of my DACs are natively 32-bit, so I guess I should, even for 16-bit music, because that would allow for lossless digital volume control directly from foobar. Am I right ?
Yes. Use 24 or 32.

Are there other parameters that I should check ? (on ASIO4ALL, on foobar, on Windows...)
In ASIO4ALL' advanced options be sure to disable both "Always resample" and "Force WDM driver to 16 bit". Increasing quantity of Kernel Buffers (if option is available) should give even more stability. Latency compensation can be set to 0, because you don't need it.

ASIO4ALL has manual. It is located in the same folder where ASIO4ALL is installed.
This is what manual says about synchronization:
Quote
Fortunately, most USB devices will automatically synchronize themselves for as long as the host controllers they are connected to have a common clock source, which is trivially true for the USB host controllers embedded in the south bridge on any mainboard.

Re: Split multichannel audio between two physical devices

Reply #24
Thanks Rollin. So far so good ! :)

Now I'm wondering if it would be possible to increase A4A's device buffer size beyond 2048 samples.
Maybe Michael Tippach designed 2048 as limit because he didn't think we could ever need more.
For 44.1 KHz dual playback it works very well (which is great - 44.1 KHz files are 98% or my music library).
For 192 KHz dual playback it seems that it doesn't work (I have again those "tac-tac-tac").

I guess A4A stores its settings somewhere. Maybe if we could manually edit that file and change the 2048 to 4096 or 8192 for every device, it could help solve the issue. What do you think ? (I would ask Michael Tippach to increase the limit, but he doesn't answer...).