Thursday, May 17, 2007

The Sorry State of Sound in Linux

Lets start with some background.
Back in the old days, if you had a PC, there was only one card called "the sound card", which of course was the Sound Blaster 16. If you were playing any of the popular games back then, many of them only supported the SB16 for sound. Other companies who wanted to start releasing sound cards had to include Sound Blaster emulation if they wanted to get any kind of real sales. Sometimes this emulation was buggy, but you wouldn't know that until after you bought it. For this reason, people who wanted sound took no short cuts and only bought SB16s.

Thus back when Linux was first starting out, which was on the PC for the 3x86, there was only one sound card which demanded immediate support. Understandably, Sound Blaster support was completed and done very well rather early on for Linux. Since the API was good, as well as that most Linux programs which provided sound targeted this API, people who wanted to provide drivers for their sound card made their sound drivers use the same API. At this point, the API for the Sound Blaster became known as the Linux sound API, and all the various sound card drivers got merged into one neat little package, this later became the Open Sound System or OSS for short.

Since OSS was UNIX oriented and rather good, the other UNIX OSs starting up at that time such as FreeBSD and NetBSD wanted sound support too, and OSS was ported to them as well. Today OSS runs on virtually every UNIX OS except Mac OS X, but Linux, *BSD, Solaris, are covered, as well as even AIX and HP-UX and more.

Now from a developer standpoint, if you wanted to create a simple application with sound output, and you wanted it to work on the various UNIXs available today, the choice was simple, you write the code for OSS, and it's all nice and portable.

However, there was one major drawback perceived with OSS, and that was mixing. Say you want to listen to music while listening to the news. Not exactly that hard to setup if the music is soft and the news is loud. However when OSS was originally designed, it let the sound card handle 'mixing' which would allow multiple sound outputs be mixed together. But more modern sound cards decided to follow the path of modems and became mostly software. Once this happened, all features of a sound card had to be written up in software to work properly, and mixing wasn't always a focus, nor is it always a simple matter. Therefore many newer sound cards would lack mixing under OSS.

Therefore two new sound systems came into existence, aRts and ESD which were used mostly by KDE and Enlightenment/GNOME respectively. They used new APIs which did mixing before sending sound to OSS. They intended that new programs would use these APIs. Now I looked at both aRts and ESD, aRts seems pretty easy to use, even easier than OSS, and I wrote up a sound player in less than 5 minutes with aRts. ESD on the other hand looks like it might have more features than aRts to use, but also looks much more complex than aRts. With programs written to use one of these two, you could run multiple applications which use one of these sound systems at the same time and get sound out of both of them.

The problem with aRts or ESD though is that there are two of them, so while many KDE or GTK apps will use one or the other, you can't run both of them at the same time, as you can only have one of them work with OSS at one time because of the 'mixing' problem. It's even more problematic that you still have native OSS applications that don't go through another system. To solve many of these problems, library wrappers were invented.

First we have the Simple DirectMedia Layer (SDL) which wraps around OSS, aRts, ESD, and even sound systems on Windows and Mac OS X. Sounds good for portability, since it works everywhere, and you can have it use whichever sound engine on UNIXs so everything can play nice together. Unfortunately though, SDL uses sound only via a callback interface. While this is fine for many applications, it can get annoying sometimes, and in some applications which generate audio on the fly, not only can it be complicated to do properly, it might even be impossible to maintain proper sound sync.

Another nice competitor which I like is libao which wraps around OSS, aRts, ESD, and several other UNIX specific sound engines. The API for libao is also really easy to use, quite similar to that of aRts, and I managed to whip up sound applications with libao in no time at all. Unfortunately libao hasn't been updated in some time, and certain wrappers it has seem to be a bit buggy. libao also only supports blocking audio, which makes it complicated to write certain applications where the audio is generated while it's playing, forcing the program to use threads, hope one doesn't fall asleep while the other is working, and use semaphores and mutexes.

Because the general idea of libao was good, the MPlayer team took libao, fixed several limitations, updated it, fixed bugs, added many more sound wrappers, even two for Windows and one for Mac OS X, and dubbed their creation libao2. With MPlayer, you can change which sound wrapper to use with the param -ao and specify which system to use, or set permanently via the config file. I even took some libao2 DirectSound code, used it in a Windows application, and a Microsoft developer who I know looked at it and told me the code looked really good, which goes to show the quality of the underlying wrappers. Unfortunately though libao2 is bound to MPlayer, it has all kinds of MPlayer library calls within it meaning a major dissecting operation is needed to use it in another application. Perhaps some MPlayer or library developers can get together and separate the two, add on any needed features, and then we application developers can finally have a portable sound library to use, while potentially also allowing MPlayer to get better sound output on more obscure drivers because a developer who doesn't use MPlayer but another sound program might fix it.

Now while application developers are all worrying about their precious libraries, the developers of the portable UNIX sound system - OSS, decided to go closed source and offer extra features (which regular users don't need) to paying customers. This of course created an uproar, and some Linux developers decided to create a new solution.

Now instead of just rewriting OSS at the core, or using a wrapper (which understandably doesn't fix the underlying mixer problem), or updating the existing open source OSS at its base, some developers for some absurd reason decided they needed a whole new system and API to go with it. This is known as the Advanced Linux Sound Architecture or ALSA for short. This new API is huge, mostly undocumented, incredibly complicated and completely different than OSS. Which means various sound card drivers have to be rewritten for ALSA, and all applications have to be rewritten (or have more sound system support like SDL and libao) in order to use ALSA.

Other advantages of ALSA is that they included a software mixer (which doesn't always work). But as should be apparent, applications aren't magically overnight going to start switching over to ALSA. And as ALSA isn't portable, people who want to support BSD and Solaris will of course be using OSS. Meaning to support ALSA would mean needing to support OSS and ALSA. Since OSS exists on Linux, why even bother? Realizing this, the ALSA developers programmed OSS emulation into ALSA, so sane developers can just program for OSS. But the big embarrassment here for ALSA is that using ALSA via its OSS emulation is usually better than using ALSA directly. I've heard from many users of SDL or libao powered programs that telling those wrappers to use OSS (which ends up being used via ALSA's OSS emulation) works better with less gaps (or other problems) in the audio than using ALSA directly by those wrappers.

But for some really stupid reason, ALSA's OSS emulation doesn't support mixing. Which in the end really defeats the purpose of ALSA in the first place. I also have two sound cards which work both under OSS and ALSA and find OSS to just work better. Even more shocking is that I found in cards that have hardware mixers installed, they don't seem to be used by ALSA's OSS emulation, leaving such users without mixing in OSS apps. However, for some reason, I'm seeing a lot of propaganda lately that I have to make all my new applications use ALSA and not OSS because OSS is deprecated. I really doubt that because Advanced Linux Sound Architecture now exists that suddenly FreeBSD has deprecated OSS. How can something portable be deprecated just because one really near sighted OS can't figure out how to deal with life? Using non portable APIs is what is deprecated. I've smartly been forwarding all such ALSA propaganda to /dev/null, but it does bother me that my laptop's internal sound card only has support by ALSA in Linux. And with all the propaganda, I am worried what if ALSA makes more headway? It's already annoying that some Linux distros for example ship SDL without the OSS bindings installed, and it could get worse.

Now a friend of mind recently decided to switch to Linux because he noticed how much better it is than Windows in ways that are important to him. Since he has a newish laptop, the only drivers he could find for it are ALSA. Now for some reason, sound is really scratchy for him, and he has very limited volume controls, making him want to go back to Windows where sound works properly.

Earlier this week, another friend of mine informed me that the closed OSS has been constantly worked on since the last open sourced OSS was put into Linux years ago, can be downloaded and installed from from their website for free, and is superior to ALSA as well. It even offers ALSA emulation. This sounded interesting to me, and I headed over to the OSS website to install OSS on my friend's laptop to see if it would fix his sound problems. And lo and behold, sound is now crystal clear for him, he has much more finely tuned controls of volume, and can raise it higher than ALSA was able to. I put some research into the closed sourced OSS, and I see it has software mixing, and even software resampling which works very well. I proceeded to install it on my laptop, and now got much better sound support there as well. Only thing is that the ALSA emulation isn't working for me too well, but as I only currently have one app which is ALSA exclusive, I don't mind much, but it is annoying knowing that the previous version of this app supported OSS.

All this shows me is that ALSA is truly garbage, and a very bad idea from the ground up. If you want good sound support under Linux, the best, and sometime the only feasible option is to install the closed source OSS. With this, you always get mixing (even using the hardware mixer which ALSA doesn't always do), support for a dozen UNIX OSs, and finely tuned controls. They also made some API improvements to make it easier for application developers to do more advanced things with their audio. It's also nice to see spdif support, and even be able to send AC3 and other audio formats directly to OSS without needing to decode it first.

The real problem here being that it's closed source which makes many people for some reason step away from it. But being that the best video drivers for Linux are the closed source nVidia ones, excellent closed source sound drivers being the best doesn't surprise me. Being that I want the best possible use of my computer, and don't care for any dumb ideals, I'll take closed source drivers if they work well and don't do anything they shouldn't be doing. But this makes many distro packagers shy away from bundling or supporting the close source drivers in any way. Now while in the case of nVidia or ATI drivers, developers write apps for OpenGL or X11 which the closed source drivers support well, and it's the same API being developed for either way, we don't have to worry much if the distros don't support them. But in the case of OSS, if the distros package a completely different incompatible interface, and provide SDL and friends with everything but OSS support, we can't use the closed source drivers even if we wanted to, taking away our freedom, forcing us to put up with garbage, and defeating good portability.

We need to make a stance and stop this ALSA propaganda in its tracks, and produce many good applications with no ALSA support whatsoever and telling the propaganda spewers to go wake up. We must get the distros to keep supporting OSS. If they want a new sound system, it should be using the same API as the old one and be what every other UNIX OS uses for native sound.

Now I wish OSS would be opened sourced again, and perhaps we should be talking to 4Front about that, or recreating a full open source up to date equivalent of the closed source one, but there is no reason that we should be diverting all our efforts into a broken, incompatible, unusable, knock off.

Read here for more information about the latest closed source version of OSS and why we should be using it .

To recap, if you have sound issues, try installing the official OSS, start getting recognition going that OSS is what we're supposed to be using and that ALSA is garbage. Make sure to tell your distros that ALSA is garbage, and they should not be removing OSS support, and we should have the freedom to use a closed source driver if we want to. Tell application developers that you demand OSS support. Tell users of your application that want ALSA that ALSA is garbage, and point them to the closed source OSS if they have troubles with the open sourced one. We should also see about talking to 4Front about reopening source or updating the old open source implementation (or rewrite if need be). We should also see about making libao2 more of a library. If we took these steps, I think the state of sound in Linux, and other UNIX OSs by extension would be better off. If we took these necessary steps, UNIX sound apps wouldn't look like the laughing stock of the sound application community.


Dan said...

Hey IC, I agree. ALSA is junk, and has annoyed me for some time. I'm curious as to why OSS has gone closed source. If they want to make money for business use, they could still release the source code, and include in the licence agreement such restrictions. I mean, it's available for free anyway, so there's really not much difference from their side. I don't like all of this "this program only uses this sound system, so i can't use it with this system" garbage. I think that all these different sound factions should just get together, forget their differences, and develop the best sound support possible so that programs can use whatever. Come on people, learn to love each other. Think about the betterment of soundkind!

As always, say hi to wifey and the little coderlings.

louis said...

I am currently running Linux on a HP Pavilion dv5000 and the ALSA sound system just refused to work correctly. I recently decided to install and use OSS, it runs perfectly, infact i would say it runs better than Windows sound. In Windows if the sound goes to full it gets a little statistici but oss go to full and it is still crystal clear.

Doris said...

I have some onboard junk for a sound card. I played with both the built in OSS and ALSA and sound never worked good. I took Insane's advice and installed the OSS from 4Front and now it's working nice. Thank you for the tip.

Keep up the informative posts.

insane coder said...

Just wanted to say that seems 4Front has now open sourced OSS 4 under GPL and CDDL.

Colonel Obvious said...

Hi, saw your post and wanted to comment. If Linux wants a sane sound architecture, probably the best thing to do is to port FreeBSD's.

The sound architecture in FreeBSD is _NOT_ OSS, though its primary interface is a superset of the traditional OSS interface (so it's fully OSS-compatible). It supports software mixing in the *KERNEL*, which is far more reliable and low-latency than the ridiculous userland mixing that ALSA does, leading to many needless context switches. This software mixing is activated automatically if the sound card doesn't support multiple hardware channels.. What this means for the user is that once you load the driver, sound _JUST WORKS_, much like in Windows.

Also, it's properly engineered, with many things that are common to multiple sound drivers split into shared modules. ALSA drivers can be a bit of a mess with code copied and pasted from one driver to another and duplicated a dozen places.

Finally, the BSD license is GPL compatible, so it's perfectly fine for Linux people to take whatever code they want and relicense it under GPL. We would hope that any significant improvements would be dual-licensed as BSD also so that they can be imported back, but it's not a requirement.

Piparo said...

Man how can I thank you? I am an average Linux user who just lost an entire weekend trying to make a Realtek ACL882 work under ALSA with no luck. Only to discover it's not supported. Now I installed OSS by your recommendation and - voilá - my new Bose speakers almost blew up when I started playing 10,000 Maniacs. You made my weeked, thank you!!

PS: I noticed SPDIF output is still not working, any hints? Thanks!

Ghost|BTFH said...

Mmm...sounds great, with one tiny flaw.

"The license key is valid for up to 6 months at a time after which you will need to download and install OSS again."

I'm sorry, what? I get to use it for 6 months, and then have to reinstall it?

How about just set up repositories and put updates like normal people?

OSS' logic sounds screamingly like Macs..."Just build it, everyone will want one...okay, make everything closed source...everyone will want one...okay...go OPEN source, but...not for the GUI...THEN everyone will want one...okay, make it work on ANY SYSTEM...then everybody will want one..."

Or, make it open source or go home.

insane coder said...

I've been using OSS 4 for over 6 months now, it never expired on me. But that may be because I ran oss-update so it updates itself at some point in the middle.

insane coder said...

Okay, I was just told if you install it from a source package, it doesn't expire on you.

My /usr/lib/oss/include/internals/timestamp.h also contains:

As the 3rd line.

abrahammer said...

Hi man, i was feeling a bit disappointed with the sound quality of linux compared to that of windows xp, but reading about OSS on your blog and on their website has been enlightening and now hope has returned. the thing is i haven't found out a clean way to uninstall the alsa drivers, i ask in the forums but no one even wants to think about it, they tell me WHY oh WHY would you want to do that? can you point me and maybe other users with the same problem in the right direction? i'm using debian lenny, thanks

abrahammer said...

nevermind man, the .deb package does everything and replaces the alsa drivers, it even puts them back on if you uninstall, you can delete these comments if you want, thanks to your blog, music sounds a lot better in linux (maybe it's suggestion, but i think not haha) i would recommend to other people to try OSS drivers and see for themselves

André said...

Hi Nach! Very good article.

Since OSS became Open-Source again, can anyone recommend Linux distributions with good OSS support?

insane coder said...

It seems OSS 4 is now BSD licensed too.
Keep posting your OSS 4 success stories.
Also if there's any interest, I can write a newer review if people feel it's needed.

SS said...

So, I search for "ALSA is garbage" out of my own frustration, because I was having problems getting my sound to work and I got the sniffles so I needed someplace to vent some steam, and came across this blog.

Having tried all the major distros in the last five years, I have to say the only thing I could count on was not having any sound when I log in for the first time. The problem with alsa was always different and this was with a plain old SB16 pci. This, ofcourse followed me when I upgraded my system (onboard sound). I usually pull out the last remaining strands off my head trying everything to get the sound to work. And I do manage to hack together a solution to fix it, but today... after all my frustrations, and after reading this article, ran the OSS 4.0 deb on debian, and lo and behold... I have sound. beautiful sound... with an awesome mixer that actually support HD audio. Thank you for letting us know that OSS is not dead. I was lead to believe that was dead, but will continue to use it as long as its free.

zacH said...

Since you asked, I do have an interest in you writing more on this. It would be nice to have a new link to shop around to people, and just to hear more information, if you've gathered more. So yes, please do if you have time.

William said...

The word you're looking for is "deprecated", not "depreciated".

Remote User said...

Nobody has yet mentioned the man behind OSS.

He is Dev Mazumdar.

I first met Dev (pronounced like Dave) in 1995 and I want everybody to know that he is one of the most brilliant, engaging, generous, hard-working software engineers I have met in my life, and I've met quite a few. If any of you knew the man you would not be surprised at the quality of his code and at the respect that we who know him hold for him.

Steve said...

I Bought an Asus Eee for portable Amateur Radio work. Then discovered that my simple morse code tutor program's sound was so badly broken that it was useless. Two days of hair pulling trying to understand how the Linux sound system fit together and I finally discovered this blog.

Four hours later (I had to get the Eee to the point where it would compile... slowed me down ;-) I now have perfect sound!

Thankyou for the blog! And thankyou to Dev Mazumdar and 4Front for OSS.

Just works.

Leon Breedt said...

OSS has support for my sound card (Creative Labs X-Fi).

This has virtually always been the case for me. To get working sound, I had to go to OSS.

ALSA, with all its engineering resources, has none. Since the lead developer(s?) works at Red Hat, we can probably expect it will be a long time coming. Typical ivory tower development.

Have a look at the smarmy comments over here for my sound card, the X-Fi:

Meanwhile, OSS manages to get a beta working driver out, with its meager development resources.

Amy said...

I would have to agree with you on this one--my laptop's sound system suddenly stopped working when using ALSA, so I decided to give the now-open-source OSS a try, and lo and behold, my laptop's sound works again! I have no idea what the problem was, but ALSA said the clock rate was wrong or something--but somehow OSS is fixing it... And I'm not the only one I've heard of with this problem. Googling turns up a bunch of people who have been in this same situation.

My main gripe is having to disable the ALSA emulation--it doesn't work, and I don't really need it, since, like you said, most people still use OSS and its /dev/dsp. :)

Leonard R said...

Your article started quite good, and then in the middle it just disoriented into political hate speech.

I'd not call this a differentiated list of good arguments exactly.

sapphirecat said...

You've been reddit'ed (again?).

And your post doesn't even discuss PulseAudio and JACK. Jack is supposedly a low-latency sound system for ALSA, which reduces latency by, uhhh.... adding another userspace layer with its own buffer? That comes with a weird GUI, that they want you to tune fragment size/counts, but you can't hear what the cache is going to sound like until you go off and run some application. Oh yeah, and if you change any jack settings, you have to restart the server, followed by any jack apps you have running. Just like Windows 95!

Pulse does the same thing, except it's aimed more at esd/libao's space than... wherever jack thinks it's targeting.

Stephen said...

I'd like to add to Colonel Obvious's comments on FreeBSD: not only does FreeBSD have superior kernel mixing, but it is completely invisible! As far as apps are concerned, they think they are using ancient OSS and monopolizing the sound card. You don't need to recompile, let alone code anything, to get this to work. If you run out of channels, they can be added on the fly.

The only application level change that could be needed would be adding individual volume controls to the apps, rather than having their controls affect the sound card mixer itself.

Rasi said...

As nice as OSS4 is, the support is lacking heavily... HAL has dropped OSS support alltogether, which sadly leads to KDE4 not having OSS support either... doesnt seem like a bright future with all the expected changes to KDE4...

zorgon the malevolent said...

Have to agree with you about the practical (as in, "it just works") superiority of OSS over ALSA. Thing is, there are a lot of issues you haven't dealt with.

ALSA remains crucial to distros like Planet CCRMA, which combine a lot of different linux apps to get a full computer music environment. Unless I'm mistaken, apps like Jack won't work with OSS but do work with ALSA. The thing about Jack and other similar apps is that they let you pipe the output of one computer music program directly to the input of another one, which is incredibly convenient. It's another one of those things you can't do in Windows.

People who do computer music, especially live computer music, really need this kind of capability. For them, ALSA remains the only game in town. If you just want to play back mp3s or listen to the sound on DVDs on your linux machine, OSS is fine, but for serious audio work, like multitrack recording with Ardour or live computer music with apps like Spiralsynth, you're going to need ALSA, Jack, and probably either DeMuDi or Planet CCRMA with its hacked real-time kernel, and all of the other apps that depend on ALSA. The Planet won't work without ALSA. It's too deeply embedded. I agree ALSA is too complex and too buggy, but right now, thems the breaks. If you want to do serious computer music, you have to use it.

Rudd-O said...

staticky sound is because you have your mixer controls too high. open alsamixer in the console and lower each volume control until it says ZERO dB. Many cards go above 0 dB and the staticky sound is because you have gone above it and you are now clipping the audio.

ALSA is fantastic as a sound API (I haven't used OSS in years) but the drivers are lacking in features, I grant you that. I solved my audio problems (well, mostly) by switching to PulseAudio and letting PA use the ALSA device directly. Works rather well.

Aaron said...

some good points raised in this post and by some of the posters: I wasn't aware that OSS 4 code was available under GPL license, for instance. that's means it's no longer single-sourced and I'll take a look at it if my head gets sore beating against ALSA.

a key point not mentioned in the posting was that arts, esound, jack, libao, and pulseaudio are all implemented on top of existing kernel-level APIs. some are tied to only one (jack on ALSA) but others support multiple (libao supports OSS, ALSA, and sun). this layering makes the interfaces somewhat frungible.

Carlos said...

I agree that the current state of linux sound is garbage, each new version of alsa works less in my hardware, I got a fairly new HP with a fairly standard integrated Intel HD audio controller, out of the box sound is not as good as it could be, the volume is really low (even if I increase it to maximum in both PCM and Master), I tough it was because the laptop speakers, but heck they are an Altec Lansing and Windows is way lauder, mixing works but just because pulseaudio, I remember the dmix hell days, when it worked (if at all) it was quite spotty, this on my nForce2 motherboard with Integrated sound Ac97 compatible.

I downloaded OSSv4 from 4front, installed and rebooted, wow it sounds clearer and lauder, I can control all channels and features of the sound card (dual outputs, dual mic inputs, etc), and the per application volume controls is just lovely.

Now I only have a few problems with apps that use alsa exclusively (kmix and others), but main applications do well (mplayer, amarok).

jared jennings said...

no you're all wrong. (well sort of, but "no a few of you may not be entirely right" didn't have any punch to it.)

first, alsa has worked out of the box with the last three ac97 motherboard-integrated sound cards i've used. fie on your oss.

furthermore, the collective grousings about jack in the comments have so far not arrived at anything like what it's for, what it does, or how it works. it was made to move audio data between applications which process such audio data in real time. getting the audio out of a sound card may be necessary, but it's secondary. jack moves (so far) two tracks of 88.2kHz audio from my firewire audio interface into ardour, through echo plugins and equalizers and yes a software mixer, onto my hard disk or back out to my headphones, in under 5 ms (i haven't tuned it that well). jack also isn't fixed upon alsa: all of the above happens apart from alsa.

if you record things, i recommend the presonus firebox, recent versions of jack which contain the ffado driver previously known as freebob, and ardour.

Leon Breedt said...


Of course ALSA works with AC97, that chipset is like the lowest common denominator, I doubt there's anything that *doesn't* work with that chipset.

If you're using an AC97 chipset though, it follows that you can't be doing any serious audio work of any kind.

リック said...

This post was written *very* strongly from the perspective of a newb audio programmer that has no need for more than one sound card.

Anyone who has tried to do anything at all pro-audio with linux knows that jack is the answer, at least for their needs. Granted, it's not very well set up for the 95% of people who only have 1 card and just want it to work without thinking about it (hint to jack devs and distro people), but it is by far the technologically superior option, for reasons like latency, mixing, filtering options, flexibility, etc.

Just try running this with OSS:

Roland 10 channel in/out USB external sound card

Zos said...

I agree. ALSA is a complete pile of junk that was chosen because of politics and not invented here syndrome. Those previous idiots who think JACK is something amazing need to get a clue too. ASIO in windows and coreaudio in osx do what JACK tries to do easier and without crashing all the time. Also to the previous idiot who thinks tha ALSA is a requirement for "serious" audio work in linux:

Get a clue, There is nothing serious about audio in linux apart from joke applications like ardour
and even if there were nothing precludes using OSS instead of ALSA.

l0b0 said...

Jared: Regarding out-of-the-box support, both my gaming rigs (bought in 2004 and 2007) are (anecdotal, but anyway) evidence to the contrary. Ubuntu Gutsy (7.10) was the first *nix where I managed to get 5.1 optical out. But of course they started with PulseAudio in Hardy, so now it's back to the drawing board.

Mantari said...

The article isn't quite old-school enough. The first product WAS the Sound Blaster, followed by the Sound Blaster Pro.

The Sound Blaster got a leg-up in the market because it had Adlib (another sound card) emulation built in.

Benji said...

Absolutely lovely. I installed and I don't think I'll ever go back to alsa. My music collection sounds crystal clear again (yes!, I can actually hear a difference :)
And my creative x-fi even came back from the dead! it hasn't breathed life for about 6 months, since I ditched vista.
Even though I still don't have 5.1, I'm at last happy with the sound quality I'm hearing in Linux.

As a side note for anyone running 64-bit and wanting to hear any flash sounds, you may need to have a 32-bit browser w/ flash to hear things. No big loss since my 64-bit flash was sluggish at the best of times.

Also if you have an onboard soundcard being defaulted to like mine, and want to make a different one the default, you can edit out the unwanted device from /usr/lib/oss/etc/installed_drivers

Lastly, if you use Ubuntu, I found this guide very helpful for installing OSS 4:

Stuarticus said...

Thanks for pointing this out, audio is very poor in Linux at the moment and contary to what the imbecile above says Ardour is a great application that deserves better audio support.

I think it is quite realistic to see it getting to the level of "serious" applications in the near future, and I use those regularly.

It's a shame that audio is so low down the priority list of the developers. A good windows recording setup is practically a non sequitet unless you stay off the internet and keep your machine spotless, and a good Mac one costs the earth. This could be a very strong area for progression of Linux.

Mike said...

Wow pages after pages of the insane complexity of getting sound to work on linux.
Simple solution: Use a mac. Audio?

Sean said...

Simple solution: Use a mac. Audio?

Might as well use Windows then... works. I think half of the fun is tracking down why it doesn't work and then you find out new things about your computer that you never knew. Like for example, Firefox has disabled flash sound support in Linux...

Leon Breedt said...

Sean, it's only fun while its new.

When it's the same shit, years running, it gets pretty old. I can't be bothered wasting time getting Linux to run as a desktop every time I upgrade my hardware to something that has been released within the last year.

So I have a Mac for general home use, Windows for gaming, and run Linux on my servers.

Don't kid yourselves, Linux has been "about to hit the desktop big time" for several years now.

Benji said...

@ sean and leon breedt:
There is a reason why macs work so well with the hardware. It's because apple makes both the driver and the hardware. THey have the datasheet and chipset specs and they implement and test everything before it's released. So whereas Apple is supporting a very limited amount of hardware, chosen and put in place by themselves, Linux is supporting dozen upon dozen of chipsets, many of which did not even bother to develop drivers for linux or even give linux developers basic data sheets. Thus Linux developers have had to reverse engineer these drivers. Now what we are talking about here is the difference between the drivers and api's that Alsa provides vs. that which OSS has accomplished. Both teams have worked wonders considering the limited amount of drivers there once were. Now go ahead and put your creative X-fi in your mac pro. Not supported? No drivers? Of course not. Because apple limits what they support since they a hardware company (who incidentally provides a unique OS and software for their hardware).
Oh and btw, you can go buy a dell pre-loaded with Ubuntu and guess what? the sound just works as well! Wow! Isn't it easy when the seller can dictate what hardware to sell on.
Linux embodies the spirit of DIY and user-configuration. It runs on more hardware than any other OS, hardware that it was never even meant to run on. It's developers have collectively done more than all other OS's to date.
However, I like the mac as well. It's good if you don't mind paying 3x the price for a sleek art-deco design. I can't afford it though. That's why I use linux.
Oh and about how linux has been "about to hit the desktop big time" for several years now." [sic]
Well, it has been in case you haven't noticed. This is not an overnight phenomenom with a mass switch from windows/mac to linux. It has been a gradual process with momentum building year after year and more users than ever now using Linux.
Yes, your precious mac has moved up to 8% of the desktop market as well. So what? Mac used to have 80% of the market. And I have a hunch that macs would now have near 0% of the market if it wasn't for the BSD base and code they built on to make OS X.

Stuart said...

Way back in 1998, it annoyed me that I had to buy OSS to get sound working at all... and looks like nothing has changed since ;) This type of BS is exactly why many of us long time linux users have given up and bought macs, or ... windows. ;) People expect to be able to do things with their computer besides recompile the kernel and mess with broken drivers and broken libraries.

Zos said...

Ardour is a pile of shit period.
The rewrite and the choice of GTK
was a disaster (not that it worked
any better before).

> I think it is quite realistic to
> see it getting to the level of
> "serious" applications in the near
> future, and I use those regularly.

I think you are stark raving mad
and need to get professional help.
Get yourself committed before you
hurt somebody.

> A good windows recording setup is > practically a non sequitet unless > you stay off the internet and
> keep your machine spotless,

You really have no touch with reality. 99% of pro-audio is done
in windows or osx. Your pathetic
epileptic ramblings imply the existence of a very sick mind.

> and a good Mac one costs the
> earth. This could be a very strong
> area for progression of Linux.

See above. I think your
out-of-this-world beliefs are typical of the majority of linux
lusers. The problem is that you all
live in this fantasy lala-land
and not in the real world.

phoenix_frozen said...

stuarticus: although zos's arrogant, condescending, and immature tone helps absolutely no-one, he does have a point. The vast majority of pro-audio setups are either Mac or Windows, and these are not particularly hard to setup nor (necessarily) particularly expensive - even a baseline MacBook will do (with a small extra chunk of hardware, not the builtin audio, of course).
Naturally, the more you spend on hardware, the better off you'll be, but that's a given.
Anecdotally, I will say that Mac is generally far better at it than Windows.

Shezaan said...

@Zos Thats why Dreamworks and Pixar use Linux sound servers right?

"99% of pro-audio is done on windows or Mac"
Where the hell did you pull these Stats out of? I'm guessing the usual a$$hole that has puckered up to the size of a decimal point you dumb sperm.
Sure the state of sound in Linux is bad but the pros still know how to use it.

Dominique said...

The author of this article write that he don't like to use threads in a program. ALSA was writing from the beginning in order to be multiprocessor-friendly and to have thread-safe device drivers. One that will make a serious pice of audio related software must understand that the application must be realtime safe. That implies that the application must be multi threads safe.

ALSA is providing all that and JACK provide a much better and simpler abstraction than ALSA.

Another joke is about the stability issues in JACK. Learn to configure your hardware and your sound system correctly before telling those kind of stupidity. It is more than 3 years ago that I am running realtime kernels with all my linux boxes and with such kernels, I would be the first to know it if it was the case.

To configure your hardware: linux stability guide part1 and 2. The part about the IRQ is the most important.

And last but not least joke: to call OSS to be free when some parts are not, and when you must buy a license for non personal or commercial use.

That imply that a musician must buy this software. I am a musician, and I will never use OSS because if I was willing to pay just to get my sound card to work, I would simply be using Mac. (I buy PC's without OS, its cheaper and let me more money left for the real life.)

See you in the streets !

skygirl said...

good work!!thanks!happy new year!!

koko said...

Thank you!

cool said...

good !!thanks!!

insane coder said...

A follow up has been posted.

Sumant said...

your post doesn't even discuss PulseAudio and JACK. Jack is supposedly a low-latency sound system for ALSA, which reduces latency by, uhhh.... adding another userspace layer with its own buffer? That comes with a weird GUI, that they want you to tune fragment size/counts, but you can't hear what the cache is going to sound like until you go off and run some application.

Recently I just came across a good article on "100 Linux Tips and Tricks"
Here is its link.

Hungry Hippo said...

Hi Insane Coding,

I stumbled across your article because I'm also extremely unimpressed with the sorry state of Linux sound and had been looking for better options. Seeing that your article is several years old, I was wondering if in your opinion the landscape has changed for Linux Sound. Have things gotten better or is OSS still the way to go for the best sound quality. I have been hesitant to move away from Windows because of the sound issues I've experienced. I really appreciate the security a *nix like system and have gotten fairly comfortable with using it for my day-to-day computing environment, however the shoddy sound support is the major inhibitor for a regret-free move. Thank you again for your informative posting!

travesti said...

Dyrvere said...

HAHA, now that ALSA works mostly out of the box, instead of improving ALSA further, some Canonical troll goes ahead and creates another process-stealing sound server for it all. Geez. Like I needed another application to handle sound in a non-functional manner? :p Canonical turning GNU/Linux into the biggest bloatware of them all huh?

insane coder said...

It seems a lot of the recent comments seem to be missing that I posted a follow up. It addresses a lot of what the comments here brought up.

As for what is going on these days, ALSA is still the same problem that it was. But almost all the distros now offer OSS4.

sence kaya said...

Sohbet Chat Sohbet odalari Chat odalari Cinsel Sohbet Gabile Sohbet Pasif Sohbet Sohbet sitesi
Chat sitesi Sohbet siteleri Chat siteleri

bilmeki nerden said...

Her türlü sohbetin yapıldığı, gırgır ve şamata için uygun koşulların sağlandığı odalarımızın genelidir. Sohbet Genel odada yapılan sohbet ve chat için özeldeki kadar özgürlükçü olduğunu söylemek yanlış olur. Chat Başkasının özgürlüğünün başladığı yerde herzaman şahsın özgürlüğü kısıtlanmaktadır Esnek yapısı ve güncel arayüzü ile üzerinde milyonları buluşturuyoruz içersinden özel sektör, kamu ya da serbest meslek ile uğraşan herkese kapılar sonuna kadar açık. Ayrımcılık, ırkçılık, dil ve tercih gözetmeksizin hizmetimizden yararlanın Sohbet odalari Kişiyi, gruba veya tercihlerin eşitlenmesiyle birlikte bir topluluğa yönelik oluşturulmuştur. Bu odalar içerisinde kendinize özel hissederken aynı zamanda sohbet ve chat ile sizleri eşsiz bir yolculuğa çıkarıyoruz Sohbet odamızda yaşamış olduğunuz en samimi ve en yakın arkadaşlıkları bulabilirsiniz. Benim çevremde beni anlamayan birileri neden yok diye yakınmanın artık sona erdiğini bunu yaşayarak görebilirsiniz. Chat odalari çünkü sohbet odalarımızda dilediğiniz her yerden katılan farklı kültürlere, yaşama sahip olan eğlenceli sizleri anlayabilen insanlarla iletişime geçip rahat ilişkiler kurabilirsiniz samimi içten dostluğun, arkadaşlığın ve kim bilir aradığınız aşki bulmak için daha fazla beklemeyin sitemize giriş yapın yeni arkadaşlıklara ve dostluklara yelken açabilirsiniz. Sıkı dostluklar arkadaşlıklar artık çok yakınınızda sayfamızda sizleri kaliteli, eğlenceli, güvenli, bir sohbet ortamı bekliyor yeni kişilerle tanışmayı güzel dostluklar kurmayı kim istemez ki? yapmanız gereken şey çok kolay sohbet odalarımıza dilerseniz bu güzel muhabbetin, doyumsuz eğlencenin tadına varabilir, zamanınızı en güzel şekilde değerlendirebilirsiniz. Yeni başlangıçlar için geç kalmayın.