coreaudio doesn't need pulse nor jack nor pipewire to allow a single device to be opened by multiple applications.
ALSA additionally specifies every 2 channels as separate 2channel devices, so your 8 channel audio interface looks like 4.
the confusion is added to by device tree overlays such that you may find your pro audio 8 channel device is always seen as a surround setup, replete wirh highpass filtering on the principle pair of outputs, and you don't know why your poor desktop environments sound device doesn't show this...
There is no such specification. It is device-dependent and abstracted through ALSA configuration. Creative Labs indeed implemented their cards as three separate codecs, while ForteMedia used a single 6-channel codec that you can open as such at the hardware level. In both cases, you can open a single virtual "surround51" device that routes the channels correctly.
The interfaces are absolutely not better, they're a bunch of ~~undocumented~~ C preprocessor macros that hide a pit of complexity and indirection. Pulse is mature enough that you can figure out how to interface with it, pipewire has a handful of examples and some reference documentation that doesn't make sense if you don't already know what you're looking for. Good luck if those examples don't fit nicely into your existing applications' architectures.
Pipewire is very impressive as an achievement, but the work needs to be put in to make it mature enough as a software project (meaning: documentation and well typed interfaces) before existing software can work with it.
The architecture may well be better equipped to provide stable and elegant interfaces to complex media routing problems in application software. But I couldn't tell you if that's true or not, because it's sparsely documented. An undiscoverable API is a nonexistent one.
edit: I wrote this ignorantly before looking back at the pipewire docs. They've improved since I last looked, but I still find the docs lacking (comparable to Apple's docs, which is not a compliment) and the overall interface design of Pipewire a massive challenge to grasp. It might be better, but I don't know. The last time I tried to implement direct support for pipewire in a Linux app I gave up because of its design and lack of useful documentation.
just use one file per stream eg /dev/dsp/pid_tempfile eg /dev/dsp/778_gJG86h, move mix to kernel, give it a /proc interface. the unix way
I've never edited any audio configs on this machine because I expected my 2 device setup and Gnome settings would be trivial enough for the latest Linux desktop audio solution.
It was a disaster. If the USB audio interface ever disconnected, JACK crashed and wiped my routing configuration. After the first day I ditched the Linux computer and ran the whole setup through my MBA, using Reaper for both recording and routing.
I spent so much time messing with alsamixer, removing pipewire, installing pulse, uninstalling pulse, readding pipewire, resetting ports and connections.
I realized it had something to do with the audio buffer (due to the echo and the distortion was "shaped" like the feedback/if that makes sense). like a half second delay feedback.
Ultimately I read up on the buffering mechanism and found that switching to the Bore-LTO kernel fixed everything. I was so desperate I was literally swapping ends of my cables between the PC and speaker, in theory it shouldn't matter but before realizing the issue when I noticed the noise was based on a delay/feedback, I had no other alternative and was at my wits end.
PaulHoule•2mo ago
mystified5016•2mo ago
My day job is building widgets that connect to a windows PC over Bluetooth. The situation is so bad that we're building a dedicated RF adapter so we can have a sane stack under our control.
If your program is scanning for a particular device in the background, that device will never show up in the windows BT pairing menu. I can't even imagine how that happens. Many API calls do nothing or return garbage, many BT features are just not exposed at all, despite windows clearly having that data internally.
W10 never even had BT audio sink. You could not play audio from a remote device to your PC. W7 had it and I think W11 finally got it a few years back. Linux has always had it.
Windows' Bluetooth stack is no contest the worst available on the market. It's astonishing how poor quality Microsoft products are these days.
Macha•2mo ago
Ekaros•2mo ago
But in general Bluetooth is just bad protocol audio...
Artoooooor•2mo ago
loa_in_•2mo ago
pseudosaid•2mo ago
Stereo is just dual mono. its that simple. Summing is just math, its that trivial.
Creating a mix of multiple inputs for a stereo lr output? also completely trivial from a technical standpoint. Hardly trivial from a creative pov, but that isnt what this is about.
okdood64•2mo ago
Is it much better than 10 or 20 years ago? Yes.
Is it still annoying enough and sometimes colossal waste of time? Yes. Just use a Macbook and be done with it.
xrhobo•2mo ago
Asus laptops have always worked flawlessly for me.
I am writing this on an Asus laptop with linux mint. Everything just works perfect out of the box.
I could buy three of these laptops instead of the same setup on a mac is the major selling point for me.