Linux multimedia/Audio
Wikibooks, manuali e libri di testo liberi.
Indice |
[modifica] Introduzione
[modifica] Teoria
[modifica] Conversione analogico/digitale. Campionamento
Il primo passo verso l'audio digitale è campionare un suono analogico. Questo è compito dei convertitori analogico/digitale o ADC (Analog/Digital Converter). Non è il caso di entrare troppo nei dettagli, ma alcuni concetti relativi al campionamento sono utili, se non indispensabili.
[modifica] Frequenza di campionamento
Il suono è costituito da onde di pressione che si propagano nell'aria e in altri mezzi (ma ovviamente non nel vuoto). Questi suoni, come si accennava nella teoria generale, sono in realtà la somma di infinite onde di frequenze sempre più elevate.
Campionare il suono, come qualunque altro segnale, significa valutarne l'ampiezza a intervalli regolari, cioè ad una frequenza ben precisa. Quanto più alta è questa frequenza, tanto migliore sarà il risultato. Ma poiché l'orecchio umano è insensibile a frequenze superiori a circa 22 KHz, non ha senso cercare di catturare frequenze più elevate. Tuttavia un importante teorema dovuto a Nyquist e Shannon afferma che, per essere certi di campionare correttamente un segnale di una certa frequenza, occorre campionarlo a frequenza almeno doppia. Così, per riprodurre le frequenza attorno ai 22 KHz, occorre campionare a circa 44 KHz.
Questo è in sostanza il motivo per cui lo standard CD Audio è caratterizzato da una frequenza di campionamento di 44.100 Hz. Nei DVD Video e nei DAT (Digital Audio Tape) la componente audio è campionata a frequenza ancora più elevata, 48.000 Hz. Infine, il poco noto standard DVD Audio prevede una frequenza di campionamento di 192 KHz, quattro volte superiore a quella usata nell'audio dei DVD Video.
[modifica] Risoluzione e bitrate
Si è detto che, durante il campionamento, l'ampiezza del segnale viene misurata ad intervalli regolari, invece che in modo continuo. Valori troppo elevati o troppo bassi di ampiezza, non essendo udibili, possono essere eliminati in questa fase, stabilendo che solo i valori compresi in un dato intervallo devono essere registrati.
Tale intervallo deve essere necessariamente diviso in un numero finito di sotto-intervalli, perché non è possibile registrare un numero teoricamente infinito di possibili valori. In altre parole, anche l'intervallo delle ampiezze ammesse deve essere discretizzato. Quanto maggiore è il numero di valori discreti di ampiezza, tanto migliore sarà il risultato.
Il numero di valori possibili per l'ampiezza è la risoluzione. Questa è ovviamente legata al bitrate: infatti, per ognuno dei campioni, occorrerà una certa quantità di memoria per salvare il valore di ampiezza di quel campione. Ad esempio, in un CD audio la frequenza di campionamento, come si è detto, è di 44100 Hz. Inoltre si usano 16 bit per ogni campione, e questo per i canali sinistro e destro (assumendo suono stereofonico). Pertanto, in ogni secondo, occorrono 44100 * 16 * 2 = 1411200 bit, che corrispondono a 1411,2 kbps (kilo bit per secondo). Questo è dunque il bitrate caratteristico del CD audio. Questo sale a 1536 kpbs per l'audio dei DAT e dei DVD.
Un bitrate tipico, molto usato con il codec MP3, è 128 kbps, meno di un decimo di quello del CD audio. Con questo bitrate si ottiene quindi una riduzione di circa il 90% dello spazio richiesto, o della banda necessaria alla trasmissione. La qualità è valida nell'uso amatoriale, ma non è raro notare distorsioni evidenti. Molti codec audio possono usare un bitrate variabile, tecnica che consente di distribuire più bit nei passaggi più energici e meno bit nei passaggi più lenti o silenziosi, al fine di ottenere risultati migliori. Lo svantaggio è che la codifica è più complessa e lenta. Su PC non troppo datati, basta comunque un quarto d'ora a comprimere un tipico CD audio ad esempio in MP3 a bitrate variabile, per cui vale di solito la pena di provare.
[modifica] Formati e codec
Esistono una gran quantità di codec audio. Certamente il più famoso è l'MP3 (MPEG-1 Layer III), ma non è il migliore, anche perché difficilmente si può parlare del codec migliore: dipende da quello che si vuole ottenere. Ci sono codec che comprimono i dati e altri che non lo fanno, e fra quelli compressi la maggior parte sono caratterizzati dalla perdita di informazione, anche se esistono alcuni codec senza perdita di informazione.
Vediamo un elenco dei più importanti.
- WAV
- È un formato non compresso derivato dal formato RIFF. Il suo contenuto rappresenta semplicemente il suono campionato. È un formato molto usato sia come formato intermedio, ad esempio nell'estrazione delle traccie di un CD audio, sia per memorizzare suoni molto brevi e di modesta qualità che, anche non compressi, occupano pochissimo spazio. Un codec per riprodurre il formato WAV è molto semplice e veloce, e questo è un altro buon motivo per memorizzare come WAV suoni molto brevi (ad esempio i suoni legati ad eventi nelle interfaccie grafiche), perché in questi casi è più importante la riproduzione immediata garantita da un codec semplice e veloce piuttosto che lo spazio occupato dai file audio. Il formato WAV prevede un'intestazione che contiene una serie di informazioni utili alla riproduzione.
- PCM
- È un formato non compresso assimilabile al WAV, ma privo dell'intestazione. Non è mai usato per la memorizzazione, ma solo come formato intermedio nelle elaborazioni. Ad esempio, molte schede audio riproducono dati in questo formato. In un certo senso, si può dire che un file WAV contiene suoni in formato PCM, con l'aggiunta di informazioni ulteriori.
- MP3
- Certamente il più famoso formato compresso dalla metà degli anni '90 del XX secolo in poi. Fa parte delle specifiche MPEG-1, il primo standard ISO relativo al multimedia, ma è stato sviluppato dall'Istituto Fraunhofer, che detiene i relativi brevetti. Curiosamente, le implementazioni di MPEG-1 che si sono affermate come standard, come VCD e SVCD, non usano mai MP3 come codec audio. MP3 è un formato compresso con perdita di informazione, ma è molto versatile e consente in particolare di scegliere il bitrate, e quindi in sostanza la qualità, adattandola alle proprie esigenze. Inoltre MP3 consente di comprimere a bitrate variabile, e quindi di sfruttare i bit disponibili soprattutto dove servono davvero, risparmiando altrove.
- Vorbis
- Spesso confuso con OGG, che invece è il contenitore multimediale sviluppato dallo stesso gruppo che ha sviluppato Vorbis, è un diretto concorrente di MP3. Fa un pesante uso di aritmetica floating point, disponibile su qualsiasi computer, ma non altrettanto su dispositivi portatili di piccole dimensioni. È infatti riprodotto solo da prodotti piuttosto costosi, attualmente sopra i 100 euro, e non facili da trovare in Italia. Si perde così il vantaggio di essere un codec completamente Open Source, a differenza di MP3 che è coperto da vari brevetti, ma è interpretato anche da apparecchi da 30 euro. Comunque, anche Vorbis consente di comprimere a bitrate variabile, e ha molte altre funzionalità in comune con MP3. Se fosse più supportato sui dispositivi hardware, sarebbe una validissima alternativa a MP3, anche se alcuni lamentano problemi di pre-echo nei passaggi da un relativo silenzio a un pieno d'orchestra.
- WMA (Windows Media Audio)
- Citato a puro titolo accademico, è il formato Microsoft per l'audio. Chi ne sa qualcosa, completi pure questa definizione.
- FLAC (Free Lossless Audio Codec)
- Il nome dice già tutto: è libero e comprime senza perdita di informazione. Il rapporto di compressione è però solo del 50% rispetto al 90% di MP3 e Vorbis. Non è per questo da scartare, perché, essendo lossless, è ottimo per creare copie di salvataggio dei CD, dalle quali è poi possibile ricostruire perfettamente un CD danneggiato. E per giunta, su un solo supporto, si può salvare l'equivalente di due CD audio.
[modifica] Applicazioni comuni
Certamente l'applicazione più comune nel campo dell'audio è la conversione di CD audio in formati compressi, primo fra tutti MP3. Al secondo posto può collocarsi la gestione di raccolte di brani in formati compressi.
[modifica] Conversione da CD audio a MP3
Molte sono le applicazioni disponibili a questo scopo. La maggioranza non si limita a comprimere le traccie audio di un CD, ma cercano di determinare i metadati relativi al CD, come artista e titolo di ciascuna traccia, di solito accedendo a qualche database in rete, come CDDB o MusicBrainz. Poiché quest'ultima operazione non sempre produce i risultati voluti (i database in questione sono alimentati dal contributo volontario degli utenti, e possono contenere errori e duplicati), le applicazioni di conversione a riga di comando non sono molto pratiche. Di seguito cominceremo da applicazioni grafiche.
Va detto che anche queste applicazioni, come accade di frequente in GNU/Linux, sono per lo più interfaccie per librerie o utilità a riga di comando. Alcune si appoggiano a framework di gestione del multimedia come gstreamer o altri.
[modifica] SoundJuicer
È un programma piuttosto semplice, ma funzionale, con una bella interfaccia GTK2, che si appoggia al framework gstreamer per la compressione e al database MusicBrainz per la gestione dei metadati. Questo database è più recente di CDDB, per cui può capitare che SoundJuicer non riesca a trovare i metadati di un CD perché ancora nessuno lo ha catalogato su MusicBrainz. L'accesso al database, previa registrazione anonima e gratuita, è libero a tutti, per cui tutti possono contribuire a catalogare nuovi CD (facendo attenzione a non creare doppioni) o a correggere evidenti errori su quelli già catalogati. Il tutto tramite un | semplice sito web.
Le preferenze sono molto semplici ed essenziali: il percorso dove copiare i file codificati, il tipo di nomenclatura per file e directory (in base ad artista, album, traccia e altro), ma soprattutto il codec preferito e le relative impostazioni.
A questo proposito va subito detto che, nella maggior parte delle distribuzioni GNU/Linux, SoundJuicer è installato senza il supporto per MP3 e altri formati coperti da brevetti o che presentano qualche problema di licenza. Questo può essere un problema per l'utente abituato ad altri sistemi operativi, perché è necessario effettuare un'operazione che, per questo tipo di utente, è piuttosto difficile da accettare, anche se non è poi così difficile da realizzare.
In sostanza si tratta di creare una nuova pipeline di gstreamer, il framework multimediale del progetto GNOME, di cui SoundJuicer fa parte. Le istruzioni sono disponibili alla fine dell'help di SoundJuicer, ma le riportiamo qui con qualche commento.
Dalle preferenze, scegliere "Edit Profiles" o l'equivalente in italiano. Selezionare poi il profilo da modificare, oppure crearne uno nuovo. La sola parte rilevante è la pipeline di gstreamer. L'help in linea consiglia di scrivere nella relativa casella quanto segue:
audio/x-raw-int,rate=44100,channels=2 ! lame name=enc vbr=0 bitrate=192 ! id3v2mux
La sintassi, per quanto non proprio amichevole, è in questo caso abbastanza comprensibile: questo profilo prevede una frequenza di campionamento di 44100 Hz, due canali, un bitrate di 192 kbps fisso (vbr=0), e la trascrittura dei tag ID3 nel file risultante. Il tutto attraverso il plugin lame di gstreamer, uno dei numerosissimi plugin offerti da gstreamer, ma che di norma non è installato. Il relativo pacchetto di solito si chiama gstreamerX.YY-lame, dove X.YY indicano la particolare versione di gstreamer da utilizzare.
Una pipeline forse più adatta per chi vuole una qualità superiore è la seguente:
audio/x-raw-int,rate=44100,channels=2 ! lame name=enc preset=1006 ! id3v2mux
La libreria liblame, e quindi anche il comando lame e l'omonimo plugin di gstreamer, prevede diverse configurazioni predefinite. Queste configurazioni si scelgono tramite l'opzione -preset di lame, che può avere valori come medium, standard e altri riportati nel man di lame. Purtroppo questi valori testuali non possono essere usati nel plugin gstreamer-lame, che richiede invece alcuni valori numerici. Ad esempio, medium corrisponde a 1006, come nella riga sopra. Stando al man, ... this preset should provide near transparency to most people on most music... Il preset medium produce normalmente file leggermente più grandi di quelli prodotti col classico 128 kbps costante, ma il guadagno in termini di qualità compensa notevolmente questa perdita.
Altri preset, come standard, extreme o insane, si avvicinano sempre più alla qualità CD, ma a prezzi sempre più alti in termini di spazio disco.
Altre pipeline, di solito predefinite, riguardano i formati Vorbis e FLAC.
[modifica] grip
Meno amichevole, ma anche molto più versatile di SoundJuicer, grip è caratterizzato da un'interfaccia GTK+ meno gradevole, ma in compenso più compatta. Invece di sfruttare un framework o delle librerie, invoca comandi di encoding come appunto il già citato lame. Questo lo rende molto versatile e configurabile, ma costringe l'utente ad apprendere le opzioni del comando manuale utilizzato. Fatto una volta questo sforzo, grip consente in pratica di invocare in modo semplice comandi piuttosto ostici.
Rispetto a SoundJuicer, grip offre anche molte opzioni per configurare il tipo di nomenclatura da usare per i file prodotti, come anche le eventuali gerarchie di directory da creare in base a titolo dell'album, nome dell'autore etc.
Per quanto riguarda i metadati, o tag, essi vengono ricavati da CDDB. Va ricordato che questo protocollo opera su una porta che spesso è chiusa dai firewall aziendali o istituzionali, mentre MusicBrainz opera sulla porta standard di HTTP ed è quindi accessibile quasi ovunque.
[modifica] Gestione di una raccolta di brani musicali
In qualsiasi modo sia stata creata una raccolta di brani, compressi o meno, e in qualsivoglia formato, diventa rapidamente complicato gestirla. La struttura ad albero del filesystem non aiuta più di tanto, a meno che non ci si possa accontentare di un livello per gli autori, poi uno per gli album e i nomi dei file per i titoli dei singoli brani: in questo quadro, difficile trovare posto per l'anno di pubblicazione, il genere musicale e, peggio ancora, interprete solista e direttore di orchestra.
[modifica] I tag
L'unica soluzione a questo problema di gestione sono i cosiddetti tag, spesso anche detti metadati, cui si è già accennato parlando della codifica dei CD: si tratta in sostanza di dati che descrivono dei dati, in questo caso dati che parlano di file musicali. Tutti i formati più diffusi consentono di scrivere all'interno dei file stessi diversi metadati, fra cui ovviamente titolo, autore e anno di pubblicazione del brano, e poi titolo dell'album, genere musicale, numero progressivo del brano nell'album e moltissimo altro.
Le applicazioni di gestione delle raccolte musicali lavorano normalmente creando un proprio indice di tutti i metadati raccolti dai vari brani, e poi offrendo all'utente la possibilità di cercare e organizzare i brani in modo semplice e immediato in base ai metadati indicizzati. Alcune applicazioni usano indici costituiti da semplici file di testo, ma quando il numero di brani cresce oltre le migliaia difficilmente si può fare a meno di un vero e proprio database del tipo di MySQL o PostgreSQL.
[modifica] Rhythmbox
Questo applicativo fa parte del progetto GNOME come SoundJuicer, e ne condivide la semplicità e l'eleganza dell'interfaccia grafica. Disponendo già di un'ampia raccolta di file audio, si può usare Rhythmbox per indicizzarli in base ai tag e successivamente accedere molto facilmente ai singoli brani attraverso la funzione di navigazione (browser), e in particolare attraverso i più scontati punti di accesso: artista, album e traccia. Ma è disponibile anche una funzione di ricerca su diversi punti di accesso.
Va detto subito che Rhythmbox, di norma, non trasferisce né copia i file audio dalla loro posizione originale ad un suo deposito specifico: si limita a creare un suo indice in formato RDF, localizzato in ~/.gnome2/rhythmbox/rhythmbox.xml, e che poi usa per consentire all'utente di individuare velocemente i brani. Dal punto di vista utente, tutto questo costituisce la cosiddetta library, nella quale si può importare qualsiasi file o intere directory: il risultato è solo un aggiornamento dell'indice.
Dunque Rhythmbox è decisamente poco invasivo. Il rovescio della medaglia è che Rhythmbox deve aggiornare l'indice ogni volta che si avvia, perché i file sparsi nel filesystem (o addirittura su siti FTP o share Samba) possono essere stati modificati o cancellati dopo l'ultima esecuzione, oppure possono esserne stati aggiunti di nuovi. Di solito l'utente non se ne accorge, anche per raccolte di alcune migliaia di brani, ma c'è da credere che su hardware datato o comunque lento l'utilizzo di un indice in formato RDF influisca negativamente sulle prestazioni.
Rhythmbox si integra molto bene con SoundJuicer, lanciandolo quando l'utente, attraverso l'apposita funzione, decide di acquisire un CD audio eventualmente presente nel drive. Va ricordato però che è SoundJuicer a inserire i tag, non Rhythmbox, per cui, se SoundJuicer non è configurato correttamente per gestire i tag, come riportato sopra, Rhythmbox non potrà fare altro che indicizzare i brani in base al nome del file, lasciando al valore "sconosciuto" l'artista, il titolo dell'album, l'anno di pubblicazione etc. In questo caso le funzioni di ricerca e navigazione di Rhythmbox risultano assai poco utili.
Rhythmbox ha una semplice funzione per creare playlist o code di esecuzione, e a partire dalle prime consente di creare CD audio. Inoltre, integrandosi perfettamente con il desktop GNOME, consente di trascinare e copiare su qualsiasi cartella o applicativo compatibile i brani selezionati nella finestra principale. In questo modo, creare su CD-ROM una raccolta, o copiare dei brani sul proprio lettore MP3 collegato alla porta USB, diventa veramente uno scherzo. Va sempre però ricordato che Rhythmbox non gestisce i file corrispondenti ai brani, salvo per la funzione di modifica dei tag: per il resto, li lascia dove sono. Questa scelta architetturale ha pure i suoi svantaggi, ma non si corre mai il rischio di fare pasticci con i file: Rhythmbox gestisce i tag ai fini del reperimento dei brani su disco, ma la gestione dei brani in quanto file viene lasciata al file system e a tutti gli applicativi, a riga di comando o grafici, che consentono di gestire i file.
Come si vedrà più avanti, Rhythmbox è anche un valido strumento per il podcasting e per l'ascolto delle radio Internet.
[modifica] Conversione da MP3 a CD audio
[modifica] Normalizzazione del volume in una raccolta MP3
[modifica] Podcasting
[modifica] Radio Internet
[modifica] Panoramica sui player audio
Xmms, uno dei primi player nati per Linux
Amarok, il player di KDE
[modifica] Panoramica sui programmi di editing Audio
Audacity, famoso programma multipiattaforma per l'editing audio
Jokosher, programma che permette anche di suonare insieme ad altre persone in rete
Ardour, programma ad alto livello per l'editing audio, gestisce l'audio multipista con il server JACK
Lmms, Hydrogen, programmi simili a Fruity Loops per Windows
[modifica] Problemi e soluzioni

