Registrare musica da chitarra elettrica su linux – parte 1
Introduzione
In questa serie di articoli cercherò di spiegare come sia possibile registrare il suono prodotto da una chitarra elettrica (nel mio caso un basso) e magari applicarci qualche effetto utilizzando linux.
Jack 1/4″ + Scheda audio integrata = Problema
Il primo problema che si pone tra noi e il nostro obiettivo è quello del collegamento della chitarra, che notoriamente ha un’uscita jack da 1/4″ (o 6,35 mm) e la scheda audio normalmente con un entrata audio minijack da 3,5 mm.
Per superare questo ostacolo è possibile preamplificare il segnale di uscita della chitarra e cercare in qualche modo di adattare il jack della chitarra per attaccarlo al PC. A questo proposito esistono in commercio numerosi strumenti adatti allo scopo, nel mio caso ho scelto l’ottimo Behringer UCG102 che prende il suono della chitarra e lo preamplifica restituendo il suono tramite un cavo USB (da attaccare al PC) e una line out per le cuffie. Magari non sarà lo strumento più potente ed efficiente sulla faccia della terra per tale compito, ma contando l’uso che ne faccio (registro brevi pezzi tanto per fare, o fare qualche “bozza”), e il suo prezzo (all’incirca 50 euro) è più che buono, inoltre presenta una buona compatibilità con i driver audio linux, che non guasta mai.
Bene a questo punto abbiamo la nostra bella chitarra collegata al pc, ed ora?
Kernel Real Time
Lo dico subito e che poi non se ne parli più: non è strettamente necessario configurare il proprio kernel per il real time (o comunque per una bassa latenza), il procedimento richiede tempo, fatica e molta voglia, può portare a risultati non voluti e forse anche esplosioni (vabbè, questo forse no, ma ci stava bene), ma è ovvio che aiuta… e molto, ed è quindi vivamente consigliata. Avere un kernel real time significa in poche parole che, hardware permettendo, tutte le operazioni di input e output (I/O) vengono eseguite in tempo reale. Facendo un esempio a caso, ciò significa poter registrare audio e ascoltarlo allo stesso tempo.
Per poter avere un “sistema in tempo reale” è necessario ricompilare il proprio kernel con una patch (realtime-preemption) e configurarlo secondo alcuni criteri. Alcune distribuzioni possiedono già un kernel real-time (Ubuntu Studio per esempio e credo che la stessa Ubuntu da Feisty includa un kernel a bassa latenza, ma non prendete le mie parole per oro colato).
Però, visto che non mi va di scrivere un’altra guida sulla compilazione del kernel, vi lascio ad una semplice videoguida (in inglese) proprio sulla ricompilazione e configurazione di un kernel vanilla (è in inglese, ma non è molto difficile seguire) chissà che un giorno mi venga voglia di scrivere qualcosa a riguardo…
http://www.youtube.com/watch?v=zzvyV1hyDYc
Server audio
Che abbiate o no ricompilato il kernel, a questo punto ci troviamo con una chitarra attaccata al PC… Il prossimo passo sarà quindi quello di fare in modo di “interfacciare” la chitarra (più precisamnete la periferica a cui al chitarra è collegata) con il nostro sistema operativo. Per fare tutto questo useremo Jack, un server audio professionale per linux, completamente open source.
Il funzionamento di Jack è strettamente correlato al sistema ALSA, ciò vuol dire che non potremo installare ed utilizzare Jack senza aver prima installato e configurato a dovere ALSA.
Jack si pone tra le varie applicazioni che lo supportano (MPlayer, XMMS, Alsaplayer, ecc…) e la stessa infrastruttura ALSA collegandole tra di loro. Ogni applicazione è una sorta di device virtuale con almeno una linea di entrata (Line In) e una di uscita (Line Out), quindi, tramite Jack, è possbile creare un flusso che esce da un’applicazione ed entra in un’altra. È possibile ad esempio eseguire un file audio come un mp3, aggiungere, chessò, una traccia registrata con uno strumento musicale o un microfono e registrare il tutto con un’ulteriore applicazione.
Ed ora vediamo come utilizzarlo per i nostri scopi.
Innanzitutto è necessario installarlo, potete trovare i sorgenti su http://jackaudio.org/ oppure installare il pacchetto più le dipendenze con il manager dei pacchetti preferito (su Debian ad esempio apt-get install jackd).
Prima di avviarlo però è necessario identificare la nostra periferica (in questo caso il Behringer UCG102 con chitarra) e vedere come è stata attivata da ALSA. Per fare questo basta usare l’opzione -l di arecord:
$ arecord -l
L’output dovrebbe assomigliare ad una cosa del genere:
**** List of CAPTURE Hardware Devices **** card 0: VT82xx [HDA VIA VT82xx], device 0: ALC861 Analog [ALC861 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: default [USB Audio CODEC ], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
La prima periferica è la mi scheda audio integrata, mentre la seconda è la periferica che ci interessa, registrata come card 1.
Ora avviamo Jack con le seguenti opzioni:
$ jackd -R -p128 -t200 -m -dalsa -r44100 -p256 -n2 -D -Chw:1,0 -Phw:1,0 -S -i1 -o2 -I1 -O1
Che in pratica significano:
Driver utilizzati -> alsa
Realtime (per questa opzione è necessario un kernel real time)
No Memory Lock
Force 16 bit (la conversione digitale Behringer UCG102 è solo 16 bit quindi questa opzione è obbligatoria)
Priority -> 0
Frames/Second -> 256 (questa impostazione è un buon compromesso fra bassa latenza e carico per la CPU, se possedete processori potenti potete anche abbassare il valore).
Sample Rate -> 44100
Periods/Buffer -> 2
Port Maximum -> 128
Timeout (msec) -> 200
Dither -> None
Audio -> Duplex
Input Device -> hw:1,0 (la periferica vista prima)
Output Device -> hw:1,0 (idem)
Input Channels -> 1
Output Channels -> 2
Input Latency -> 1
Output Latency -> 1
È anche possibile utilizzare il comodo front-end grafico Qjackctl (su Debian viene installato come dipendenza). Le opzioni possono cambiare da sistema a sistema, perciò non vi preoccupate se jackd dovesse crashare quando lo fate partire, basta fare qualche test (tendenzialmente per quanto riguarda i frames/second) e trovare la configurazione giusta. Bene ed ora tramite il connettore (il pulsante Connect su Qjackctl) collegate l’input con l’output voluto, e dovreste sentire il suono base della chitarra così come esce dai pickup.
La prima parte termina quì, nel prossimo articolo parlerò di plugin LADSPA e finalmente di come registrare il suono prodotto magari aggiungendo una base prodotta con altri strumenti.
AlexBio's Blog

3 Comments