IL server audio professionale per linux – Jack
Abbiamo dunque accennato al fatto che la modalita’ “full duplex”, cioe’ la capacita’ di registrare ed ascoltare allo stesso tempo utilizzando una sola scheda audio, fosse in realta’ una cosa possibile anche utilizzando i vecchi OSS, grazie ad alcuni software chiamati “sound servers”. Un sound server e’ quel software che cerca di sopperire alle mancanze in kernel space, cercando di gestire in user space l’uso e l’accesso a dispositivi audio. Vediamo quali sono i principali sound servers e in cosa Jack si differenzia dagli altri, e perche’ e’ definito sound server professionale.
ARTS – il sound server di KDE
Chi di voi non ha mai usato KDE? Io personalmente sono un grande fan di questo DE, lo trovo ben integrato, dalle basi solide e razionali, capace di adattarsi alle mie necessita’ e credo di essere abbastanza esigente. Uno dei migliori componenti di KDE e’ senz’altro arts, il server sonoro. Arts e’ molto configurabile: da una semplice GUI possiamo scegliere se abilitare la modalita’ full duplex, decidere una frequenza di campionatura, abilitare il supporto ALSA o OSS, oppure lasciare tutto cosi’ com’e’ Nella maggior parte dei casi arts si limita a funzionare bene :-) L’unico difetto di arts e’ che non e’ stato pensato per usi professionali: quando e’ stato concepito arts era gia’ un successo che si potesse ascoltare un mp3 con xmms mentre licq (chi lo ricorda?) ci diceva che ci era arrivato un messaggio: “Incoming Mail! :-)”
Esound – il sound server “alternativo”
ESD, altrimenti detto “Enlightened Sound Daemon”, tradisce dal nome le sue origini: e’ stato infatti scritto per il Window Manager Enlightenment, o semplicemente “E” :-) “E” e’ uno dei software pi sexy e geniali che un utente desktop possa mai incontrare nella sua ricerca dell’ambiente perfetto. Attualmente esd e’ stato adottato dal DE GNOME, altro stupendo progetto. A differenza di arts, esd non ha moltissimo da configurare, supporta il full duplex.
Jack Audio Connection Kit – per molti, ma non per tutti :-)
In cosa si distingue jack dagli altri sound servers allora? Perche’ viene presentato come sound server professionale?
La prima caratteristica e’ quella di fare uso dei dispositivi ALSA. Per l’esattezza direi che il funzionamento di Jack e’ strettamente correlato ad ogni aspetto del sistema ALSA, cio’ vuol dire che non possiamo installare Jack nella nostra macchina senza aver prima installato e configurato ALSA. Questa rottura con i drivers OSS e’ dovuta al fatto che facendo uso dei diversi dispositivi in /dev/snd/*, si demanda al kernel space una parte della gestione dei flussi I/O di dati da e verso la scheda audio, liberandosi di quell’unico /dev/dsp.
Jack lavora in “realtime”. Nell’ultimo anno c’e’ stato un rimbalzare della tematica “Linux in Real Time” da un forum all’altro, da una ML all’altra. C’e’ stato un revival dell’interesse per QNX, la nascita di progetti come RTLinux e tutto un fiorire di patches per testare le nuove capacita’ del kernel 2.6 anche nei kernel stabili 2.4. Queste “capacita'” evocano nomi esotici come “preemptible”, “lowlatency”, “capabilities” e ovviamente “realtime”.A parte il piacere fisico nel pronunciare queste parole, la direzione che ha preso lo sviluppo di linux privilegia ancora una volta le alte prestazioni a tutti i livelli, server, desktop, workstation e ovviamente Audio. Non sto qui a descrivere cosa questo significhi in altri campi, ma per l’audio significa che, a parita’ di hardware, un kernel che lavora in realtime garantisce, hardware permettendo che tutte le operazioni di I/O siano svolte appunto in tempo reale. Se pensiamo all’esempio fatto prima dell’esigenza di registrare ed ascoltare allo stesso tempo… cominciamo ad intravvedere la luce :-)
Jack e’ stato studiato e scritto con l’obiettivo di sfruttare appieno queste nuove capacita’ del kernel, aggiungendosi quindi all’infrastruttura ALSA come uno strato di, direi “collante” per tutte le applicazioni audio che supportano Jack. Ognuna di queste applicazioni, da XMMS ad Alsaplayer, da GStreamer ad Mplayer per citarne alcune che supportano Jack, sono “viste” dal nostro server audio, e messe in relazione l’una con le altre simultaneamente. Ogni applicazione puo’ essere pensata come un dispositivo virtuale, avente in genere almeno una entrata ed una uscita. In questo modo il segnale audio puo’ fluire da una applicazione all’altra in maniera omogenea e standardizzata.
Una catena di segnali puo’ ad esempio partire da un video aperto con mplayer, vi si puo’ aggiungere il segnale di un microfono in MIC IN, uno strumento in LINE IN, una base di batteria suonata con hydrogen e qualsiasi altra cosa, vi si possono aggiungere degli effetti digitali quali ad esempio un riverbero o un delay ecc, per poi terminare nell’entrata di una applicazione in grado di registrare il flusso audio, ad esempio il semplicissimo jack_rec, o applicazioni pi complesse come Ardour, che approfondisco più avanti.
Pur apprezzando la comodita’ di shell & command line, sin dai primi successi con registrazioni ed esperimenti con jack, ho da subito cercato un frontend grafico per gestirlo. Sono straconvinto che “SOLO console e’ bello” stia diventando sempre più un atteggiamento da nemici di linux che ha come unico effetto quello di spaventare gli utenti. Qjackctl e’ una simpatica applicazione che fa uso delle QT per rendere il compito di configurare, lanciare ed “uccidere” il nostro caro server audio una esperienza sempre piacevole.
Una volta lanciato e configurato qjackctl (rimando alla manualistica per sapere come) bastera’ usare i pulsanti start e stop per fermare ed eventulamente riconfigurare il server. Attenzione, non si possono usare pi server audio contemporaneamente, prima di lanciare jack assicuratevi che niente stia usando la scheda audio. La finestra di qjackctl contiene alcuni pulsanti utilissimi che aprono altrettante rispettive finestrelle che mostrano diverse info come messaggi, o stato delle connessioni e altre statistiche sul server audio. Qjackctl fa da monitor anche al “Transport” di jack, di cui parlero’ piu’ avanti.
Particolarmente utile ad esempio la finestra Connessioni, che e’ in grado di monitorare ma anche di modificare lo stato delle connessioni e quindi fungendo da “patchbay”, come si dice in gergo, cioe’ da centro di controllo dal quale poter gestire quali porte includere o escludere dal flusso audio. Ovviamente per “porta” intendo sia quelle fisicamente esistenti, sia qualsiasi applicazione che abbia degli input/output gestibili da jack. La finestra si presenta divisa in due parti, come si puo’ vedere dall’immagine. A sinistra gli Output, o “porte da cui si puo’ leggere”, a destra gli Input, o “porte su cui si puo’ scrivere”.
Linux Audio Developers Simple Plugin Architecture – LADSPA
Abbiamo accennato all’inclusione di effetti digitali nel flusso audio dell’esempio di prima. Chiunque abbia avuto a che fare con fonici, studi di registrazione, sale prova, concerti live ecc ecc sa di cosa parlo, in effetti adesso che abbiamo appurato di avere delle solide basi, possiamo addentrarci in discorsi un po’ piu’ avanzati e che hanno soprattutto un riscontro nelle esigenze del mondo reale. Le “mie” esigenze personali possono non coincidere con quelle di chi legge queste righe, ma credo che forniscano comunque un esempio di come sfruttare linux per fare cose piu’ concrete che un pur sempre rigenerante apt-get upgrade :-)
Prima di introdurre il software piu’ ambizioso che abbia mai visto per linux, vorrei descrivere brevemente il mondo degli effetti digitali secondo linux. Se qualcuno ha delle esperienze in home recording puo’ pensare ai plugins LADSPA come all’equivalente per linux dei plugin VST.
Ci sono tantissimi tipi di plugin, in base a cio’ che si deve fare si puo’ scegliere tra classici effetti tipo: chorus, delay, riverbero, echo ecc; ma se ne trovano per tutti i gusti: flanger, pitch shifter, phaser, compressor…; ci sono poi equalizzatori e filtri di tanti tipi, e altri plugins meno diffusi o “di nicchia”. Io nei miei cazzeggiamenti non posso fare a meno di un set di plugins di Tim Goetse che riproducono la timbrica di un amplificatore valvolare per chitarra :-). Li trovate qui.
Quasi tutti i plugins LADSPA possono lavorare in realtime oltre ad essere applicati “permanentemente” a file audio. Questo significa che posso applicare l’effetto echo ad esempio sia “live”, cioe’ mentre canto in un microfono appiccicato al LINE IN della mia scheda audio, sia in “postprocessing”, ossia modificando una parte da me cantataprecedentemente ma in cui manca appunto un po’ di echo ad esempio.
Adesso viene il bello…
Cosa succede se voglio registrare contemporaneamente una base di batteria con hydrogen, una ritmica per chitarra e una voce? Di piu’: se voglio aggiungere anche una linea di basso ma non c’e’ il bassista e devo fare tutto io? Di piu’: se voglio che la voce abbia un bell’effetto tridimensionale, e che allo stesso tempo la chitarra sia distorta e abbia un pizzico di pitch shifter impostato ad un’ottava in alto, in modo da dare un po’ l’impressione di ascoltare una dodici corde? Ancora di piu’: se voglio che ognuna delle “parti” sonore venga registrata in un file diverso in modo da permettermi di effettuare dei piccoli cambiamenti sulle singole “tracce”?
Succede che vi do il benvenuto nel mondo della registrazione multitraccia :-)
Pingback:Audio Professionale con Linux (I parte) « pollycoke :)
a due anni di distanza dall’articolo, consigli ancora di usare jack, o è stato superato da altri software? o magari non è più necessario, tipo che la gestione è passata da user space a kernel space e non c’è più bisogno di un server audio o cose simili?
:)
no, resta tutto attuale :)
Ragazzi! Ho bisogno di una guida su come configurare Jack sulla mia macchina, che è potente (amd 64 3200 con hd sata e 512 di ram) ma qjackctl non mi fa partire Jack in realtime! Magari una guida in italiano…
Grazie
Enrico
@Enrico:
La cosa più vicina ad una guida che io abbia scritto è questa:
http://pollycoke.wordpress.com/2006/05/21/linux-come-simulatore-di-ampli-valvolare/
Ma suppongo che per te sarebbe più facile installare Planet CCRMA, una distro pensata appositamente per fare quello che serve a te:
http://ccrma.stanford.edu/planetccrma/software/
E’ una distro basata su Fedora ma con un kernel realtime e altre cose interessanti… la cosa più semplice che esista al momento per fare Audio Professionale con Linux
Buona Musica! :-)
e di DeMuDi che ne pensi? Visto che uso Debian… ho un pò più di confidenza..
beh provala, ma i pacchetti sono troppo vecchi, o almeno lo erano le ultime volte che ci ho guardato
Pingback:Lista di Software Essenziale « pollycoke :)
Una domanda: ma per usare jack devo per forza compilare il kernel patchato con vanilla o mi basta installare il pacchetto? Perchè per ora, con ubuntu dapper, non sono riuscito a far funzionare ardour in alcuna maniera (ho provato anche varie configurazioni con Qjackctl senza esito) ed ho assoluto bisogno di audio full duplex (che su win andava, ma ora non so neanche dov’è il cd di windows).
PS: ‘sto blog è proprio figo, e questa non è una captatio benevolentiae. Hasta pronto
@roundhead:
Grazie… Uno che mi dice “captatio benevolentiae” in ogni caso merita una risposta :D
Il kernel patchato non è strettamente necessario per provare a giocare con jack, ma diventa indispensabile se si vuole fare qualcosina di interessante
Ciao Felipe, che ne pensi di PulseAudio?
http://pulseaudio.org/
Ciao Felipe, mi sto avventurando per la prima volta nel mondo LINUX… Ho letto con molto interesse quello che descrivi, ma la mia domanda è: quale versione di LINUX mi conviene installare per lavorare bene con l’audio a livello di registrazioni e mixaggi digitali? Grazie per la gentilezza. Stefano, Genova
Volevo chidere come posso gestire le uscite audio del mio pc.
In pratica ho un Olivetti M1500 dove la scheda madre ha sul retro una uscita audio ed una sul frontale, nulla di strano.
In passato, sullo stesso modello di macchina, una società (non faccio il nome) realizzò un player audio che gerstiva:
– retro: mp3 musicali + messaggi pre-registrati (al passaggio tra questi c’era un effetto fade)
– front: audio di un video in uscita
Quindi avere due audio contemporanei separati, uno sul retro ed un sul front.
Come posso farlo? JACK può essermi di aiuto?
Tutto da shell devo fare!
Grazie mille….
PS: Se non ricordo male la macchina personalizzata da quella società usava mp123 e ALSA. Avete qualche link da postarmi che possa essermi utile?
Ciao Felipe, volevo chiederti se con jack è possibile catturare da due microfoni contemporaneamente…io ho due schede audio e ho usato l’esempio che c’è nel pacchetto che scarichi per installare jack “capture_client”, ho provato ad avviare jack tramite “jackd -d alsa -d hw:0 -d hw:1” dove hw:0 e hw:1 rappresentano le due schede audio, solo che così mettendole insieme non funziona (mettendone uno per volta registra correttamente dai rispettivi microfoni singoli).
Se può servire uso fedora core 6 e compilo in kdevelop.
Spero di ricevere tua risposta…
ubuntu studio….
Pingback:Audio Professionale con Linux (I parte) at pollycoke :)
Pingback:Ubuntu a 360°, i migliori programmi Audio e Musica (Editing Audio)…ma siamo ancora lontani
Pingback:ρTondo Blog » Gnufunk, Hacking in a funky flavour