Friday, June 29, 2007

PulseAudio

Like Linux needs any more sound libraries/backends... but this one is cool!

PulseAudio has been compared to the 'compiz' of audio streams.

You can do some really cool things with it: output all sound to another machine, play synchronous audio to multiple clients on a lan, move streams from one sink to another on the fly, virtual surround sound using two soundcards, stream and application specific volume adjustments. (Plus, using avahi, sound servers on the network are automatically discovered.) They may seem like useless esoteric cases, but here are some practical things I use it for:

I've got a few computers in my house. It's cool being able to have banshee playing on one machine, and the output going to all the speakers in the house, all synchronized.

I have two computers side by side that I use in a kvm fashion. One of the computers has much nicer speakers. I mostly use the computer that doesn't have nice speakers. I can have all the sound go through the nice speakers, and I don't have to plug and unplug things all the time.

I like to watch movies on a laptop to have the screen closer. Instead of plugging some speakers in the laptop and having wires all over, I play the sound through the computer's nice speakers.

Some of the computers I have use soundcards with only one sound channel. (Alsa dmix can mix streams into one, but PulseAudio can do the same, as well give me all the above features. Plus, I don't have to worry about dmix not playing well with certain alsa drivers.)

Not all the Pulse utils are shipped in openSUSE 10.2, but Takashi has packaged most everything up to be included in 10.3. (Check here for packages to use in 10.2 and 10.3). The only packages remaining at this point are gstreamer010-pulse and libflashsupport, which supports pulse output for Flash 9. These are both available in the build service.

Seems like a great sound solution and a wonderful fix of all sound mixing nightmares linux users have had to face over the years. I wish Gnome and openSUSE would configure PulseAudio by default and configure all the shipped applications to output in a pulseaudio compatible way (See Pulse Audio Perfect Setup for what apps and backends can and need to be configured).

Lennart gave a great presentation showing off and advocating PulseAudio:

Video Presentation
Slides

(In actuality, this blog posting has been in draft mode for a while, but since my 'Hack Week' project involved PulseAudio, I needed to finish this post first.)