# Linux multimedia/Audio

Linux multimedia
Copertina Tutti i moduli · Sviluppo
    Copertina
* IntroduzioneLinux multimedia/Introduzione
* AudioLinux multimedia/Audio
* ColoreLinux multimedia/Colore
* ImmaginiLinux multimedia/Immagini/Introduzione
* Video
** IntroduzioneLinux multimedia/Video/Introduzione
** AcquisizioneLinux multimedia/Video/Acquisizione
** Digital Video BroadcastLinux multimedia/Video/DVB
** EditingLinux multimedia/Video/Editing
** TranscodificaLinux multimedia/Video/Transcodifica
** AuthoringLinux multimedia/Video/Authoring
** AvanziLinux multimedia/Video/Avanzi
Modifica il sommario

# Introduzione

L'audio digitale, diventato accessibile al grande pubblico negli anni '80 del XX secolo grazie al CD audio, sul finere degli anni '90 dello stesso secolo ha avuto una conosciuto una vera esplosione grazie ai formati compressi e alle memorie flash. Questi due elementi, infatti, hanno reso possibile la realizzazione di riproduttori audio in grado di permettere l'ascolto di decine e decine di ore di audio di qualità accettabile, e ad un costo contenuto.
Rispetto al walkman a cassette, il lettore MP3 portatile è un progresso significativo sotto diversi punti di vista, oltre alla capacità e alla versatilità. Ma l'utilizzo dei formati digitali compressi come l'MP3 introduce molti nuovi concetti che bisogna conoscere almeno a grandi linee: la grande versatilità offerta da questi formati, senza una vaga conoscenza della teoria che c'è sotto, può portare facilmente a commettere errori che si possono evitare con qualche accortezza.
In questa sezione si cercherà di dare cenni teorici essenziali per poi affrontare le applicazioni più comuni dell'audio digitale, sostanzialmente quelle che tutti ormai conoscono e che vanno dalla conversione in MP3 dei CD audio alla gestione di raccolte di brani, o dall'ascolto delle radio Internet al podcast.
Per il momento non è previsto spazio per applicazioni server, che vanno al di fuori dello spirito di questo wikibook, fortemente orientato all'utente casalingo, non certo al professionista.

# Teoria
## 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.
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 frequenze entro i 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.

## Risoluzione e bitrate

Come si già detto a proposito del campionamento e della quantizzazione in generale, anche nel caso specifico del segnale audio si può parlare di frequenza di campionamento e di risoluzione, rispettivamente il numero di misurazioni dell'ampiezza in un secondo e il numero di possibili valori approssimati delle misurazioni stesse. La risoluzione, in particolare, è normalmente espressa non tanto come numero di valori possibili, ma come numero di bit usati per memorizzare tali possibili valori.
Ad esempio, in un CD audio la frequenza di campionamento, come si è detto, è di 44.100 Hz. Inoltre si usano 16 bit per ogni campione (per un totale di 2^16 = 65536 valori possibili), 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 altro 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.

## 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 tracce 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 interfacce 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.

# Conversione da CD audio a MP3

Molte sono gli applicativi disponibili a questo scopo. La maggioranza non si limita a comprimere le tracce 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ù interfacce per librerie o utilità a riga di comando. Alcune si appoggiano a framework di gestione del multimedia come gstreamer o altri.

## 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:
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:
La libreria liblame, e quindi anche il comando lame e l'omonimo plugin di gstreamer, prevedono 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.

## 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.

## RipperX

È un'altra applicazione GTK2, più simile a grip che a rhythmbox: infatti, come grip, ricava i tag dal CDDB, e invoca direttamente i vari encoder (come lame e oggenc) piuttosto che appoggiarsi alle librerie di gstreamer. È comunque piuttosto versatibile, al punto da lasciare la possibilità all'utente di passare opzioni all'encoder scelto come se venisse invocato manualmente.

# Streaming

Come chiarito molto bene nella voce di Wikipedia, lo streaming consiste nel trasmettere in tempo reale contenuti multimediali tramite una rete telematica. Questo si può fare secondo due modalità: live e on-demand.
Nel primo caso siamo praticamente di fronte ad una tradizionale trasmissione radiofonica diffusa però tramite una rete telematica invece che tramite onde radio (anche se queste potrebbero essere utilizzate per qualche tratto della rete stessa, in teoria). Nello streaming live, dunque, avviato il programma client e selezionata l'emittente che si desidera ascoltare si ascolterà quanto trasmesso in quel momento, non un programma a richiesta.
E veniamo così al secondo caso, lo streaming on-demand, in cui l'utente può scegliere un contenuto da ascoltare (o anche da vedere, ma per adesso parliamo solo di audio) e questo gli viene trasmesso quasi immediatamente.
In entrambi i casi i contenuti vengono fortemente bufferizzati, per rendere il più possibile fluida la trasmissione. Però questo espediente introduce un ritardo prima dell'ascolto vero e proprio, ritardo che può essere anche di parecchi secondi e può risultare fastidioso quando si passa frequentemente da una emittente all'altra (non durante l'ascolto, che invece procede di norma senza problemi).

## Scaricare uno stream

Lo streaming non è fatto per scaricare file, per cui spesso è difficile registrare quanto si ascolta. In certi casi è però possibile non solo registrare in tempo reale quanto si sta ascoltando, ma anche scaricarlo letteralmente, in pochi secondi, senza dover perdere tempo ad ascoltarlo con il computer. Questo può essere molto comodo se poi si vuole riascoltare uno stream in un secondo momento, magari con un lettore portatile.
Un modo molto semplice per fare questo è offerto da mplayer:
In questo esempio viene scaricata una vecchia puntata di Alle otto della sera, salvandola nel file globo2003_05_01.ra in formato Real Audio. Il tutto richiede pochi secondi, anche se la puntata, ascoltata in tempo reale, dura quasi mezz'ora. Il trucco è l'opzione -bandwidth 4000000, che inganna il server inducendolo a trasmettere alla massima velocità di cui è capace, piuttosto che, come avverrebbe altrimenti, concordando col client la banda da usare per rispettare la velocità originaria della trasmissione.
In questo esempio, in effetti, la parte difficile è trovare la URL: quella vista sopra è ben nascosta dalla RAI in una serie di scatole cinesi. Nel caso specifico, poiché il browser riproduce lo stream tramite il lettore totem, la URL è stata individuata facendo click col bottone destro del mouse all'interno dell'area di totem nel browser, e selezionando poi la voce Copy dal menù a scomparsa. In altre situazioni può essere necessario operare diversamente per trovare la URL.
L'utilizzo di mplayer per scaricare rapidamente uno stream sembra ostacolato, per motivi non ben documentati, da alcuni ISP. In particolare, Telecom rende impossibile addirittura l'ascolto in tempo reale di stream RTSP. In questi casi si può almeno scaricare uno stream a velocità normale con altri strumenti, come ffmpeg o gstreamer.
L'uso di ffmpeg a questo scopo è molto semplice: una riga come la seguente permette di scaricare lo stesso stream visto sopra e salvarlo con lo stesso nome:
Naturalmente il comando può essere arricchito per convertire lo stream in MP3 o altro durante il dump. Per usare gstreamer occorre una opportuna pipeline, come la seguente, eseguita da riga di comando con gst-launch:
In questo caso la sorgente è un elemento di tipo rtspsrc, la cui proprietà location serve ad indicare la URL dell stream (ma potrebbe essere anche un file locale). L'elemento decodebin è una specie di tutto fare automatico in grado di creare i tratti mancanti di pipeline fra lo stream RTSP e la codifica in formato WAV richiesta dal successivo elemento wavenc. Infine, il pozzo o sink è semplicemente un file WAV sul disco locale.
Una variante che vale la pena di vedere è la seguente, in cui l'elemento wavenc è sostituito dal più interessante lamemp3enc, usato per codificare con una qualità modesta, ma adatta al tipo di materiale, quasi esclusivamente vocale:

## Convertire uno stream in MP3

Sebbene sia molto diffusa la trasmissione in streaming di flussi MP3, molto spesso vengono usati altri formati, come ad esempio il Real Audio molto usato proprio dalla RAI. Per inciso, la RAI trasmette in podcast dei file MP3, ma poi mette a disposizione le puntate vecchie solo in streaming, e appunto in Real Audio.
Dopo aver scaricato come visto sopra dei file Real Audio (o in qualsiasi altro modo, ovviamente), si possono convertire in MP3 combinando ffmpeg e lame. Il primo di questi due prodotti, pur offrendo molte funzionalità per il solo audio, è stato sviluppato pensando soprattutto al video, ma in questo caso si sfrutta la sua possibilità di decodificare praticamente qualsiasi codec per convertire il Real Audio in WAV e passare il risultato, tramite una pipe, a lame:
In questo esempio, ffmpeg decodifica un file Real Audio (-i globo2003_05_01.ra) e lo ricodifica in WAV (-f wav), passando l'output al comando successivo (il segno "-" finale). A suo volta, lame legge questo flusso WAV (sempre il segno "-", anche se in un'altra posizione) e lo ricodifica in MP3 usando un bitrate variabile e una serie di impostazioni predefinite (-V 9), che comportano la minima qualità possibile, ma anche il minor spazio occupato dal file prodotto (globo2003_05_01.mp3). In realtà, nel caso reale da cui deriva questo esempio, il materiale è prevalentemente vocale, e l'opzione scelta è ampiamente soddisfacente, tenuto conto che il bitrate del file originale Real Audio era di 22 kbps.

## Radio Internet

Il caso dello streaming live è ben rappresentato dalle cosiddette radio internet: in effetti, a parte il mezzo di trasmissione utilizzato, queste si comportano esattamente come le radio tradizionali, per cui il nome radio, che in realtà si riferisce proprio al mezzo utilizzato, e cioè onde elettromagnetiche di frequenze opportune, è stato trasferito pari pari alle trasmissioni audio basate su Internet o comunque su reti telematiche.

# Podcasting

Applicazione molto di moda, è in sostanza uno streaming on-demand, gestito come un RSS. Non è questo il luogo in cui parlare dei feed RSS, ma nel contesto del podcast viene usato un file XML per istruire un applicativo a scaricare, su richiesta dell'utente, le nuove puntate di una qualche trasmissione. Questo file è normalmente indicato da una URL, e il suo contenuto dovrebbe riflettere sempre la situazione attuale del particolare podcast.
Un esempio è il modo migliore di chiarire il concetto.
Molti programmi radiofonici della Rai, ad esempio Alle otto della sera, possono essere scaricati in podcast. Per farlo, occorre individuare sul sito della Rai il file XML per questo specifico programma:
Questa URL viene usata dal programma di podcast preferito per informarsi sugli episodi attualmente disponibili. Nel caso specifico, data la notevole quantità di episodi di questo stesso programma andati in podcast negli anni, il file che si trova alla URL sopra non elenca tutti gli episodi, che sono migliaia, bensì soltanto quelli prodotti più di recente, secondo criteri arbitrari.
Altri podcast, meno prolifici, riportano sempre tutti gli episodi. È il caso del podcast del CICAP gestito da Massimo Polidoro, che attualmente è alla URL:

## Alcuni client per il podcasting

I programmi per il podcast sono infiniti. Qui ne vedremo solo alcuni, sia ad interfaccia grafica che a riga di comando. Ovviamente i primi sono i più facili da usare, ma i secondi possono essere avviati periodicamente tramite il noto meccanismo del crontab, il che permette, lasciando la postazione accesa, di scaricare gli episodi di volta in volta disponibili anche senza effettuare il login.

### rhythmbox

    La gestione dei podcast è una delle tante funzioni di rhythmbox. Per scaricare gli episodi di un podcast con questo applicativo basta creare un nuovo feed nell'apposita finestra, indicando la URL del file XML cui si accennava sopra. Poi è possibile stabilire con quale frequenza scaricare eventuali nuovi episodi. Il problema è che rhythmbox scarica i podcast solo se avviato intenzionalmente dall'utente, perché non dispone di una modalità di esecuzione in background che possa lavorare anche quando l'utente non è connesso alla postazione. Se non si vuole rischiare di perdere un episodio, o ci si ricorda di accedere tutti i giorni lanciando rhythmbox, o lo si lascia sempre attivo (ma questo può infastidire eventuali altri utenti della postazione). Un'altra pecca di rhythmbox è la cattiva gestione dei tag: anche se nella sezione Podcast vengono mostrati titoli e altro, i file MP3 degli episodi non vengono correttamente marcati, nel senso che alcune informazioni, ad esempio il titolo di un episodio, correttamente rilevate dal file XML del feed, non vengono poi riportare nei tag corrispondenti, rendendo poi difficile la gestione dei file al di fuori di rhythmbox.

### hpodder

    Questo comando è un valido rappresentante della categoria dei client podcast a riga di comando. Offre una serie di semplici sotto-comandi per aggiungere, eliminare, modificare dei podcast (o feed, come dice il manuale). Una volta configurato un feed, tramite la URL del solito file XML, basta lanciare hpodder senza parametri per scaricare gli episodi disponibili. Inserendolo poi nel crontab con cadenza @daily, provvederà a scaricare ogni nuovo episodio ogni giorno anche se l'utente non effettua il login. Contrariamente a rhythmbox, hpodder scrive correttamente i tag segnalati dal feed nei file MP3 scaricati: tali file sono quindi pronti per essere copiati altrove, perché sarà poi possibile leggerne i tag senza problemi.

# 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.

## 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. Questi pezzetti di informazione vengono appunto chiamate tag.
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.
I tag più diffusi sono i cosiddetti ID3, introdotti quando il codec MP3 cominciò a diffondersi rapidamente ed emerse così il problema della gestione delle raccolte, attorno al 1996. La prima versione più diffusa, ID3v1.1, ancora supportata da molte applicazioni, soffre di limiti notevoli per la lunghezza del contenuto di certi tag, in quanto tutti i tag insieme non possono superare i 128 byte. Basta un titolo come Sgt. Pepper etc... per superare questi limiti, e quindi un simile titolo viene troncato. Non parliamo poi dei titoli nel campo della musica classica, spesso lunghissimi.
Fu allora introdotta la versione ID3v2, con le sue sottoversioni più diffuse ID3v2.3 e ID3v2.4. Con queste versioni, le limitazioni di spazio praticamente svaniscono, dal momento che, in totale, tutti i tag dispongono di 256 MiB, e ogni singolo tag, allocato in una struttura detta frame, può essere lungo 16 MiB. Sono disponibili una gran quantità di frame diversi, tali da soddisfare le più svariate esigenze.
Alcuni frame contengono però anche informazioni che, in pratica, sono duplicati di informazioni ovviamente già presenti nel file MP3 stesso, quali la durata, il tipo di codifica e altro. La gestione di queste informazioni sotto forma di tag facilità però le applicazioni, e soprattutto le applicazioni di streaming. Resta il problema di garantire che tali informazioni, gestite come tag, corrispondano fedelmente a quanto contenuto nel file stesso.
Per approfondimenti, oltre all'articolo della Wikipedia inglese, si veda anche il sito ufficiale.

## Gestione dei tag nei lettori stand-alone

Vedremo più avanti applicazioni per la gestione dei tag. Per adesso supponiamo di disporre di molti file MP3 già equipaggiati con i tag più comuni (titolo, autore, album...) Cosa succede quando li portiamo sul nostro lettore portatile preferito, o li copiamo su un CD-ROM per riprodurli con il lettore DVD?
In certe situazioni questi dispositivi gestiscono male i tag. Alcuni sembrano confondersi in presenza di tag ID3v2, e in certi casi non basta creare copie v1.1 di questi: bisogna anche eliminare i tag v2 rimasti. Inoltre, i tag v2.3 non riconoscono la codifica UTF-8, e spesso i dispositivi stessi non riconoscono tale codifica, per cui occorre in qualche modo convertire questi tag in Latin-1 perché i lettori possano gestirli correttamente (vedi più avanti eyeD3).
Purtroppo queste considerazioni derivano solo da esperienze personali, e quindi non è possibile qui dare una regola generale. Ad ogni modo, il lettore iriver T60, commercializzato attorno al 2008, sembra funzionare bene solo se la codifica dei tag v2.3 è Latin-1, oppure se si usano i tag v1.1 (con le loro notevoli limitazioni). Stesso comportamento è stato riscontrato con il lettore multimediale Samsung YP-S3, anch'esso del 2008. I telefoni cellulari Nokia di fascia alta (quelli della serie N) sembrano riconoscere invece anche i tag v2.4, quelli usualmente creati da SoundJuicer, senza problemi riguardo alla codifica (almeno, un telefono di questa serie, forse commercializzato non prima del 2009, si è comportato bene).
Un discorso a parte si deve fare per l'iPod. Le uniche testimonianze riguardano l'iPod Shuffle, che non dispone di un display e permette solo di passare da un brano all'altro, in sequenza oppure a caso. Il software gtkpod usato su Linux per caricare i brani sullo Shuffle permette di registrare l'ordine in cui devono presentarsi i brani, e riesce a farlo sicuramente con i tag v2.4: una volta rimosso dal PC, lo Shuffle effettivamente riproduce i brani nell'ordine stabilito, e questo si dovrebbe considerare una prova del fatto che lo Shuffle è in grado di riconoscere e gestire correttamente questi tag. Non ci sono testimonianze circa i tag v1.1, né v2.3.
In generale, fin quando possibile, è bene fare delle ricerche su internet di testimonianze di utenti, o chiedere fra amici e conoscenti qualcosa circa il supporto dei tag per il lettore che si vorrebbe acquistare.

## Applicativi per la gestione dei tag

Vediamo ora un elenco di applicativi, grafici e command line, che permetto di gestire i tag in una raccolta. Va detto subito che per piccole correzioni occasionali sono molto pratici quelli grafici, mentre per correzioni di parecchi file per volta sono più pratici strumenti a riga di comando.

### easytag

    A dispetto del nome, non è poi così easy come vorrebbe far credere, ma comunque è uno strumento più che valido. Permette di ricavare i tag cercando nel database online CDDB, cosa apprezzabile, ma che spesso fa scontrare l'utente con la realtà piuttosto caotica di quel database: in certi casi sono così tanti gli album duplicati erroneamente che ci vuole un bel po' prima di individuare quello corrispondente ai file che si vogliono gestire. Impossibile elencare le funzioni disponibili.

### eye3D

    Questo applicativo a riga di comando è utilissimo quando si tratta di elaborare molti file tutti in una volta. Dispone di un notevole numero di opzioni, ma qui vale la pena di indicarne una molto utile quando si rilevano problemi legati alla codifica dei caratteri: con l'opzione --set-encoding=latin1, accompagnata anche da --force-update per indurre il reale adeguamento dei tag già presenti all'encoding indicato, tutti i tag vengono codificati in Latin1.

### exfalso

    Meno flessibile di eyeD3, a causa dell'interfaccia grafica, ma comunque ricco di funzionalità molto utili, questo applicativo è normalmente distribuito come dipendenza del pacchetto quodlibet, un player audio con funzioni di gestione di raccolte e playlist piuttosto particolare. Una funzione molto valida è l'impostazione dei numeri di traccia e del numero complessivo di tracce, che si realizza con pochissimi click. Le sue funzioni sono esapndibili tramite una nutrita serie di plugin, di solito preinstallati ma che devono essere attivati singolarmente dal programma stesso. Fra questi plugin, sono da notare quelli per il supporto ai database on-line come CDDB e MusicBrainz, semplici ma molto efficaci.

## Gestire una raccolta con 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.

## Normalizzazione del volume in una raccolta MP3
# Panoramica sui player audio

Xmms, uno dei primi player nati per Linux
Amarok, il player di KDE
Exaile

# 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