wnd's weblog

PulseAudio

16 Jul 2009 10:37:37 rant, software

This rant was originally going to be part of previous multi-rant, but it has then grown in size to be fully self-sufficient.

I’m not exactly the biggest fan of PulseAudio and based on my past encounters with it I tend to blame PulseAudio for all audio issues on GNU/Linux until proven otherwise. Take that in account when you read this. Technically I think PulseAudio is neat and it has some ambitious goals but right now it simply doesn’t work for me.

rant mode on

If you ask me, PulseAudio is the source of all evil. Well, maybe not the source of all evil, but to me it has done more bad than good.

First of all PulseAudio hides real hardware mixers behind its shiny shell. That would be mostly ok if the real ALSA mixer would not be muted on default on most new computers we install. I can blame Ubuntu/ALSA for that, but as far as I can remember, Debian’s ALSA init.d-scripts take care of that. ALSA mixers can be used even when PulseAudio is running (if you know how) but that’s not the point.

Second, many (GNOME/Cubbli) users here at university who want to use their wireless USB headphones come to ask for help. They can’t seem to figure it out themself – and I’m not blaming them. Since I’ve only configured ALSA to use those headphones, someone had to teach me how to do it with PulseAudio. Here’s how I was told to do it.

  • Launch “Default Sound Card” from System/Preferences menu.
  • Find that tiny window that just opened and choose PulseAudio.
  • Launch pavucontrol from command line. I have no idea if this application can be started from the GUI. Go to Output Devices tab and select PulseAudio as default device. Intuitively the checkbox to do that can be found by clicking a down-arrow next to the device name.
  • Since you still can’t hear your YouTube video playing in your browser, go to Playback tab and move the stream to device called PulseAudio. As expected, you have to click that down-arrow next to application name to find that option. Repeat this step for all applications you have started before setting default audio device. Note that applications only show up here if they’re running. If you want to set the device for your VoIP application, you’d better start it now. In worst case scenario you’ll have to make a call to have the application appear here.

If I get this right, PulseAudio remember which output is used for each application. This way music and movie players can use your stereo system for sound, and your VoIP application can use the headphones. That’s great and all, but if I never touch those settings, but then select different device as default output device, I’d expect the sounds to go to that device. Apparently PulseAudio does not only remember user’s choices, but also remember what device was used when the application was started for the first time. I can imagine why people made it this way, but part of me is still wondering “what were they thinking!?”

Third, PulseAudio constantly crashes on me. When I started working here last year didn’t know anything about PulseAudio. When I first launched alsamixer I noticed that strange audio device called PulseAudio. I then started playing SIDs with my ALSA-enabled sidplay2 only to find out that after an hour or two the sound was no longer working. Applications didn’t compain about the device, the volume was set properly, but there was simply no sound. Eventually I killed and restarted PulseAudio and suddenly everything started working again. After a few days I grew tired of this, killed PulseAudio but never restarted it. Only then I realized what PulseAudio was. I realized PulseAudio was unnecessary source of trouble.

rant mode off