Guide Home Recording Linux per la Musica Software Tecnologia

Linux per la Musica – Kernel a bassa latenza

Partiamo proprio dal nocciolo, il kernel appunto, il cuore pulsante del nostro sistema operativo, quel componente che si occupa di mettere in contatto i programmi che lavorano a livello dell’utente con le periferiche e l’hardware del computer. Linux, propriamente detto, e’ di fatto il Kernel. Quello che chiamiamo Linux e usiamo tutti i giorni e’ di fatto l’insieme di tantissime componenti di cui il Kernel e’ la piu’ importante. L’insieme di queste componenti nel mondo Linux trova la sua denominazione in “distribuzione”, di fatto esistone diverse organizzazioni e aziende che intorno al kernel linux possono assemblare il sistema operativo fatto e finito per essere usato dall’utente finale. In ambito audio/video esistono alcune distribuzioni che sono appositamente assemblate per queste applicazioni ed includo gia’ di base le applicazioni piu’ usate, spesso hanno un’interfaccia grafica personalizzata tale da essere accattivante per questo tipo di utenza e in molti casi usano un kernel a Bassa Latenza. Pero’ mai come nel mondo di Linux e dell’open source vale il detto “il mondo e’ bello perche’ e’ vario”, l’estrema varieta’ offerta dalle distribuzioni e’ veramente uno dei punti di forza e anche di debolezza di questo sistema operativo, ma con questa bisogna fare i conti. Quindi i casi sono due, o si parte direttamente da una distribuzione realizzata per applicazioni Audio/ Video o si ottimizza la propria distribuzione preferita rendendola adatta a queste applicazioni.

Proprio perche’ siamo di fronte ad una vastissima scelta di distribuzioni e’ importante scegliere bene, certo senza avere molta esperienza e’ un po’ una scommessa ma basta documentarsi un po’ in rete prima di fare la propria scelta. Io personalmente ho preferito scegliere una distribuzione general purpose, non specializzata in un ambito specifico, solida e stabile, aggiornata periodicamente e facile da usare, Linux Mint nella versione 18.3 (quella attuale). Le distribuzioni specializzate rivolgendosi a nicchie di utenti potrebbero soffrire di alcuni problemi proprio dovuti ad una base di utenza ristretta, ma questo e’ il mio personale pensiero.

Partendo da Linux Mint il primo passo per ottimizzare il sistema per l’uso in ambito Home Recording e’ stato quello di installare un kernel a bassa latenza.

La Latenza e’ l’intervallo, di solito misurato in microsecondi, che passa da quando un segnale entra nel sistema prima di riuscirne, spesso e’ riscontrabile quando si registra monitorando attraverso il computer, e se il ritardo in microsecondi e’ superiore ad un determinato valore si distinguono due suoni se viene anche monitorato il suono diretto, o semplicemente si sente il suono prodotto in ritardo rispetto a quando viene suonato, anche nel caso non si monitori il suono tramite il computer ma direttamente dall’interfaccia audio (evitando quindi di passare attraverso il sistema) si hanno enormi problemi in caso di elevata latenza che rendono la registrazione molto difficile.

macOS e’ un sistema operativo che lavora a bassissima latenza grazie alla tecnologia Core Audio, appositamente studiata da Apple per ridurre la latenza nella gestione dei flussi audio. In Windows il problema e’ stato parzialmente risolto dai driver ASIO (Audio Stream I/O) di Steinberg che permettono di ottenere prestazioni superiori a Microsoft DirectSound.

In Linux per far fronte al problema della latenza abbiamo la possibilita’ di rimpiazzare totalmente il suo cuore con uno adatto, appunto realizzato per ridurre al minimo la latenza. In particolare a differenza di un Kernel generico dove solo un processo puo’ avere precedenza sugli altri, il kernel a bassa latenza permette di dare a piu’ processi critici (come quelli che gestiscono i flussi audio) una precedenza sui processi non critici (come quelli che gestiscono il networking) e siccome ogni processo ha un user proprietario, questo puo’ essere anche definito per ogni utente.

Di fatto la modularita’ dell’architettura con cui e’ costruito un sistema operativo Linux permette di andare a sostituire il motore con quello piu’ adatto all’uso che si deve fare della macchina. e’ come avere una utilitaria per andare al lavoro tutti i giorni e poi nel week end potergli mettere un motore piu’ spinto per andare in pista a correre.

La cosa veramente bella e’ che ad ogni avvio della macchina e’ possibile scegliere con quale Kernel lavorare, e quindi nel caso di debbano fare lavori che non richiedono bassa latenza e’ meglio avviare la macchina con un kernel generico che di solito ha meno impatto sulle risorse energetiche e sull’uso della memoria.

Fino a pochi anni fa mettere mano all’installazione di un nuovo kernel era una procedura per pochi adepti, invece ora e’ diventata una cosa veramente alla portata di tutti. Mi ci e’ voluto un po per capire quale kernel a bassa latenza installare ma alla fine ne sono venuto a capo grazie a questa guida

https://wiki.ubuntu-it.org/AmministrazioneSistema/KernelBassaLatenza

La mia versione di Linux Mint usava di default una versione 4.10 generic, per ogni versione esiste una relativa low latency, ma la cosa migliore e’ usare systema Synaptic (sulle distribuzioni derivate da Debian/Ubuntu come la Mint) e scegliere di intallare il pacchetto “linux-lowlatency”, synaptic si occupera’ di installare anche gli altri pacchetti necessari legati a questo selezionato.

Nel giro di pochi minuti il kernel viene scaricato e installato, a questo punto basta riavviare per trovarlo nelle opzioni di boot di GRUB, in molti casi Grup e’ impostato per non mostrare il menu di selezione e avviare il Kernel piu’ recente. Siccome selezionando “linux-lowlatency” viene installato un kernel versione 4.4, la macchina si avvierebbe sempre con il kernel 4.10 di default. Al riavvio quando compare lo schermo nero con il cursore lampeggiante per pochi secondi bisogna premere “shift” (o nel mio caso ho scoperto che dovevo premere “esc” una volta sola) e cosi’ si puo’ accedere al menu di Grub per selezionare la versione desiderata del Kernel.

Una volta riavviata la macchina sempre seguendo la guida che ho linkato qui sopra bisogna impostare i paramentri “realtime” e inserire il proprio utente nel gruppo “realtime”

A questo punto si puo’ selezionare il kernel desiderato ad ogni avvio o rendere quello low latency l’impostazione predefinita all’avvio della macchina. Per fare questo basta seguire le istruzioni a questo link per settare come si vuole il file di configurazione di Grub

https://wiki.ubuntu-it.org/AmministrazioneSistema/Grub/FileCartelle#Submenu

Rimando anche all’indice generale in italiano del WIKI della comunita’ italiana di Ubuntu (Mint come ho scritto sopra e’ una distribuzione derivata da Ubuntu che a sua volta e’ derivata da Debian quindi quando si cercano soluzioni in rete spesso si ritrovano applicate a queste due distribuzioni) dove potete trovare tante altre guide molto utili e fatte bene

https://wiki.ubuntu-it.org/

Add Comment

Click here to post a comment

Leave a Comment

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.