# PulseAudio

PulseAudio (anciennement Polypaudio) est un logiciel libre serveur de sons multiplate-forme, développé principalement par Lennart Poettering pour le compte de Red Hat, Pierre Ossman pour Cendio et David Henningsson pour Canonical. Il est en 2020, progressivement remplacé par PipeWire (remplacé en novembre 2020 sous ArchLinux), un service qui a pour but d'unifier JACK (temps réel) et PulseAudio (bureautique et jeu) pour l'audio, ainsi que GStreamer pour la vidéo.
Il permet des échanges audio par le réseau entre des systèmes Linux et Microsoft Windows par exemple.
Il vient se substituer à Enlightened Sound Daemon (en) (ESD).
PulseAudio fonctionne sur les systèmes compatibles POSIX tels que Linux et sous Microsoft Windows. Son code source est publié selon les termes de la licence publique générale limitée GNU (GNU LGPL). Si la compilation intègre certaines dépendances optionnelles, le daemon et la bibliothèque serveur (libpulsecore) sont publiés selon les termes de la licence publique générale GNU (GNU GPL).

## Caractéristiques

Les caractéristiques principales de PulseAudio incluent :
* des contrôles du volume par application ;
* une architecture de plugin extensible avec support de modules pouvant être chargés ;
* la compatibilité avec de nombreuses applications audio populaires ;
* le support de multiples sources et collecteurs audio ;
* une architecture mémoire zero-copy (en) pour une gestion efficace des ressources processeur ;
* une interface en ligne de commande avec possibilité d'utiliser un langage de script ;
* un daemon audio avec possibilité de reconfiguration en ligne de commande ;
* la conversion intégrée de samples et des possibilités de ré-échantillonnage ;
* la faculté de combiner de multiples cartes son en une seule ;
* la faculté de synchroniser de multiples flux de lecture.

## Fonctionnement

PulseAudio est un serveur son, un processus d'arrière-plan qui accepte les entrées son d'une ou plusieurs sources (processus ou périphériques de capture) et les redirige vers un ou plusieurs collecteurs (cartes son, serveurs PulseAudio distants ou autres processus).
PulseAudio utilise un modèle dans lequel ce sont les applications qui envoient le flux audio au serveur, contrairement au serveur son JACK qui détermine quand et dans quel ordre les applications doivent le lui envoyer.
Un des objectifs de PulseAudio est de rerouter tous les flux audio — y compris ceux de processus qui tentent d'accéder directement au matériel (telles les anciennes applications OSS). PulseAudio fait cela en fournissant des adaptateurs aux applications qui utilisent d'autres systèmes audio, comme aRts ou ESD.
Selon un scénario d'installation typique sous Linux, l'utilisateur configure ALSA pour utiliser un dispositif virtuel fourni par PulseAudio. Ainsi, les applications utilisant ALSA enverront leur sortie son vers PulseAudio, qui utilisera alors ALSA lui-même pour accéder à la vraie carte son. PulseAudio fournit également sa propre interface native pour les applications qui veulent supporter PulseAudio directement, de même que l'ancienne interface pour les applications ESD, le rendant adapté pour remplacer ESD.
Pour les applications OSS, PulseAudio propose l'utilitaire padsp, qui se substitue aux fichiers de périphériques tels que /dev/dsp, trompant les applications en leur faisant croire qu'elles ont le contrôle exclusif de la carte son. En réalité, leur sortie est reroutée à travers PulseAudio.

## Interfaces utilisateur sous Linux
### Interface en ligne de commande

Le paquet pulseaudio-utils fournit les outils en ligne de commande pour diverses fonctionnalités du serveur de sons.

### Interface graphique

Destiné à l'ordinateur de bureau, PulseAudio est accompagné d'outils auxiliaires dotés d'une interface graphique :
* padevchooser (PulseAudio Device Chooser) : installe une icône dans la barre des tâches, permet de choisir le serveur, collecteur et source utilisés par défaut et d'accéder aux autres outils ;
* paman (PulseAudio Manager) : qui permet de configurer le daemon PulseAudio ;
* paprefs (PulseAudio Preferences) : qui permet de configurer le serveur PulseAudio ;
* pavucontrol (PulseAudio Volume Control) : qui est un mixeur audio évolué ;
* pavumeter (PulseAudio Volume Meter) : qui est un VU-mètre simplifié.
En mars 2016, seul pavucontrol reste activement maintenu par l'équipe de développement de PulseAudio ; padevchooser a été « forké » en 2006 et est concurrencé depuis 2011 par l'outil pasystray (PulseAudio System Tray)$^,$.