Guida verificata con Ubuntu: 20.04 22.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Storicamente nei sistemi Linux per la gestione dei flussi audio sono stati utilizzati differenti server audio a seconda della tipologia di software in utilizzo.
Per fare alcuni esempi, i flussi audio standard (player audio/video, filmati web, ecc..) sono stati gestiti da PulseAudio, mentre nel caso di utilizzo di software per l'editing professionale il server audio di riferimento è stato JACK.
Purtroppo tali server sono in conflitto fra di loro. Ad es. attivando il server JACK viene escluso l'audio di tutti quei software che utilizzano PulseAudio.
PipeWire è stato realizzato proprio per uniformare l'utilizzo dei software audio, eliminare i conflitti e rendere superflua l'installazione del kernel per la bassa latenza.
PipeWire è stato ufficialmente e parzialmente introdotto in Ubuntu 22.04 (installabile in modo limitato anche in Ubuntu 20.04).
Tuttavia la sua integrazione può ancora risultare incompleta. Questa guida è stata testata principalmente con il software Ardour ma può rendersi utile per l'utilizzo di altre applicazioni che fanno uso di JACK. Uno dei principali vantaggi lo si ha nel poter utilizzare contemporaneamente software che fanno uso o di PulseAudio o di JACK.
La versione presente nei repository ufficiali di Ubuntu 20.04 è obsoleta e limitata nelle funzionalità.
Per Ubuntu 18.04 il pacchetto PipeWire non è disponibile nei repository ufficiali.
In alternativa può essere installato tramite il PPA PipeWire Upstream, che fornisce sia versioni più recenti di quelle del repository ufficiale, aggiornate circa ogni quindici giorni, sia versioni per Ubuntu 18.04.
Installazione
Da repository Ubuntu
Installare i pacchetti necessari per PipeWire:
Ubuntu 22.04: Installare i pacchetti pipewire-audio-client-libraries, libspa-0.2-bluetooth, libspa-0.2-jack
Ubuntu 20.04: Installare i pacchetti pipewire, libpipewire-0.2-1, libspa-bluetooth, libspa-ffmpeg
Rimuovere il pacchetto pipewire-media-session e poi installare il manager di sessione wireplumber digitando nel terminale i comandi:
sudo apt purge pipewire-media-session sudo apt install wireplumber
Da repository PipeWire
Digitare nel terminale i comandi:
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream sudo add-apt-repository ppa:pipewire-debian/wireplumber-upstream
Aggiornare la lista dei pacchetti:
sudo apt update
Installare i pacchetti pipewire-audio-client-libraries, libspa-0.2-bluetooth, libspa-0.2-jack, pipewire-locales, wireplumber-locales.
Configurazione
Per la configurazione di software che utilizzano ALSA e JACK creare le seguenti copie:
sudo cp /usr/share/doc/pipewire/examples/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d/
sudo cp /usr/share/doc/pipewire/examples/ld.so.conf.d/pipewire-jack-*.conf /etc/ld.so.conf.d/
Terminare la configurazione attraverso il comando:
sudo ldconfig
Eliminare completamente il seguente pacchetto per PulseAudio:
sudo apt purge pulseaudio-module-bluetooth
Abilitare WirePlumber:
systemctl --user --now enable wireplumber.service
- Riavviare il sistema.
Verificare la corretta configurazione digitando nel terminale il comando:
pactl info
Dovrebbe essere visualizzato un output simile:
Stringa server: /run/user/1000/pulse/native Versione protocollo libreria: 35 Versione protocollo server: 35 Locale: sì Indice client: 66 Dimensione tile: 65472 Nome utente: pinguinux Nome host: slim Nome server: PulseAudio (on PipeWire 0.3.48) Versione server: 15.0.0 Specifica di campionamento predefinita: float32le ch 2 48000 Hz Mappa del canale predefinita: front-left,front-right Sink predefinito: alsa_output.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00.analog-stereo Sorgente predefinita: alsa_input.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00.mono-fallback Cookie: fb6f:2804
Verificare i passaggi svolti nel caso si visualizzasse un output differente o nella stringa:
Nome server: PulseAudio (on PipeWire 0.3.48)
mancasse un esplicito riferimento a PipeWire.
Gestione flussi audio/video
Per gestire flussi audio/video tra periferiche e programmi, è consigliabile installare i programmi Helvum e qpwgraph, il primo distribuito solo come pacchetto Flatpak, il secondo se si usa il repository PipeWire anche come pacchetto .deb.
Per abilitare l'installazione di software in formato Flatpak e lo store Flathub seguire i seguenti passi.
Da terminale installare i pacchetti necessari:
flatpak install org.rncbc.qpwgraph org.pipewire.Helvum
- Riavviare il sistema.
Dal repository Pipewire
Installare il pacchetto qpwgraph
- Riavviare il sistema.
Audio professionale con Carla
In ambito audio professionale per collegare i flussi audio e MIDI di sistema con altri provenienti da applicazioni in sandbox, (cioè installati da snap o flatpak), e per compatibilità con i plugin audio di Windows e Mac, è consigliabile installare il software Carla.
Per usare Carla installare i pacchetti carla, carla-bridge-linux32, carla-bridge-linux64, carla-bridge-win64, carla-bridge-win32
Frequenza di campionamento e latenza
Con PipeWire la frequenza di campionamento e latenza possono essere cambiate all'istante senza dover riavviare il server audio.
Eseguire queste modifiche prima di caricare le applicazioni multimediali.
La frequenza di campionamento predefinita è impostata a 48000 Hz.
Per cambiarla ad esempio a 44100 Hz, digitare nel terminale:
pw-metadata -n settings 0 clock.force-rate 44100
È tuttavia consigliabile lasciarla a 48000 Hz, essendo la frequenza ufficiale del audio della TV, dei DVD, di YouTube ecc..
La latenza invece è impostata di default a 1024, ma nei casi in cui occorra ad esempio registrare uno strumento o fare una live con OBS Studio, conviene abbassarla.
Per portarla ad esempio a un valore di 256 digitare:
pw-metadata -n settings 0 clock.force-quantum 256
I valori possibili sono 4096, 2048, 1024, 512, 256, 128, 64, 32. Più i valori sono bassi meno latenza si h,a ma si corre il rischio di rendere il sistema instabile e introdurre rumori nel audio.
Monitorare app che utilizzano PipeWire
Per vedere quali applicazioni stiano utilizzando PipeWire e a quale frequenza stiano lavorando, digitare il comando:
pw-top