Linux Audio – Introduzione

Linux e Audio sembrano essere due parole che difficilmente possono stare nella stessa frase, questo quantomeno e’ un pensiero comune non solo dei detrattori del pinguino ma anche di molti utenti che si limitano ad usare le funzioni base di riproduzione audio e che mai si sognerebbero di avventurarsi in territori piu’ complessi come la gestione dei flussi audio, la registrazione, l’editing, il mixing e il mastering. Anni fa gia’ riuscire a far funzionare la scheda audio del computer era un misto di bravura e fortuna. Come in tanti altri ambiti nel corso degli ultimi due decenni le cose sono molto cambiate.Certo l’Audio avanzato su Linux rimane una nicchia nella nicchia e quindi sviluppato da pochi per pochi, con tutto quello che ne consegue. Ma anche in questo ambito applicativo Linux e la sua architettura modulare ed aperta apportano tutti i benefici noti anche in altri ambiti. Per tutti gli appassionati di Software Libero e di Musica puo’ essere estremamente interessante esplorare le possibilta’ che il nostro sistema preferito ci puo’ offrire.

Linux con la sua struttura modulare mutuata dalla tradizione Unix si presenta come un’architettura estremamente flessibile per la gestione dell’Audio. Il sistema puo’ essere assemblato nei suoi componenti software a seconda delle proprie necessita’ e le varie componenti possono interagire “collegandole” tra loro proprio come una serie di dispositivi nel mondo reale. Questo e’ abbastanza diverso all’approccio monolitico delle DAW in ambiente Windows o macOS dove tutto avviene “dentro” la DAW e “applicazioni” esterne possono funzionare sotto forma di plugin.

Lo Stack Audio in Linux

Innanzitutto il Kernel stesso e’ un componente del sistema e puo’ essere cambiato proprio per utilizzare un kernel che meglio si presta per applicazioni audio, si puo’ scegliere un kernel low latency o real time, e ad ogni avvio della macchina decidere se avviare con questo kernel o se con un kernel generico se durante l’uso previsto non si necessita’ di questo tipo di gestione dei processi. E’ come poter cambiare il motore della propria macchina a seconda se si debba utilizzarla per andare a lavoro in citta’, per andare in pista a correre o in fuoristrada in montagna.

In un sistema audio possiamo partire utilizzando un kernel a bassa latenza o real time, anche i kernel generici attualmente permettono di ottenere bassi valori di latenza, pero’ e’ comunque ancora consigliato utilizzare un kernel che gestisca i processi audio in modo prioritario.

Sul mio blog Guitarblog ho scritto un post dedicato al Kernel a bassa latenza:

La cosa veramente comoda e’ che una volta installato un kernel Low Latency o Real Time con Grub possiamo ad ogni avvio decidere con quale kernel lavorare e quindi in sessioni che non richiedono lavoro su audio possiamo tranquillamente avviare con un Kernel Generico.

ALSA (The Advanced Linux Sound Architecture) e’ la tecnologia che fornisce ai sistemi Linux funzionalita’ Audio e Midi, e’ parte del Kernel Linux e fornisce un’interfaccia di programmazione per le applicazioni (API) che permette di interfacciare le applicazioni all’hardware audio.

alsamixer – applicazione da riga di comando che permette di regolare i livelli di in e out nella scheda audio

La comunicazione tra le applicazioni e ALSA viene gestito dai server PulseAudio e Jack.

PulseAudio e’ il sound server incluso in quasi tutte le distribuzioni Linux, si occupa di gestire i flussi audio tra le applicazioni e permette di regolare i volumi anche in modo indipendente con una sorta di mixer interno. Per l’utente generico PulseAudio e’ tutto quello che serve per ascoltare l’audio dei video su youtube, musica tramite lettori di file audio, e anche usare semplici applicazioni di registrazione. Di fatto l’utente generico nemmeno si deve piu’ preoccupare di fare niente per avere una gestione base dell’audio sulla sua macchina Linux, quasi tutte le schede audio integrate sono supportate.

Ecco tutto compare gia’ complicato, qui abbiamo gia’ introdotto troppe cose e ancora niente suona. Di fatto in altre piattaforme non e’ molto diverso. Tutto questo in macOS viene fatto da un componente che si chiama CoreAudio che e’ integrato estremamente bene nel sistema operativo e garantisce performance Audio e MIDI che lo rendono il sistema preferito per applicazioni professionali Audio. In Windows la stessa cosa e’ realizzata dalla componente DirectSound e per applicazioni professionali dai driver ASIO.

In Linux se invece si vuole lavorare con l’audio in modo piu’ serio PulseAudio mostra tutti i suoi limiti ed entra in gioco JACK. JACK non solo ha un nome cool che gia’ rassicura (ci pensa Jack, stai tranquillo) ma offre funzionalita’ avanzate che anche i sistemi macOS e Windows si sognano. JACK e’ come se fosse un gestore di connessioni tra hardware e applicazioni e applicazioni tra di loro, permette di portare la latenza a valori veramente bassi e quindi si presta per la registrazione e l’esecuzione di audio processato dal vivo. Jack e’ un server, non ha di suo un’interfaccia grafica e va configurato per funzionare correttamente in background dandogli i permessi necessari per attingere alle risorse della macchina ottenendo una priorita’ sugli altri processi in esecuzione e quindi gestire il flusso audio e la sua elaborazione nel modo piu’ efficiente possibile, questo di fatto permette di raggiungere le basse latenze necessarie

Alcune applicazioni usano PulseAudio e altre usano JACK, tanto per ritornare sulla complessita’ della questione “Audio in Linux”.

Se le applicazioni che si devono usare usano esclusivamente Jack basta non usare PulseAudio, e viceversa, ma se si usano applicazioni alcune che richiedono PA e altre JACK allora si puo’ usare PulseAudio-Jack Bridge installando il modulo pulseaudio-module-jack. In questo modo, per esempio, l’audio di un video di youtube puo’ essere mandato ad un’applicazione che usa Jack e quindi elaborato o registrato, stessa cosa con l’audio di una chiamata skype o di altre applicazioni VOIP che puo’ essere registrato, cosa utilissima a chi realizza podcast con interviste fatte a distanza.

Quindi sulla stessa macchina possiamo avere questi due Audio Server che funzionano insieme e comunicano senza problemi. Gia’ qua intuiamo la bellezza di questa architettura modulare.

Cadence – configurazione del driver ALSA

JACK va configurato per lavorare con ALSA e con la scheda audio, passandogli dei parametri all’avvio. Tutto puo’ essere fatto da riga di comando (dovrebbe essere scritto a caratteri cubitali sulle porte del paradiso) pero’ ci sono delle applicazioni grafiche che ci vengono incontro con semplici maschere di configurazione. Cadence, QjackCtl e Ubuntu Studio Controls sono le principali e fanno piu’ o meno le stesse cose. Permettono di selezionare l’interfaccia audio da utilizzare, eventualmente anche piu’ interfacce audio, impostare sue queste se possibile la frequenza di campionamento (44.1 kHz o superiori come 192 kHz), e la dimensione del buffer che determina la latenza piu’ altri parametri che determinano il funzionamento di Jack come il bridge con PulseAudio

QjackCtl – Pannello di controllo

In merito a JACK ho scritto un articolo dedicato sul mio blog GuitarBlog:

A questo link sono disponibili diverse informazioni su Jack Audio che possono essere di interessante lettura:

https://github.com/jackaudio/jackaudio.github.com/wiki

Ora che abbiamo visto i componenti principali che costituiscono la base per il sistema audio che vogliamo ralizzare con Linux come dotiamo la nostra distribuzione di tutto il necessario?

I due modi che conosco direttamente sono aggiungere i repositories KXSTUDIO alla nostra Debian o Ubuntu derivata, io l’ho fatto sulla mia macchina principale dotata di Linux Mint 19.3 e su una macchina dedicata a sperimentazioni audio dotata di MX Linux 19.2, oppure utilizzare UBUNTU STUDIO

Sul GuitarBlog ho scritto un articolo dedicato su KXSTUDIO a questo link:

UBUNTU STUDIO e’ una distribuzione derivata da UBUNTU che installa direttamente un Kernel a bassa latenza ed e’ gia’ configurata in modo ottimale, un tool per la gestione di Jack che e’ Ubuntu Studio Controls, e tutte le applicazioni necessarie come plugins, DAW, Plugins Host, sintetizzatori e processori per chitarra. Ubuntu Studio utilizza XFCE come Desktop Environment (dalla prossima release utilizzera’ KDE) se per qualche motivo non vi dovesse piacere XFCE, e’ possibile usare una qualsiasi altra variante di Ubuntu e usare Ubuntu Studio Installer per installare su questatutta la dotazione software di Ubuntu Studio.

Ci sono altre distribuzioni che includono la dotazione necessaria per lavorare con l’audio, pero’ a mio avviso risentono del fatto di avere una base di utenti molto ristretta e di non essere aggiornate con frequenza, AVLinux e’ una di queste, siccome gia’ siamo una minoranza sarei dell’idea di non andare a diventare anche una minoranza nella minoranza, Ubuntu e’ un’ottima distribuzione con una base di utenti adeguata per avere tutto il supporto necessario online.

A breve pubblichero’ un’articolo dedicato ad Ubuntu Studio

Una volta configurato il tutto completamente si possono usare software veramente avanzati e professionali, cito uno su tutti per ora (altri ne scopriremo in prossimi articoli di questa serie dedicata all’audio su Linux) Mixbus, DAW basata su Ardour che include un Mixer audio che funziona come le Consolles Analogiche prodotte da Harrison LCC.

Mixbus 6 su Linux Mint 19.3

Il modo piu’ semplice per iniziare a lavorare con l’Audio in Linux e’ usare Ubuntu Studio, anche per prendere confidenza con tutte le fantastiche applicazioni che il mondo del software libero ha prodotto in questi anni. Se poi si e’ diventati familiari con tutte queste componenti si puo’ procedere a personalizzare la propria distribuzione preferita. Come per molte altre applicazioni Linux puo’ essere personalizzato fino a livelli estremi e a fronte di una prima apparente complessita’ i vantaggi che si ottengono dall’uso di tecnologie aperte, modulari e configurabili sono talmente tanti che tutti gli sforzi iniziali vengono ripagati.

Una delle guide piu’ complete ed aggiornate sulla produzione musicale con Linux e’ quella di Stefano Droghetti raggiungibile a questo link:

http://stefanodroghetti.altervista.org/produzione-musicale/

Mi e’ stata molto utile agli inizi ed e’ tutt’ora un riferimento a cui torno spesso per chiarimenti. Consiglio a tutti gli interessati la lettura.

Linux Audio – Introduzione

3 pensieri su “Linux Audio – Introduzione

  • Agosto 21, 2020 alle 4:15 pm
    Permalink

    bravo!
    ho fatto lo stesso percorso qualche anno fa. ora la mia produzione audio è totalmente basata su linux.
    sto anche portando aventi un software musicale “tipo” Ableton live.

    Rispondi
    • Agosto 21, 2020 alle 11:51 pm
      Permalink

      Ciao Manu, ho letto sul tuo blog del passaggio dalla mela al pinguino! interessante! lo link qui nel mio commento per chi volesse leggerlo:
      https://manucontrovento.blogspot.com/2018/08/dalla-mela-al-pinguino-fasi-evolutive.html
      Anche io ho trovato la guida di Stefano Droghetti veramente utile.
      Ho visto anche i contenuti relativi al tuo software spin tool, in cui dici che lo hai realizzato per usarlo live, mi interessa molto approfondire.
      Ciao
      Matteo

      Rispondi
      • Settembre 22, 2021 alle 12:30 pm
        Permalink

        Ciao, purtroppo ho visto solo ora la tua risposta!! Grazie dell’apprezzamento però.

        Rispondi

Rispondi