Audio in tempo reale? Facile con Linux

La gestione degli Interrupt

Per avere real time e sincronia si deve scendere a livelli più bassi dei normali servizi per “sporcarsi le mani” con le impostazioni degli Irq (Interrupt Request) del proprio computer. Gli Irq sono impulsi elettrici veri e propri oppure speciali messaggi software con cui una periferica, un driver o un qualsiasi programma comunicano al sistema operativo di avere urgente bisogno di attenzione. Un esempio banale ma utile di Interrupt potrebbe essere la segnalazione che la scheda audio ha terminato di digitalizzare un altro millisecondo di voce ricevuta dal microfono, e vorrebbe disfarsene, consegnandola alla Cpu.

In pratica, capire quali siano gli Interrupt assegnati (o assegnabili) alla propria scheda audio o a certi programmi, nonché variarne le rispettive priorità , non è facilissimo, ma script come QuickScan e rtirq possono semplificare parecchio il lavoro. Questo è un bene anche perché periferiche Usb, schede Ethernet o Wifi, porte parallele o seriali cercheranno sempre di attirare continuamente l’attenzione della Cpu. Disabilitare completamente, anche se temporaneamente, i rispettivi Interrupt (un’operazione chiamata unbind) potrebbe essere in casi estremi l’unico modo per impedire a quell’hardware di interferire con l’attività  della scheda audio.

Audio digitale con Ardour, Midi con Rosegarden... mancano le percussioni, ma quelle le fornisce la drum machine di Hydrogen.
Audio digitale con Ardour, Midi con Rosegarden… mancano le percussioni, ma quelle le fornisce la drum machine di Hydrogen.

Kernel: tempo reale o no?

I kernel Linux sono disponibili sia in versioni “normali” sia “real time”. Gli ultimi, normalmente riconoscibili dalla stringa “rt” o ‘-realtime’ nei loro numeri di versione, permettono di assegnare ai driver delle periferiche, e in particolare di quelle audio, interrupt con priorità  definibili dall’amministratore. Questo ovviamente facilita digitalizzazione ed elaborazione dei flussi audio senza ritardi, o corruzioni e perdite di dati. Per sapere se si sta usando un kernel real time si può osservare la schermata d’avvio di Grub, il boot loader di Linux, oppure digitare il comando “uname -a” in un terminale.

In pratica, almeno su hardware recente e ben supportato e se interessa principalmente la registrazione, non è più indispensabile utilizzare un kernel real time per avere prestazioni Daw accettabili. Altre funzioni come l’Irq threading, da tempo integrate nei kernel standard, possono produrre sostanzialmente lo stesso risultato.

Qualora si volesse comunque un kernel real time, ma senza cambiare distribuzione, spesso lo si può trovare nei normali archivi online della distribuzione stessa. In caso contrario, lo si può creare. Il modo meno rischioso di farlo, appoggiandosi a una delle tante guide disponibili, è salvare la configurazione del kernel corrente, cambiare solo i parametri suggeriti dalle guide e ricompilare.

I numerosi plugin per sistemi audio Open Source sono controllabili da interfacce comuni come questa di KXStudio, chiamata Carla.
I numerosi plugin per sistemi audio Open Source sono controllabili da interfacce comuni come questa di KXStudio, chiamata Carla.

Server audio

Da quanto abbiamo scritto finora dovrebbe essere evidente che, qualunque sia la configurazione del sistema operativo vero e proprio, una Daw non potrà  funzionare senza un arbitro. Un programma che colleghi e coordini tutte le altre applicazioni coinvolte, costringendole a lavorare sempre in sincrono. Su Linux, un’applicazione che ha questo compito si chiama server audio. Quello più comune nelle distribuzioni moderne è PulseAudio (https://pulseaudio.org), progettato per fornire prestazioni soddisfacenti sul maggior numero di computer possibile, senza particolari configurazioni.

Se si vuol fare sul serio occorre disinstallare PulseAudio o almeno disattivarlo, perché per elaborazione audio in tempo reale è molto più indicato il server Jack (https://jackaudio.org), fatto su misura per quel tipo di lavoro. In effetti le Daw Linux più comuni sono quelle costruite proprio intorno a Jack, alle sue interfacce e a tre altri componenti: uno per elaborazione e mixaggio di audio digitalizzato, uno per audio Midi e qualche batteria digitale per le percussioni.

➜ Continua a leggere: audio con Linux

1
2
3
4

Nessun Articolo da visualizzare