Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Please extend support to >8 channels (e.g. Atmos is 7.1.4 (12ch)) #201

Open
raplin opened this issue Jul 5, 2023 · 4 comments
Open

Please extend support to >8 channels (e.g. Atmos is 7.1.4 (12ch)) #201

raplin opened this issue Jul 5, 2023 · 4 comments

Comments

@raplin
Copy link

raplin commented Jul 5, 2023

8ch is awesome but 12 moreso; I'd love to preview Atmos 7.1.4 mixes over Scream.
I'd use a custom receiver (on a RPi) driving two USB sound cards in parallel

I would do this myself as it looks straightfwd but.. ugh, driver signing hell..

..obvs I would have to resolve phase issues between the two cards (i.e. they wouldn't necessarily start streaming audio at the same instant) - but I have a plan for that; I think I can just analog-sum two output channels (one from each card) then feed them back into the line-in on one card. This would be good enough information so the output code can detect/adjust a delay to one of the cards card to bump them into phase.

Thankyou so much if it is possible to build a signed windows driver that supports this (just need 12ch streaming TO network, rest I can take care of). Thankyou!

@raplin
Copy link
Author

raplin commented Jul 13, 2023

ok I bit the bullet and installed all the necessary crap and .. I have 16 channel Scream device working under ASIO4ALL! Woot!

(Audio sink device is a RPi3 with a pair of CM6206 8ch soundcards, via an MTT-capable USB hub; complicated reasons why the RPi4 doesn't (yet) work properly in this role and why the MTT hub is required)

It was literally as simple as changing MAX_CHANNELS and then dealing with all the windows signing stuff...

@duncanthrax
Copy link
Owner

Meanwhile I'm looking at getting a new signing cert ...

@raplin
Copy link
Author

raplin commented Jul 14, 2023

Yay! Got it all working!
16ch streaming from windows!

a) Modified Windows Scream driver to 16ch. Run it under ASIO4ALL (b/c regular windows doesn't understand >7.1 audio devices!) so can use with Cubase, Fruityloops, and other ASIO apps. Regular windows apps still work but only the first 8ch work. ...Stupid windows!

b) Modified unix Scream client to 16ch (plus make it start up with 16ch instead of 2 b/c alsa issue where 'multi' device doesn't work with less channels)

c) Target is a RPi3 (note! RPI4 doesn't work properly) with an MTT USB hub (important) and two CM6206 8ch soundcards with them both running from the same clock (removed 12mhz xtal from slave unit and wired XIN to the CM6206 XIN on the other board, works fine). Playing with Scream in ALSA mode.

d) .asoundrc on the RPI creates a 16ch 'multi' sound device out of the two USB devices..
(note hw1,0 and hw2,0 are the two devices)
`pcm.multi {
type multi;
slaves.a.pcm "hw:1,0";
slaves.a.channels 8;
slaves.b.pcm "hw:2,0";
slaves.b.channels 8;
bindings.0.slave a;
bindings.0.channel 0;
bindings.1.slave a;
bindings.1.channel 1;
bindings.2.slave a;
bindings.2.channel 2;
bindings.3.slave a;
bindings.3.channel 3;
bindings.4.slave a;
bindings.4.channel 4;
bindings.5.slave a;
bindings.5.channel 5;
bindings.6.slave a;
bindings.6.channel 6;
bindings.7.slave a;
bindings.7.channel 7;

bindings.8.slave b;
bindings.8.channel 0;
bindings.9.slave b;
bindings.9.channel 1;
bindings.10.slave b;
bindings.10.channel 2;
bindings.11.slave b;
bindings.11.channel 3;
bindings.12.slave b;
bindings.12.channel 4;
bindings.13.slave b;
bindings.13.channel 5;
bindings.14.slave b;
bindings.14.channel 6;
bindings.15.slave b;
bindings.15.channel 7;

}

ctl.multi {
type hw;
card 1;
}
`

Run scream sink with
./scream -u -o alsa -dmulti -t100

Notes on the RPI:
RPI4 doesn't work because the onboard USB3 hub doesn't support >1024bytes of isochronous data per USB tick (so >1 8ch card exhausts this). RPI3 does.
Needs an MTT capable USB hub to run the cars because the two soundcards are fullspeed and exhaust FS bandwidth if both run at the same time; MTT hub fixes this with split USB transactions

Yay!

@raplin
Copy link
Author

raplin commented Jul 17, 2023

Can I just say that just about the ONLY windows app that understands Scream when compiled with 16 channels is Asio4All. Almost everything else thinks it's 8ch, some apps insist it's 2ch, it's kind of a mess. Fortunately Asio4all works, which is what I was after. I'm not sure why this is but I am guessing it's related to the windows speaker configuration menus which max out at 7.1, and further guessing that most windows app use the speaker config to determine #channels on a card, whereas Asio4all might be looking lower level. This is a guess. Anyway, windows sucks at >8ch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants