# PulseAudio

PulseAudio (precedentemente noto come Polypaudio) è un server audio, un software libero e multipiattaforma che rispetta le specifiche POSIX, pubblicato sotto licenza GNU LGPL 2.1 creato come alternativa ad alsamixer, di cui sfrutta l'interfaccia driver per dialogare con l'hardware, per offrire un server sonoro avanzato ed estendibile.

## Caratteristiche

Il programma consiste in un processo in background ed accetta in ingresso una o più sorgenti audio (programmi, ingressi audio esterni ecc), successivamente, dopo un'operazione di missaggio, redireziona il flusso audio verso una o più uscite (in gergo sink) come ed esempio le casse del pc, dispositivi bluetooth o altre applicazioni.
PulseAudio è usato anche come sistema audio in molti dispositivi mobili basati su Linux, come Nokia N900 e il Palm Pre.

## Funzionalità

Le principali funzioni di PulseAudio includono:
* Controlli del volume sulle applicazioni:
* Un'architettura di plugin estendibile con supporto ai moduli caricabili;
* Compatibilità con molte applicazioni audio;
* Supporto per multiple fonti audio;
* Bassa latenza di funzionamento;
* Una architettura di memoria zero-copy, al fine di ridurre il carico del processore;
* Capacità di localizzare altri computer in rete locale sui quali gira PulseAudio, consentendo la riproduzione di suoni sui loro altoparlanti;
* Capacità di cambiare il dispositivo di riproduzione dei suoni al volo, ad esempio, durante la riproduzione di suoni da parte di un'applicazione, in maniera trasparente ad essa;
* Un'interfaccia a riga di comando con capacità di scripting;
* Un demone del sistema sonoro, configurabile da riga di comando;
* Funzioni di conversione dei campioni e ricampionamento;
* Capacità di combinare più schede audio in una sola;
* Capacità di sincronizzare molteplici flussi di riproduzione;
* Supporto ai dispositivi audio bluetooth e al loro riconoscimento;
* Capacità di regolare l'equalizzazione a livello di sistema;

## Utilizzo

Esso è comunemente usato sulle distribuzioni GNU/Linux, come Fedora, Ubuntu, Mandriva, Linux Mint, openSUSE e OpenWRT. C'è anche un crescente supporto di PulseAudio nel progetto GNOME. PulseAudio funziona inoltre anche su Microsoft Windows e sui sistemi POSIX.
PulseAudio è disponibile nelle versioni recenti di molte distribuzioni Linux importanti quali Fedora, Ubuntu, Debian, Mageia, Mandriva Linux, Linux Mint, openSUSE e OpenWrt. Il progetto GNOME supporta PulseAudio, così come l'ambiente desktop KDE, dal momento che il server audio è integrato nel sistema Plasma insieme al supporto a Phonon (il framework multimediale di KDE) e a KMix (l'applicazione di regolazione volumi integrata). In KDE è anche presente un'interfaccia utente "Regolazione volume" che supporta gli utenti nella configurazione di speaker multipli. PulseAudio viene utilizzato da vari dispositivi mobili basati su Linux, fra i quali il Nokia N900, il Nokia N9 ed il Palm Pre.
Tizen, un sistema operativo open source per dispositivi mobili patrocinato dalla Linux Foundation e controllato da un consorzio composto da Intel e Samsung, utilizza PulseAudio.

### Problemi durante la fase di adozione

* Quando venne adottato dalle distribuzioni, lo sviluppatore di PulseAudio Lennart Poettering lo descrisse come "the software that currently breaks your audio". Poettering affermò più tardi che "Ubuntu didn't exactly do a stellar job. They didn't do their homework" nell'adottare PulseAudio in Ubuntu "Hardy Heron" (8.04), un problema che è stato poi risolto con le seguenti versioni di Ubuntu. Tuttavia, Poettering non è ancora soddisfatto dell'adozione di PulseAudio da parte di Ubuntu.
* Alcuni programmi, tra cui vecchie versioni di Adobe Flash su GNU/Linux, causavano instabilità in PulseAudio; il problema non si verificava più nelle ultime implementazioni del plugin di Adobe Flash.
* Le prime versioni del sistema di gestione degli eventi di PulseAudio potevano talvolta iniziare a distorcere i suoni a causa della gestione errata degli eventi di buffer overflow (o overrun) e di buffer underflow (o underrun).

## Alternative
### Altri server audio

JACK è un server audio professionale che fornisce prestazioni multimediali audio in tempo reale, a bassa latenza (ad esempio, 5 millisecondi o meno). Dalla versione JACK2 in poi, questo supporta una efficiente ripartizione del carico computazionale attraverso l'uso delle capacità dei multiprocessori simmetrici, ovverosia distribuendo il carico di tutti i programmi che utilizzano audio fra i vari processori disponibili. JACK è il server audio preferibile per l'uso di applicazioni audio professionali quali Ardour, Rezound e LinuxSampler. Molte distribuzioni Linux orientate alla produzione musicale lo utilizzano come server audio predefinito.
È possibile utilizzare contemporaneamente JACK e PulseAudio su uno stesso sistema: mentre JACK è in esecuzione come server audio principale, PulseAudio può connettersi automaticamente ad esso in qualità di client, consentendo dunque la riproduzione e la registrazione di suoni da parte dei client che utilizzano PulseAudio, insieme ai client che utilizzano JACK. Questa procedura è descritta (in lingua inglese) qui.
PipeWire è un server audio e video che ha come obiettivi il supporto dei casi d'uso attualmente gestiti da PulseAudio e JACK oltre alla gestione degli stream video.

### Infrastrutture audio generiche

Prima dell'esistenza di JACK e PulseAudio, il suono nei sistemi liberi era amministrato da soluzioni audio multiuso. Queste soluzioni non coprono del tutto i processi di mixing e streaming del suono, ma sono tuttora utilizzate da JACK e da PulseAudio per inviare il flusso sonoro finale alla scheda audio.
* ALSA fornisce un mixer chiamato dmix, che è stato sviluppato prima di PulseAudio. Questo è disponibile su quasi tutte le distribuzioni GNU/Linux ed è un semplice PCM audio mixer. Non fornisce le caratteristiche avanzate (come il ricampionamento in alta qualità, aggregazione di dispositivi, timer-based scheduling e network audio) di PulseAudio. Nondimeno, se combinato con schede audio e programmi adeguati, ALSA può offrire basse latenze.
* OSS (Open Sound System). Questo è stato il sistema audio originale utilizzato in Linux e in altri sistemi Unix. Il suo uso cessò a partire dalla versione 2.5 del kernel Linux. Lo sviluppo da parte di realtà proprietarie è stato continuato da parte di 4Front Technologies, che nel 2007 ha pubblicato il codice sorgente di OSS con la licenza CDDL per OpenSolaris e con la licenza GPL per Linux. La sua moderna implementazione, Open Sound System v4, fornisce capacità di mixing software, ricampionamento e modifica del volume separatamente per ogni applicazione client; al contrario di PulseAudio, queste caratteristiche sono implementate all'interno del kernel.