In the past Linux’s major shortcoming was lack of support for common hardware. You simply weren’t able to make Linux work unless your computer was comprised of parts from a relatively short list. Nowadays that problem is mostly solved. Nowadays if your computer is made up of parts that are even remotely standard then Linux will most likely work with all of it. And in most cases for very standard hardware Linux will work better than other operating systems. The key example being the Nvidia video cards where Linux performance often exceeds that of Windows thanks to Nvidia’s excellent driver.
There are some areas of obscure hardware that Linux still has a hard time with, but these are rare. One example is a scanner my parents own. It is a Canoscan LidE 50. Most scanners work perfectly using the SANE system, but this particular scanner has a chip that is not yet fully supported. But these outliers are almost always supported eventually if there is enough demand. Very rarely does it take long for new popular hardware to get Linux support if it doesn’t have it already.
Despite the vast improvements made in this area, there is still one gaping hole in Linux hardware support, and that hole is sound. The issue isn’t that sound doesn’t work in Linux. In fact, sound works very well. With just about any sound card you can get audio to go in and out using Alsa or OSS. That’s not the problem. The problem is that the full feature set of most sound cards is not even close to being fully implemented.
I have two sound cards in my computer. One is the Nforce on-board sound card that is part of my Abit NF7-S. The other is a Create SBLive! Value. Both of these cards have support under Linux and I can make them both work easily. Heck, I can get them to both work simultaneously. What needs major fixing is that in Windows they work better. Not just a little better, shit tons better. Let me count the specific ways.
First off, I have 4.1 speakers. In windows to get 4.1 audio all I have to do is tell windows I have four speakers. That’s it, no matter which sound card I use the 4.1 audio works flawlessly. In Linux there is no way AFAIK that it is even possible to get the 4.1 audio to work with either of my cards. Neither the Gentoo Forums nor Google could provide an answer.
Next, the audio quality in Linux is entirely deficient. In windows, using Winamp the sound is terrific. Even if I disable 4.1 and use 2.1 (which is what I can get Linux to do) the music is still terrific. Playing the same audio files in Linux with 2.1 and either XMMS or Mplayer there is a noticeable difference. We’re not talking audiophile bull shit here, there is an obvious deficiency in the quality of the sound emanating from either of my sound cards. It is such a noticeable deficiency that anyone I have ever asked notices it outright without a question. Same speakers, same hardware. The software is not bringing the audio quality up to full potential.
Controlling and configuring sound in Linux is a huge pain in the ass. Of course in Linux I’m not expecting an easy GUI that lets me do everything all nice and simple like Windows or Mac. But even a guy like me, using Linux for many years, has trouble configuring and mixing the sound cards. The Mixers often have multiple channels, many of which are cryptic. What is IEC958? What is Wave Surround? How come Master doesn’t really work the way it should? Why should I have to setup a crazy dmix thing? It should be that way by default. How come I can’t choose which sound card is 1 and which is 2 if the drivers are built into the kernel? Why are the kernel drivers not the latest versions? Putting Alsa in the kernel was supposed to solve problems, but apparently the way to get more up to date sound support is to keep doing things the old way with external drivers. All these problems must be rectified.
Generating audio be it listening to music, watching movies, playing games or even just normal beeps and boops is an extremely important part of the function of a personal computer. Just about the only thing worse than a computer without sound (besides no computer) is one without an Internet connection. And until sound works correctly and fully in Linux there will be no chance of winning over any non-corporate desktop market.
I will grant the fact that it isn’t easy to make this happen. I heard things about Nvidia not giving out the information to get hardware mixing to work. I know that working with DSPs is not easy, and writing sound drivers is fairly difficult. There are also too many sound interfaces in the Linux world: esd, arts, Alsa, OSS, etc. Alsa seems to be winning out due to kernel acceptance, but the others are far from completely dead. Well, maybe esound. These factors don’t make it easy to get sound working beautifully and perfectly in the OS.
Despite these difficulties I still feel that not enough effort and attention is being put into these sound issues. I’ve had my SBLive! and 4.1 audio working in Windows 98, and that was back when the SBLive! was a brand new card. To this day, Linux still can’t do it. That’s over 5 years of development. That is really sad. If anyone can prove me wrong and show me that indeed 4.1 audio does indeed work with my card I will be glad to hear it. However, this has something I have been trying to make work on and off for a long time with no success. I highly doubt that there is some secret that has eluded forums and Google for all this time. The bottom line is that this stuff has to be fixed. And it’s very shocking to me that basic problems like this which have existed for many years have gone unfixed while much less important things, like LEGO control towers, are working great. Fix sound in Linux. If not for me, then for all the people running MythTV who could potentially avoid buying a surround sound receiver and use their Myth Boxen isntead.
You could always give FreeBSD a shot if sound is that important to you. All of my cards sound the same in BSD vs Windows, you can use 4.1, you don’t need to add a dmixer. It has something similar built in called vchans. You can have static vchans, or have a single static with automaticly spawned vchans depending on how many sounds you have going. Not trying to bash on linux, or anything. I personally use both, but BSD is seemingly always a few steps ahead of ALSA.