Nota | |
---|---|
Tutti i comandi presuppongono una shell bash |
Raggruppate tutti i file MP3 in una directory.
Se qualche nome di file contiene spazi, prima convertiteli in underscore:
for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done |
Questo primo passaggio è importante perché, anche se unix permette la presenza di spazi nei nomi di file, la maggior parte dei programmi vengono confusi.
Se i vostri file MP3 provengono da DOS/Windows, potrebbero avere estensioni in maiuscolo. Potete convertire in minuscolo i nomi interi o solo le estensioni. Per avere tutto minuscolo:
for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done |
per convertire solo le estensioni:
for i in *.MP3; do mv "$i" "`basename "$i" .MP3`.mp3"; done |
La specifica CD Audio richiede file wav che siano 16 bit, stereo, 44.1 kHz. I file MP3 hanno spesso parametri differenti, in ogni caso abbiamo prima bisogno di convertirli in WAV.
Abbiamo parecchie scelte per il processo di conversione.
Originariamente, c'era solo mpg123. Tuttavia, usa una licenza proprietaria, e ora c'è un sostituto open source: mpg321. Entrambi i programmi usano la medesima sintassi:
for i in *.mp3; do mpg321 -w `basename $i .mp3`.wav $i; done |
Quando si decodificano file MP3 a 22kHz l'output di mpg123 potrebbe essere distorto. Non so bene in che modo mpg321 tratti questo problema. Se state convertendo con mpg123, usate:
for i in *.mp3; do mpg123 --rate 44100 --stereo --buffer 3072 --resync -w `basename $i .mp3`.wav $i; done |
mpg123 può essere ottenuto da http://www.mpg123.de/.
mpg321 è disponibile da http://mpg321.sourceforge.net/.
NOTA Mi sono accorto che con alcuni file MP3 l'output di mpg123 era distorto. All'inizio ho pensato fossero file MP3 cattivi, ma ho provato con un altro lettore e suonavano bene. Quindi mpg123 non è la mia scelta per la conversione.
Un altro lettore/decodificatore di MP3, e quello che preferisco, è madplay. È disponibile da http://www.mars.org/home/rob/proj/mpeg/. Con madplayer, la riga di comando è:
for i in *.mp3; do madplay -o `basename $i .mp3`.wav $i; done |
Sfortunatamente, anche madplay ha avuto problemi con alcuni dei file MP3 che avevo. Non credo che ci sia un problema con il decodificatore, ma più che altro con la gestione da parte di questo di file MP3 difettosi.
Il codificatore lame, che ha una modalità di decodifica, sembra trattare molto bene i casi difficili (lame può essere trovato a http://www.mp3dev.org/mp3/):
for i in *.mp3; do lame --decode $i `basename $i .mp3`.wav; done |
Bene, questo HOWTO riguarda i file MP3, ma lo standard OGG è un'alternativa che molte persone preferiscono a MP3 a causa della licenza. Per trattare i file OGG, avete bisogno di usare:
for i in *.ogg ; do ogg123 -d wav -f `basename $i .ogg`.wav $i; done |
Nico Genimakis mi ha mandato una e-mail sull'uso di mplayer per convertire audio da diversi formati a WAV con ricampionamento automatico a 44110Hz. Mplayer è conosciuto per essere capace di leggere praticamente qualsiasi cosa, e può convertire i vostri .ogg, .mp3, .flac, .wma, etc.
Modalità d'uso (l'esempio tratta la conversione di file WMA):
for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm -waveheader $i; done |
NOTE: Il comando `basename $i .mp3`.wav sostituisce le estensioni MP3 con WAV. Ci sono 101 modi per farlo, questa è l'alternativa: `echo "$1" | sed 's/\.mp3$/.wav/'`
Dopo la conversione, lanciate "file *.wav" e controllate nell'output i file che differiscono da 16 bit, stereo, 44100 Hz.
Se ci sono file con differenti caratteristiche, convertiteli alle specifiche qui sopra. Per esempio, per convertire il file track01.wav ed ottenere la frequenza di campionamento a 44.1 kHz, potreste usare:
sox track01.wav -r 44100 track01-new.wav resample |
o, se quanto sopra introduce disturbi quando vengono convertiti file in mono:
sox track01.wav -r 44100 -c 2 track01-new.wav |
Sox è molto popolare, tanto che probabilmente è installato in modo predefinito con qualsiasi distribuzione Linux, e può essere ottenuto da http://www.spies.com/Sox/. Tuttavia, le opzioni da riga di comando sono un po' criptiche per l'utente occasionale (io). Guardate http://www.spies.com/Sox/sox.tips.html per alcuni suggerimenti d'uso.
La normalizzazione è un processo durante il quale tutti i file musicali vengono portati allo stesso livello di volume relativo. Io uso un programma di Chris Vaill (<cvaill@cs.columbia.edu>), chiamato normalize; può essere ottenuto da http://www.cs.columbia.edu/~cvaill/normalize/.
Io uso la seguente sintassi (-m sta per modalità mix, dove tutti i file dovrebbero essere al volume più alto possibile):
normalize -m *.wav |