Alsa is an end-user nightmare
Alsa is an end-user nightmare
Posted Dec 17, 2006 11:46 UTC (Sun) by nim-nim (subscriber, #34454)Parent article: Linux desktop architects map out plans for 2007 (Linux.com)
Alsa is very powerful and ISVs would have adopted it long ago if end-users had pushed for it (all the technical grumbles notwithstanding). However Alsa has failed so far to attract user backing.
Alsa exposes all the raw inputs, outputs and knobs of a chip. But it does not provide any user-friendly tool to manage them. The best it's done is defining some default profiles the user can select on setup, are not tweakable nor exposed in the apps.
Where is the user-friendly GUI app that allows managing Alsa configuration?
1. That displays :
input-output routing
what part of the pipeline each knob controls
where software processing blocks (format conversion, effects, etc) can be inserted
2. that allows selecting controls that will be displayed in app UIs knowing what their effect will be
3. that allows testing the setup by sending sounds to inputs and hearing where they emerge
4. that saves profiles under user-friendly names (music setup, gaming setup, dvd-viewing setup) and lets users switch easily between them in sound apps
5. that allows defining the events that will trigger switching to a profile automatically (for exemple, app tries to play 5.1 sound, give it the 5.1 routing profile)
Instead all this info stays in the alsa driver writer head, and alsa dumps the control list on the end user hoping he can do something with it. In practice you'd better hope one of the default profiles works for you (and is honoured by all you apps) because that's as far as you're likely to get.
I suppose in the pro-audio world people can afford defining static audio pipelines manually, and don't need to switch between listening CDs, viewing DVDs, playing games, audio-conferencing but basic end-users need more hand-holding. Even trivial stuff like mapping mono sound to both stereo outputs does not happen in alsa world today. Users have no access to the power that may have them like alsa, in fact alsa makes it so hard to do anything often they can't manage basic stuff either.
Instead alsa doc focuses on helping users to break the distro kernel by replacing the perfectly sane (if misconfigured) drivers the distro ships with ones that won't work with the system alsa lib versions. I suppose when you have no tool to help users configure their setup switching to the latest version and hoping its defaults work better is all you can do. But it's not helping alsa go anywhere
Posted Dec 19, 2006 0:47 UTC (Tue)
by jd (guest, #26381)
[Link] (2 responses)
Posted Dec 19, 2006 13:32 UTC (Tue)
by nim-nim (subscriber, #34454)
[Link] (1 responses)
Posted Dec 19, 2006 17:57 UTC (Tue)
by jd (guest, #26381)
[Link]
I appreciate your comments and, yes, you are right that users will want
full access to the cards. (And sometimes that will be plural. Less so
these days, but it wasn't that long ago when if you didn't have both an
LAPD1 and a Soundblaster, you didn't have a sound system worth a damn -
and programs were written to expect you to have both.)
The tendency has been to push the intelligence into the libraries and
drivers, so that apps writers describe what they want and the environment
they run over does all of the logic to decide how best to achieve the
results. This makes apps writing relatively easy, but does have the
penalty that you're limited to what can be achieved (in some form or
other) across the board. Multiple APIs you can blend as needed is an
improvement, in that applications can choose to take back control on an
as-needed basis, but it doesn't solve the problem that applications are
still going to be limited to lowest common denominators for a lot of
operations.
The more access you want, the higher up you need the intelligence. This
is true for any hardware - the less you can assume, the more you have to
decide. There are still levels of encapsulation you can do - SCSI vs.
IDE, Ethernet vs. ATM, or whatever. This allows you to stack stuff
together, so that you only need to bubble up what absolutely can't be
done at a lower level, and it only needs to bubble up so far and no
further.
The other thing to consider is that sound cards are generally presented
as cards. One physical entity with a fixed number of physical channels
associated with it. Almost no other device on the system is exposed in
this manner. They are all exposed per virtual channel, where one virtual
channel may encompass any designated fraction F of N physical channels
across M physical devices. Applications just see the virtual channel,
they neither need to know or care about the values of F, N and M.
Because sound is treated at a purely physical level, there is much less
experience in virtualizing sound than for other systems. Maybe this is
something that needs to be addressed.
Ideally, you'd have four distinct APIs, rather than one ugly
do-everything-badly API. The only "real" API would be the raw API, the
rest would merely be wrappers that made it possible for humans on the
planet Earth to actually write code and have people use it without their
brains exploding. 'm thinking something along the lines of:
Alsa is an end-user nightmare
Grr, wanted to reply here and replied there (http://lwn.net/Articles/214858/) insteadAlsa is an end-user nightmare
Unlike some of the managers I have the unfortunate luck to be saddled
with, I have this nasty tendency to listen to people who point out flaws
in my ideas. :)
Alsa is an end-user nightmare