As many of my friends know, I'm an open source advocate. I like free software, and the free software community has come up with some really amazing things; for instance, GIMP, Firefox, Thunderbird, Linux itself, and so on.
However, there's one thing that no one seems to ever be able to get right: Sound on linux.
My boss just called me because he couldn't get "idefisk", an IP phone application, to run. The reason? It couldn't open /dev/dsp because it was "in use by another application". I had to kill artsd to get it to work.
"In use by another application"?? This is 2007, not 1995! Sound devices on Windows and Mac OS have been multiplexed for over 13 years now; why the hell hasn't Linux implemented this??
They had a chance to when ALSA was developed. ALSA stands for "Advanced Linux Sound Architecture", and was supposed to solve many of these problems. But it hasn't. ALSA devices can still be inaccessible because they are "in use by another application". You might not hear a chime from your E-mail application telling you about new mail because you are playing MP3s using XMMS.
ARRRGH WHAT IS WRONG WITH YOU PEOPLE FIX THIS ALREADY! And user-land APIs like arts are *NOT* acceptable, simply because there's more than one of them and they can't run concurrently.
Some kernel sound card drivers have quietly solved the problem; I've always used EMU10kx cards in my linux boxes because their audio devices *never* block. Even years ago you could open /dev/dsp fifty times on a system with an SBLive! card in it, and all of your audio streams would play at once. Unfortunately this is something that was implemented on a very low level in the driver, and is not a general feature that Linux sound drivers have.
This needs to be fixed. Otherwise Linux on the desktop will continue to be a laughing stock. People see dialogs like "/dev/dsp is in use" and boggle, thinking "WTF?" because no other operating system has such ancient limitations anymore.
And yes, I know the open source mantra is "you can fix it yourself", but honestly, I don't have time. There are already people working on this who can do the job. "Well, it sorta works" is not enough, people. Get with the program. Look at Mac OS X and *shudder* even Windows and learn by example.
-an annoyed geek lynx
ogg123 meeeoooowwww.ogg
Yeah... It's stupid.
Some people say "Just get better hardware that has hardware mixing". That's what I did too, but the OS should be able to make the best of available hardware. Others point to the dmix ALSA module. That could work, though if it requires people to mess with the ALSA configuration it's doomed to fail.
"And user-land APIs like arts are *NOT* acceptable, simply because there's more than one of them and they can't run concurrently."
Well... That can be solved. PulseAudio is most likely the solution you're looking for. It can emulate an ESound server and it could also emulate arts if someone wrote the code for it. But who cares about arts anyway? :) I think KDE is moving away from it.