| The "mess" of Linux audio is due to ONE reason:
single-client ALSA driver model. every other layer is a coping mechanism and the plurality and divergence of the FOSS community responds in various ways:
- Jack
- PulseAudio
- PipeWire I am unclear why Jaroslav Kyocera chose to make ALSA single-client, but Apples CoreAudio multi-client driver model is the right way to do digital audio on general-purpose computing devices running multi-tasking OS'es on application processors, in my opinion. Current issues this article does not address that actually constitute large parts of the "mess" of Linux Audio: - channel mapping that is not transparent nor clearly assigned anywhere in userspace.
(aka, why does my computer insist that my multi-input pro-audio interface is a surround-sound interface? I don't WANT high-pass-filters on the primary L/R pair of channels. I am not USING a subwoofer. WTF) - the lack of a STANDARD for channel-mapping, vs the Alsa config standards, /etc/asound.conf etc. - the lack of friendly nomenclature on hardware inputs/outputs for DAW software, whether on the ALSA layer, or some sound-server layer.
(not to mention that ALSA calls an 8-channel audio-interface "4 stereo devices") - probably more, but I can't remember. My current audio production systems have the DAW software directly opening an ALSA device. I cannot listen to audio elsewhere until I quit my DAW. This works and I can set my latency as low as the hardware will allow it. this is the thing: more than about 10ms latency is unacceptable for audio recording in the multitrack fashion, as one does. |
This is one of the major reasons why Linux accessibility sucks IMO.
Audio is one thing that you need to "just workâ˘" if you want to get accessibility right, as there's no way for a screen reader user to fix it without having working audio in the first place[1]. On Linux, it does not "just work", and different screen readers have different ideas on how they want audio to be handled. In particular, the terminal Speakup screen reader (with a softsynth) wants exclusive control of your device through ALSA IIRC, while the Orca screen reader for the GUI goes through Pulse. That makes it impossible to use both of them at the same time.
[1] Well, you can sort of fix it by having a second machine and SSHing into the broken one, but that's not what I mean.