La Guida di Noob a Linux Audio Alsa, OSS e Pulse Audio hanno spiegato

La Guida di Noob a Linux Audio Alsa, OSS e Pulse Audio hanno spiegato
C'è una cosa su cui gli utenti Linux nuovi e esperti possono concordare: Linux Audio è confuso. Non solo le tecnologie multiple svolgono lavori simili, ma la maggior parte di esse può essere completamente omessa dalle distribuzioni Linux e dai loro utenti.

La situazione è relativamente bene quando si tratta di distro di mainstream come Ubuntu, Debian o Fedora perché i loro sviluppatori hanno fatto di tutto per far funzionare l'audio, ma lo stesso non si può dire su Arch Linux, Gentoo, e altre distribuzioni minimalistiche che si aspettano che gli utenti configcano tutto da zero.

Questo articolo non ti renderà un esperto di Linux Audio, ma, si spera, spiegherà le tecnologie di base responsabili della realizzazione del suono dai tuoi altoparlanti quando apri un video su YouTube o giocherai su Steam.

Advanced Linux Sound Architecture (ALSA)

Cominciamo con lo strato più importante dell'audio Linux, ALSA. Creato nel 1998 dallo sviluppatore di software ceco Jaroslav Kysela, ALSA è responsabile di dare una voce a tutte le moderne distribuzioni Linux. In realtà fa parte del kernel Linux stesso, fornendo funzionalità audio al resto del sistema tramite un'interfaccia di programmazione dell'applicazione (API) per i driver del dispositivo di scheda audio.

Il design originale di ALSA è stato in gran parte ispirato dal driver del dispositivo Linux per la scheda audio ad ultrasuoni Gravis, che è stata realizzata dalla tecnologia avanzata avanzata del Canada Gravis e è diventato molto popolare nella scena demo degli anni '90.

Il supporto ALSA per tutti i tipi di interfacce audio grazie a driver audio completamente modularizzati, può gestire fino a otto dispositivi audio contemporaneamente, accedere alla funzionalità hardware MIDI, eseguire la miscelazione hardware di più canali e altro ancora.

Gli utenti in genere interagiscono con ALSA usando Alsamixer, un programma di mixer grafico che può essere utilizzato per configurare le impostazioni del suono e regolare il volume dei singoli canali. Alsamixer funziona nel terminale e puoi invocarlo semplicemente digitando il suo nome. Un comando tastiera particolarmente utile viene attivato premendo il tasto M. Questo comando attiva la muting del canale, ed è una soluzione abbastanza comune per molte domande pubblicate sulle schede di discussione di Linux.

Sistema audio aperto (OSS)

Il sito Web ufficiale di ALSA menziona il supporto per il sistema audio aperto o OSS in breve. Fino a Linux 2.5, OSS era in realtà il sistema audio principale e solo per Linux. Alsa è stata progettata per superare le sue varie carenze, come il fatto che non ha permesso a un'applicazione di accedere all'hardware alla volta. In Linux 2.6 ALSA ha sostituito l'OSS come sistema audio predefinito.

Quando gli sviluppatori di OSS hanno annunciato che la versione OSS avrebbe avuto una licenza proprietaria, una decisione è stata rapidamente presa dagli sviluppatori Linux per sostituirla con ALSA. Vale la pena notare che OSS è diventato nuovamente il software gratuito con il rilascio della versione 4 nel 2007. Oggi OSS è distribuito in quattro diverse licenze (BSD, CDDL, GPL, Proprietarie).

La maggior parte delle distribuzioni Linux in questi giorni non si preoccupano nemmeno di attivare lo strato di emulazione OSS presente in ALSA perché quasi nessuno ne ha più bisogno, rendendo l'OSS una reliquia del passato.

Pulseaudio

Se non ricordi l'ultima volta che hai interagito con ALSA quando si modifica le impostazioni audio, probabilmente è perché il livello rivolto all'utente del sistema audio Linux nella maggior parte delle distribuzioni moderne si chiama PulseAudio.

Pulseaudio è stato inizialmente rilasciato nel 2004 ed è ora incluso e abilitato per impostazione predefinita in Ubuntu, Linux Mint, Opensuse e altre importanti distribuzioni. Il compito di PulseAudio è di passare dati audio tra le tue applicazioni e l'hardware, dirigendo i suoni provenienti da ALSA a varie destinazioni di output, come altoparlanti o cuffie del computer. Ecco perché viene comunemente definito un server audio.

A prima vista, potrebbe sembrare che Pulseaudio non aggiunga davvero nulla di fondamentale per l'audio Linux, e molti dei suoi critici condividono la stessa opinione. In realtà, in realtà ci sono molte cose che sarebbero impossibili o difficili da realizzare senza di essa, tra cui la miscelazione di diversi suoni in uno, il trasferimento dell'audio su una macchina diversa o la modifica del formato del campione o del conteggio dei canali.

PulseAudio porta anche compatibilità multipiattaforma (FreeBSD, NetBSD, OpenBSD, Linux, Illumos, Solaris, MacOS e, in modo limitato, Microsoft Windows). Se si desidera controllare direttamente PulseAudio, invece di interagire con esso attraverso un widget di controllo del volume o un pannello di qualche tipo, è possibile installare il controllo del volume PulseAudio (chiamato pavucontrol nella maggior parte dei repository del pacchetto).

Se ritieni di non avere alcuna utilità per le funzionalità fornite da PulseAudio, puoi utilizzare ALSA puro o sostituirlo con un server audio diverso.

Pulseaudio vs. JACK

PulseAudio non è l'unico server audio per Linux. C'è anche Jack, che è un acronimo ricorsivo per Jack Audio Connection Kit. Mentre PulseAudio è stato sviluppato con le esigenze degli utenti generali di Linux, Jack è destinato a DJ e professionisti audio, fornendo connessioni in tempo reale a bassa latenza per i dati audio e MIDI.

Poiché Jack ti consente di collegare insieme gli ingressi audio e le uscite di ognuna delle tue applicazioni, puoi fare cose piuttosto interessanti con esso, come monitorare la propria voce, aggiungere effetti in tempo reale e altro ancora. In effetti, il nome di questo sistema audio è stato ispirato dai cavi utilizzati in studi di registrazione reali per creare intricate connessioni tra strumenti, sintetizzatori, controller MIDI e multitrackers.

Probabilmente il più grande svantaggio di Jack è che di solito funziona perfettamente o orribilmente, possedendo il fatto che il suo obiettivo principale è quello di fornire audio a bassa latenza. Richiede inoltre una potenza considerevolmente maggiore della CPU rispetto a PulseAudio, motivo per cui lo troverai principalmente su workstation professionali dedicate all'editing audio.

Controllo dell'audio di impulsi e ALSA

Ti starai chiedendo, come faccio a dire quale software audio sta utilizzando il mio computer? Per verificare se sono presenti sia l'audio di impulso che l'ALSA, utilizzare i seguenti due comandi:
Verificare la presenza di PulseAudio:

Elenco $ pactl


Verificare per Alsa:

$ aplay -l

Conclusione

L'audio su Linux sembra complicato perché lo è davvero. Stringere la rete di tecnologie legacy e livelli di astrazione può essere una vera sfida anche per gli utenti di Linux esperti che conoscono a memoria i dettagli del sistema operativo. Spero che il nostro articolo ti abbia aiutato a comprendere meglio i componenti più importanti del sistema audio Linux, tra cui ALSA, OSS e PulseAudio.