PulseAudio runs under Microsoft Windows, Mac OS X, and POSIX-compliant platforms, such as Linux and FreeBSD. PulseAudio is free software released under the terms of the GNU Lesser General Public License 2.1.
PulseAudio is a sound server, a background process accepting sound input from one or more sources (processes or capture devices) and redirecting it to one or more sinks (sound cards, remote network PulseAudio servers, or other processes).
One of the goals of PulseAudio is to reroute all sound streams through it, including those from processes that attempt to directly access the hardware (like legacy OSS applications). PulseAudio achieves this by providing adapters to applications using other audio systems, like aRts and ESD.
In a typical installation scenario under Linux, the user configures ALSA to use a virtual device provided by PulseAudio. Thus, applications using ALSA will output sound to PulseAudio, which then uses ALSA itself to access the real sound card. PulseAudio also provides its own native interface to applications that want to support PulseAudio directly, as well as a legacy interface for ESD applications, making it suitable as a drop-in replacement for ESD.
For OSS applications, PulseAudio provides the padsp utility, which replaces device files such as /dev/dsp, tricking the applications into believing that they have exclusive control over the sound card. In reality, their output is rerouted through PulseAudio.
The main PulseAudio features include:
Per-application volume controls[ An extensible plugin architecture with support for loadable modules
- Compatibility with many popular audio applications
- Support for multiple audio sources and sinks
- Low-latency operation and support for latency measurement
- A zero-copy memory architecture for processor resource efficiency
- Ability to discover other computers using PulseAudio on the local network and play sound through their speakers directly
- Ability to change which output device an application plays sound through while the application is playing sound (without the application needing to support this, and indeed without even being aware that this happened)
- A command-line interface with scripting capabilities
- A sound daemon with command line reconfiguration capabilities
- Built-in sample conversion and resampling capabilities
- The ability to combine multiple sound cards into one
- The ability to synchronize multiple playback streams
- Bluetooth audio devices with dynamic detection
- The ability to enable system wide equalization
PulseAudio is used in recent versions of several major linux distributions such as Fedora, Ubuntu, Mandriva, Linux Mint, openSUSE, and OpenWRT. There is also growing support for PulseAudio in the GNOME project. Starting with version 4.5 (and further enhanced in 4.6) PulseAudio is also integrated into KDE primarily by PulseAudio contributor Colin Guthrie, adding support to Phonon (the KDE multimedia framework) and KMix (the integrated mixer application) as well as writing a new "Speaker Setup" GUI to aid the configuration of multi-channel speakers.
PulseAudio is being used as audio system on various Linux based mobile devices, including Nokia N900, Nokia N9 and the Palm Pre.
When first adopted by the distributions, PulseAudio developer Lennart Poettering described it as "the software that currently breaks your audio". Poettering later claimed that "Ubuntu didn't exactly do a stellar job. They didn't do their homework" in adopting PulseAudio for Ubuntu "Hardy Heron" (8.04), a problem which was then improved with subsequent Ubuntu releases. However, on October 2009, Poettering reported that he was still not happy with Ubuntu's integration of PulseAudio.
Certain programs, including older versions of Adobe Flash on Linux, cause instability in PulseAudio.
Fortunately newer implementations of Flash plugins do not require the conflicting elements, and as a result Flash and PulseAudio are compatible.
ALSA provides a software mixer called dmix, which was developed prior to PulseAudio. This is available on almost all Linux distributions and is a simpler PCM audio mixing solution. It does not provide the advanced features (such as device aggregation, timer-based scheduling, and network audio) of PulseAudio. On the other hand, ALSA offers, when combined with corresponding sound cards, extremely low latencies.
JACK is a professional sound server, which provides real-time, low latency (i.e. 5 milliseconds or less) audio performance and, since JACK2, supports efficient load balancing by utilizing symmetric multiprocessing, that is the load of all audio clients can be distributed among several processors. Audio clients can be arbitrarily connected with each other. The graph, that is all connections among JACK clients, can be visualized and edited at runtime with various applications (e.g. Qjackctl), providing a means to overview the overall audio control flow and to modify the routing of all audio applications and hardware at any time. JACK is the preferred sound server for professional audio applications such as Ardour, Rezound, and LinuxSampler.
OSS. This was the original sound system used in Linux, but was deprecated after the 2.5 kernel.
Proprietary development was continued by 4Front Technologies - who in July 2007 released sources for OSS under CDDL for OpenSolaris and GPL for Linux. The modern implementations Open Sound System v4, provide software mixing, resampling, and changing of the volume on a per-application basis; in contrast to PulseAudio, these features are implemented within the kernel.
PulseAudio can also inter-operate with existing legacy sound systems, including those that were designed to exclusively lock the sound card (e.g. OSS v3).