[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
È molto difficile ridurre un file contenente informazioni sonore. In questo contesto, di solito, quando si parla di compressione, si fa riferimento a metodi di semplificazione delle informazioni memorizzate, basati sulla percezione umana. Questa «semplificazione» si traduce in pratica in una riduzione e distorsione nei suoni riprodotti.
In generale, il formato più comune per i file audio compressi è MP3, ovvero «MPEG-1 layer 3», «MPEG-2 layer 3» o «MPEG-2.5 layer 3». Lo standard MPEG definisce il formato e la decodifica dei dati, mentre non fissa un metodo per la codifica. Sulla codifica sono state sviluppate tecniche differenti, alcune delle quali sono brevettate. A causa di questo problema, lo sviluppo di software libero in grado di generare file MP3 è limitato alla produzione in forma di sorgenti, non potendo in pratica arrivare alla distribuzione di applicativi già compilati.
A fianco di MP3, si è sviluppato in tempi più recenti anche un formato senza brevetti, denominato Vorbis, trasportato normalmente in un contenitore Ogg, noto così con il nome Ogg Vorbis (si usa normalmente l'estensione .ogg
per i file), che offre prestazioni equivalenti a quelle di MP3.
In alternativa, esiste anche un formato compresso senza perdita, denominato FLAC, che eventualmente si trasporta in un contenitore Ogg (che diventa così un formato Ogg FLAC). Anche il formato FLAC è privo di brevetti ed è favorito così nell'ambito del software libero.
MP3info (1) è un programma molto semplice con lo scopo di estrarre le informazioni tipiche dai file MP3, con la possibilità di modificare i dati descrittivi. Si compone dell'eseguibile mp3info, che si utilizza secondo la sintassi seguente:
mp3info [opzioni] file_mp3... |
Se non si indica alcuna opzione, si ottengono le informazioni sui file in forma sintetica. Tuttavia, con l'opzione -F, o meglio ancora con l'opzione -f, si può controllare il modo in cui tali informazioni vengono fornite.
L'opzione -f prevede un argomento composto da una stringa contenente delle sequenze di escape, che si distinguono per il fatto che iniziano con il simbolo di percentuale (%). La tabella 531.1 riporta un elenco parziale di queste sequenze di escape, escludendo in particolare quelle che rappresentano una scelta sottoposta a una condizione. Per il loro approfondimento è sufficiente leggere la poca documentazione originale.
Con alcune shell, questi simboli di percentuale potrebbero essere interpretati in modo diverso, come nel caso di Midnight Commander. |
|
Per comprendere meglio il significato di tutto questo, l'esempio seguente consente di estrarre esattamente il nome dell'artista e il titolo della canzone (o di qualunque altra cosa si tratti), ponendo le due informazioni su righe differenti:
$
mp3info -f "%a%N%t" prova.mp3
[Invio]
Bla bla bla bla Pinco Pallino |
Volendo si potrebbe realizzare uno script per visualizzare tutto quello che c'è da sapere nel file, come nell'esempio seguente, in cui si può fare riferimento a un solo file alla volta:
|
MP3info consente anche la modifica di alcune di queste informazioni, ma ciò avviene attraverso opzioni apposite e le sequenze di escape dell'opzione -f non hanno alcun ruolo in questo contesto.
|
Segue la descrizione di alcuni esempi; in particolare, qui non si mostra un esempio con l'uso dell'opzione -f, perché già proposto in precedenza.
$
mp3info -t "Bla bla bla" -a "Pinco Pallino" -y "2001"
\
\-g 112 prova.mp3
[Invio]
Imposta il titolo, l'artista, l'anno e il genere (tango) nel file prova.mp3
.
$
mp3info -p1
[Invio]
Mostra l'elenco dei generi in una sola colonna, secondo l'ordine numerico attribuito dallo standard.
LAME (2) è un progetto per la codifica in formato MP3 ed eventualmente anche in altri formati audio compressi. Il progetto produce esclusivamente del codice sorgente (compilabile facilmente) perché la distribuzione di pacchetti già compilati viene impedita di fatto dalla presenza di vari brevetti.
In un sistema GNU/Linux la compilazione di LAME avviene in modo molto semplice. Supponendo di disporre del file lame.tar.gz
e di volere installare i file a partire da /opt/lame/
, si potrebbe procedere nel modo seguente:
$
tar xzvf lame.tar.gz
[Invio]
$
cd lame
[Invio]
$
./configure --prefix=/opt/lame
[Invio]
$
make
[Invio]
$
su
[Invio]
#
make install
[Invio]
Naturalmente, occorre poi preoccuparsi di inserire il percorso /opt/lame/bin/
nella variabile di ambiente PATH. Si veda eventualmente quanto descritto nel capitolo 39.
Al termine della compilazione si ottiene l'eseguibile lame, che può essere utilizzato secondo la sintassi seguente:
lame [opzioni] file_in_ingresso file_in_uscita |
In pratica, il primo argomento dopo le opzioni indica un file, solitamente in formato WAV-RIFF (salvo la specificazione di qualcosa di differente), mentre il secondo è il file MP3 che si vuole generare. Naturalmente, se si utilizza il carattere - al posto del nome dei file, si fa riferimento allo standard input e allo standard output rispettivamente.
|
Segue la descrizione di alcuni esempi.
$
lame -q 2 prova.wav prova.mp3
[Invio]
L'esempio mostra la situazione più comune di utilizzo, in cui si specifica l'opzione -q 2 per ottenere un buon risultato. In pratica, si ottiene il file prova.mp3
a partire da prova.wav
. Si intende che il file prova.wav
sia di tipo WAV-RIFF, 16 bit, stereo, 44 100 Hz.
$
lame -q 2 -p prova.wav prova.mp3
[Invio]
Come nell'esempio precedente, ottenendo però un file un po' più lungo, per l'aggiunta di un codice di controllo alla fine di ogni frame.
$
lame -q 2 -p -c prova.wav prova.mp3
[Invio]
Come nell'esempio precedente, con l'attivazione dell'indicatore del copyright.
$
lame -q 2 -p -c -tg 101
\
\-tt "Conferenza sul software libero" -ta "Pinco Pallino"
\
\-ty "2001" prova.wav prova.mp3
[Invio]
Come nell'esempio precedente, con l'aggiunta di altre informazioni utili. Si osservi l'uso del genere 101.
$
lame --decode prova.mp3 prova.wav
[Invio]
Riproduce il file prova.wav
, completo di intestazione, a partire dal file prova.mp3
.
Volendo generare file in formato MPEG, ma senza incorrere nel problema dei brevetti che riguardano principalmente lo strato III dello standard, si può usare Toolame, (3) che si limita a utilizzare lo strato II; pertanto genera file «MPEG-1 layer II».
toolame [opzioni] file_in_ingresso file_in_uscita |
La sintassi per l'utilizzo dell'eseguibile toolame è conforme a quella di lame, con qualche limitazione ed eccezione; in particolare l'opzione -h di toolame mostra una guida rapida e non ha nulla a che vedere con la qualità della registrazione.
Toolame impone che il file in ingresso sia diviso in campioni da 16 bit. |
|
Segue la descrizione di alcuni esempi.
$
toolame -q 2 prova.wav prova.mp2
[Invio]
L'esempio mostra la situazione più comune di utilizzo, in cui si specifica l'opzione -q 2 per ottenere un buon risultato. In pratica, si ottiene il file prova.mp2
a partire da prova.wav
. Si intende che il file prova.wav
sia di tipo WAV-RIFF, 16 bit, stereo, 44 100 Hz.
$
lame -q 2 -c prova.wav prova.mp2
[Invio]
Come nell'esempio precedente, con l'attivazione dell'indicatore del copyright.
Per l'utilizzo del formato Ogg Vorbis è disponibile il pacchetto di programmi noto come Vorbis Tools. (4)
Si tratta di una raccolta di programmi di utilizzo relativamente semplice, per la codifica, l'esecuzione e la modifica di file Ogg Vorbis.
Per la codifica si utilizza oggenc, con la sintassi seguente:
oggenc [opzioni] file_in_ingresso... |
In pratica, se non si richiede qualcosa di particolare con le opzioni, si indicano i file da codificare (WAV-RIFF) e si ottengono file compressi con lo stesso nome ma con estensione .ogg
.
Le opzioni -a, -t e -l, possono essere inserite più volte, per fare riferimento, in sequenza, a più file distinti. Segue la descrizione di alcuni esempi.
$
oggenc *.wav
[Invio]
Elabora i file che corrispondono al modello *.wav
, generando altrettanti file con estensione .ogg
secondo valori predefiniti.
$
cat prova.wav | oggenc -o prova.ogg -
[Invio]
Elabora il file prova.wav
che proviene dallo standard input, generando il file prova.ogg
.
Per la decodifica, ovvero per generare un file audio non compresso a partire da un formato Ogg Vorbis, si utilizza oggdec, con la sintassi seguente:
oggdec [opzioni] file_ogg... |
Se non si specificano opzioni, si ottengono file in formato WAV-RIFF con gli stessi nomi di quelli indicati tra gli argomenti, ma con l'estensione rimpiazzata da .wav
, come nell'esempio seguente:
$
oggdec *.ogg
[Invio]
Come si può intuire si ottengono altrettanti file con estensione .wav
.
Per leggere le informazioni contenute in un file Ogg Vorbis, si utilizza ogginfo, con la sintassi seguente:
ogginfo [opzioni] file_ogg... |
Anche in questo caso, il programma ogginfo viene usato prevalentemente senza opzioni. L'esempio seguente mostra le informazioni di un file che però non contiene annotazioni particolari:
$
ogginfo prova.ogg
[Invio]
Processing file "prova.ogg"... New logical stream (#1, serial: 6b8328ba): type vorbis Vorbis headers parsed for stream 1, information follows... Version: 0 Vendor: Xiph.Org libVorbis I 20020717 (1.0) Channels: 2 Rate: 44100 Nominal bitrate: 112,001000 kb/s Upper bitrate not set Lower bitrate not set Vorbis stream 1: Total data length: 2661137 bytes Playback length: 3m:15s Average bitrate: 109,099492 kbps Logical stream 1 ended |
Per modificare le annotazioni contenute in un file Ogg Vorbis, si utilizza vorbiscomment, la cui sintassi cambia a seconda dell'azione che si intende compiere; pertanto vale la pena di mostrarne l'utilizzo solo attraverso degli esempi.
Generalmente si comincia dalla lettura delle annotazioni contenute nel file Ogg Vorbis che si vuole modificare, salvandole in un file di testo normale:
$
vorbiscomment -l prova.ogg > prova.txt
[Invio]
In questo caso, viene creato il file prova.txt
a partire dalle annotazioni contenute all'interno di prova.ogg
. Il contenuto del file prova.txt
potrebbe essere simile a quello seguente:
|
Per modificare questi dati nel file Ogg Vorbis, si può intervenire nello stesso file di testo appena generato, cambiandolo per esempio così:
|
Per modificare le annotazioni con i dati contenuti nel file di testo appena modificato, si può procedere così:
$
vorbiscomment -w -c prova.txt prova.ogg prova_2.ogg
[Invio]
In questo modo si viene a creare un nuovo file Ogg Vorbis denominato prova_2.ogg
con le modifiche apportate, mentre il file originale rimane invariato.
In modo analogo, per aggiungere le annotazioni contenute nel file di testo prova.txt
, basta usare l'opzione -a:
$
vorbiscomment -a -c prova.txt prova.ogg prova_2.ogg
[Invio]
Se invece non si vuole usare un file di testo per indicare le annotazioni, si possono specificare i campi direttamente sulla riga di comando attraverso l'opzione -t:
$
vorbiscomment -a -t "license=GNU GPL" prova.ogg prova_2.ogg
[Invio]
In questo caso viene aggiunto il campo LICENSE con la dicitura «GNU GPL».
Si ricorda che i campi delle annotazioni contenute in un file Ogg Vorbis sono liberi e dipende dalle convenzioni il significato pratico che gli si va ad attribuire. |
Per l'esecuzione di un file in formato Ogg Vorbis, si utilizza ogg123, con la sintassi seguente:
ogg123 [opzioni] {file_ogg|directory|http_uri}... |
In condizioni normali non sono necessarie opzioni; piuttosto, è il caso di osservare che i file da eseguire possono essere indicati singolarmente, a directory intere, oppure anche attraverso indirizzi URI del tipo http://...
.
In condizioni normali, ogg123 dovrebbe essere in grado di indirizzare il flusso audio digitale al file di dispositivo corretto, secondo la modalità che questo richiede. Eventualmente, è possibile modificare questo comportamento con l'uso delle opzioni (che qui non vengono descritte), oppure attraverso la configurazione dei file /etc/libao.conf
e ~/.libao
. Si veda eventualmente la pagina di manuale libao.conf(5).
Flac (5) è il pacchetto standard per la compressione e l'estrazione con il formato FLAC, che ha la caratteristica di non perdere informazioni. Il programma principale del pacchetto è flac, con il quale si comprime e si decomprime:
flac [azione] [opzioni] file |
A seconda delle opzioni usate o non usate, si intende se si vuole comprimere, decomprimere o altro, il file indicato alla fine della riga di comando (nel modello sintattico è stata indicata un'opzione iniziale con il nome di «azione», proprio per specificare il da farsi). Quando si esegue una compressione o un'estrazione, il file che si genera dalla compressione o dall'estrazione, si può specificare attraverso l'opzione -o; altrimenti, il programma cerca di determinare da solo un nome appropriato. Per esempio, se si sta comprimendo il file prova.wav
, il programma cerca di produrre il file compresso prova.flac
; lo stesso vale, in modo opposto, se si esegue un'estrazione.
|
|
La documentazione di Flac riporta molte altre opzioni, che si possono rendere utili o necessarie, per esempio, per dichiarare espressamente le caratteristiche del campionamento in ingresso, oppure per richiedere una compressione migliore (ma più lenta). Segue la descrizione di alcuni esempi.
$
flac musica.wav
[Invio]
Comprime il file musica.wav
, generando il file musica.flac
, con opzioni di compressione normali. In questo caso si ottiene un file di dimensioni pari a circa il 53 % di quello originale:
flac 1.1.1, Copyright (C) 2000,2001,2002,2003,2004 Josh Coalson flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Type `flac' for details. options: -P 4096 -b 4608 -m -l 8 -q 0 -r 3,3 musica.wav: wrote 10684429 bytes, ratio=0.539 |
$
flac -o musica.flac musica.wav
[Invio]
Esegue la stessa operazione dell'esempio precedente, con la differenza che in questo caso si specifica espressamente il nome del file da generare.
$
flac -t musica.flac
[Invio]
Verifica l'integrità del file musica.flac
:
flac 1.1.1, Copyright (C) 2000,2001,2002,2003,2004 Josh Coalson flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Type `flac' for details. musica.flac: ok |
$
flac -d musica.flac
[Invio]
Esegue dal file musica.flac
il file musica.wav
.
$
flac -o musica.wav -d musica.flac
[Invio]
Esattamente come nell'esempio precedente, specificando il nome del file da generare.
A fianco di flac, il programma metaflac consente di intervenire nelle informazioni aggiuntive contenute in un file FLAC:
metaflac [opzioni] [operazioni] file_flac |
A titolo di esempio, il comando seguente consente di leggere le informazioni disponibili all'interno di un file FLAC:
$
metaflac --list musica.flac
[Invio]
Mpg321 (6) è un programma a riga di comando per l'esecuzione di file MP2 e MP3. Si tratta precisamente di un programma che ripete le funzionalità di Mpg123, che però non è software libero.
mpg321 [opzioni] file_mp3... |
mpg321 [opzioni] uri_file_mp3... |
Il funzionamento è evidentemente molto semplice; vale la pena di annotare qualche opzione.
|
Segue la descrizione di alcuni esempi.
$
mpg321 prova.mp3
[Invio]
Esegue il file prova.mp3
.
$
mpg321 -v prova.mp3
[Invio]
Esegue il file prova.mp3
, mostrando la progressione dell'esecuzione.
$
mpg321 -v -w prova.wav prova.mp3
[Invio]
Esegue il file prova.mp3
, generando il file prova.wav
.
MP3blaster (7) è un programma interattivo per l'esecuzione di file audio (inizialmente solo per file MP3, ma successivamente esteso anche ad altri, compreso Ogg Vorbis). Se viene avviato con l'indicazione di alcuni file audio, si ottiene il pannello di controllo che si vede nella figura 531.16.
|
Le funzionalità che MP3blaster mette a disposizione sono numerose e il loro accesso è poco intuitivo. Nella parte alta appare una sorta di finestra che riepiloga i comandi che possono essere impartiti, ma non sono tutti: per visualizzare gli altri si può scorrere utilizzando i tasti [+] e [-]. La tabella 531.17 elenca alcuni comandi (tasti) che possono essere impartiti durante l'esecuzione di un file audio.
|
MP3blaster si avvia attraverso l'eseguibile mp3blaster, con o senza argomenti, ma in generale è meglio indicare subito i file da eseguire:
mp3blaster [opzioni] [file]... |
Eventualmente è possibile anche indicare un indirizzo del tipo http://...
se da quello è possibile ottenere un flusso audio riconosciuto da MP3blaster.
In generale, se alla fine della riga di comando vengono indicati dei file, viene avviata la loro esecuzione; altrimenti si ottiene generalmente il pannello iniziale del programma, dal quale si possono selezionare le funzioni desiderate.
Come accennato, il modo più semplice per avviare MP3blaster è quello di indicare subito i file da eseguire, come nell'esempio seguente, in cui si fa riferimento a tutti i file con estensione .mp3
e .ogg
contenuti nella directory brani/
:
$
mp3blaster brani/*.mp3 brani/*.ogg
[Invio]
Xmms, (8) ovvero X multimedia system, è un lettore multimediale grafico, per i formati audio più comuni. Avviandolo per la prima volta, attraverso l'eseguibile xmms, si ottiene il pannello di controllo che si vede nella figura 531.18.
|
Oltre al pannello principale è possibile visualizzare il mixer e l'elenco dei brani pronti per l'esecuzione (playlist), come si vede nella figura 531.19, dove si vede anche l'esecuzione di un brano di musica.
|
I brani da eseguire possono essere indicati attraverso l'interazione con il pannello, utilizzando il menù che si ottiene facendo un clic con il tasto destro del mouse, oppure indicandoli nella riga di comando. Per esempio:
$
xmms *.mp3
[Invio]
In tal caso, come si intuisce, si caricano tutti i file con estensione .mp3
della directory corrente.
La prima volta che si avvia, Xmms crea la directory ~/.xmms/
, in cui si collocano i file di configurazione. Questa configurazione memorizza anche l'ultimo elenco di brani selezionati, consentendo il riavvio successivo di Xmms con il recupero degli stessi dati.
Xmms richiede l'interfaccia grafica X per funzionare; tuttavia, una volta avviato è possibile controllarlo attraverso altre istanze del comando xmms, con delle opzioni apposite. Per esempio:
$
xmms -u
[Invio]
mette in pausa l'esecuzione in corso, oppure la fa riprendere;
$
xmms -e *.ogg
[Invio]
aggiunge altri brani all'elenco attuale;
$
xmms -p
[Invio]
fa partire l'esecuzione dell'elenco di brani attuale;
$
xmms -s
[Invio]
ferma l'esecuzione.
Dal pannello grafico, così come è possibile far apparire il mixer e l'elenco dei brani, è possibile fare anche sparire tutti i pannelli. In tal senso, la possibilità di controllare l'esecuzione attraverso i comandi del tipo mostrato, diventa molto conveniente. Eventualmente, per far riemergere il pannello principale si può usare il comando:
$
xmms -m
[Invio]
FreeAmp, (9) è un programma grafico per l'esecuzione di vari tipi di file audio. All'avvio si presenta come si vede nella figura 531.20.
|
L'eseguibile che compie il lavoro è freeamp che può ricevere eventualmente come argomento il nome di un file da eseguire immediatamente:
freeamp [file] |
Dal pannello frontale è possibile regolare facilmente il volume della linea di amplificazione; inoltre è possibile spostare la posizione dell'esecuzione (il punto di inizio). Attraverso il pulsante grafico <MyMusic
> si accede a una finestra simile a quella che si vede nella figura 531.21, che ha lo scopo di consentire un accesso facilitato ai file nel proprio disco fisso.
|
Tra le tante funzionalità di FreeAmp esiste anche la possibilità di modificare facilmente le informazioni ID3 dei file MP3. Per modificare i dati di un file, basta selezionarlo nell'ambito della finestra a cui si accede con il pulsante grafico <MyMusic
>, selezionando da lì il pulsante <Edit
>. Si ottiene una maschera simile a quella che si vede nella figura 531.22.
|
FreeAmp è anche in grado di collegarsi a un flusso di dati MP3 fornito attraverso il protocollo HTTP, ovvero uno stream HTTP, come quello generato da Icecast, descritto nella sezione 532.2. Per un collegamento del genere, basta avviare l'eseguibile freeamp indicando l'URI corretto, come nell'esempio seguente:
$
freeamp http://dinkel.brot.dg:8000
[Invio]
Come si vede dal comando, pur trattandosi del protocollo HTTP, si utilizza solitamente una porta differente da quella standard. La figura 531.23 mostra in che modo appare FreeAmp quando si collega a un flusso HTTP.
|
Zinf, (10) è una sorta di rivisitazione di FreeAmp: «Zinf is not FreeAmp».
zinf [file] |
zinf [uri] |
|
Dal punto di vista operativo, Zinf si comporta come FreeAmp, però c'è un vantaggio importante: se sono installati i file necessari, può funzionare anche con un terminale a caratteri:
zinf -ui ncurses.ui [file] |
zinf -ui ncurses.ui [uri] |
A titolo di esempio, viene mostrato il funzionamento di Zinf per ascoltare una radio Icecast:
$
zinf -ui ncurses.ui http://www.sky.fm/mp3/classical.pls
[Invio]
|
Xiph.Org, Ogg Vorbis
Eric Scheirer, Frequently Asked Questions: MPEG, Patents, and Audio Coding, 1998
The LAME project
Martin Nilsson, ID3 tag version 2, 1998
Phill Kerr, The Linux MP3-HOWTO
<http://www.linux.org/docs/ldp/howto/HOWTO-INDEX/howtos.html>
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
4) Vorbis Tools GNU GPL
7) MP3blaster GNU GPL
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome programmi_per_la_gestione_di_formati_audio_compressi.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]