Audio CD's

Prepareren van de tracks

NoteNoot
 

Bij alle opdrachten wordt de bash-shell verondersteld

Bestandsnaamcorrecties

  1. Verzamel alle MP3 bestanden in één directory.

  2. Als er spaties in de bestandsnamen voorkomen, zet deze dan eerst om in onderstrepingstekens:

         for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done 

    Ook al staat unix zelf spaties in bestandsnamen toe, dan nog is de eerste stap van belang, omdat de meeste programma's dit niet aankunnen.

  3. Zijn je MP3 bestanden afkomstig vanuit DOS/Windows, dan kan het zijn dat bij allen de extensies in hoofdletters staan. Je kunt de gehele naam omzetten in kleine letters of slechts de extensies. Om alles om te zetten naar kleine letters, gebruik je de opdracht:

    	for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done 

    voor het omzetten van alleen de extensies:

         for i in *.MP3; do mv "$i" "`basename "$i" .MP3`.mp3"; done
         

Conversie

De CD Audio specificatie vereist wave bestanden in 16 bit, stereo, 44.1 kHz. MP3 bestanden hebben vaak verschillende parameters, maar we moeten ze toch eerst naar WAV omzetten.

We hebben verscheidene keuzes voor het conversieproces.

mpg123 en mpg321

Oorspronkelijk bestond alleen mpg123. Het maakt echter gebruik van een eigendomslicentie, en thans bestaat er een open source vervanging - mpg321. Beide opdrachten gebruiken dezelfde syntax:

     for i in *.mp3; do mpg321 -w `basename $i .mp3`.wav $i; done 

Bij het decoderen van 22khz MP3 bestanden kan de uitvoer van mpg123 zijn vervormd. Ik weet niet hoe goed mpg321 met dit probleem omgaat. Gebruik voor het converteren met mpg123:

     for i in *.mp3; do mpg123 --rate 44100 --stereo --buffer 3072 --resync -w `basename $i .mp3`.wav $i; done
     

Mpg123 kan worden opgehaald vanaf http://www.mpg123.de/.

Mpg321 is beschikbaar vanaf http://mpg321.sourceforge.net/.

NOOT Ik bemerkte bij een aantal MP3 bestanden dat de uitvoer van mpg123 was vervormd. In eerste instantie dacht ik dat de MP3's beschadigd waren, maar toen ik ze controleerde met een andere speler, klonk het prima. Dus mpg123 is niet de converter die ik zou kiezen.

MAD

Een andere MP3 player/decoder, één waaraan ik de voorkeur geef, is madplay. Het is beschikbaar vanaf http://www.mars.org/home/rob/proj/mpeg/. Bij gebruik van madplayer, is de opdrachtregel:

     for i in *.mp3; do madplay -o `basename $i .mp3`.wav $i; done 

Helaas ondervond madplay ook problemen met een aantal MP3 bestanden van mij. Ik denk niet dat er een probleem is met de decoder, maar wel met het afhandelen van beschadigde MP3 bestanden.

Lame

De encoder lame met decoding modus, lijkt moeilijke gevallen zeer goed af te handelen (lame is te vinden op http://www.mp3dev.org/mp3/) :

     for i in *.mp3; do lame --decode $i `basename $i .mp3`.wav; done
     

OGG bestanden

Alhoewel deze HOWTO over MP3 bestanden gaat, is OGG standaard een alternatief waaraan veel mensen de voorkeur geven boven MP3 vanwege de licentie. Voor afhandeling van OGG bestanden gebruik je:

	for i in *.ogg ; do ogg123 -d wav -f `basename $i .ogg`.wav $i; done
     

Andere formaten converteren

Nico Genimakis stuurde me een e-mail over het gebruik van mplayer om audio in diverse verschillende formaten om te zetten in WAV met een automatisch resampling van 44100Hz. Van mplayer is bekend dat het vrijwel alles in kan lezen, en het kan .ogg, .mp3, .flac, .wma enz. converteren

gebruik (in dit voorbeeld WMA bestanden converterend):

	for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm -waveheader $i; done
     

Opmerkingen bij conversies

NOOT: De opdracht `basename $i .mp3`.wav vervangt MP3 extensies door WAV. Hier zijn wel 101 manieren voor, hier is een alternatief: `echo "$1" | sed 's/\.mp3$/.wav/'`

Na de conversie start je "file *.wav" en controleert de uitvoer op bestanden die niet gelijk zijn aan 16 bit, stereo 44100 Hz.

Gaat het om bestanden met verschillende kenmerken, converteer ze dan naar bovenstaande specificaties. Om bijvoorbeeld een bestand track01.wav te converteren voor het verkrijgen van een sample rate van 44.1 kHz, gebruik je:

     sox track01.wav -r 44100 track01-new.wav resample
     

of, als bovenstaande static introduceert bij het converteren van mono bestanden:

     sox track01.wav -r 44100 -c 2 track01-new.wav
     

Sox is zo populair, dat het waarschijnlijk standaard al is geïnstalleerd bij elke Linux distributie, en het kan worden verkregen vanaf http://www.spies.com/Sox/. De opdrachtregelopties zijn echter wat cryptisch voor de terloopse gebruiker (zoals ik). Kijk eens op http://www.spies.com/Sox/sox.tips.html voor een aantal gebruikstips.

Normalisatie

Normalisatie is een proces waarbij gedurende alle geluidsbestanden worden gebracht tot eenzelfde geluidsniveau. Ik gebruik hiervoor een programma geschreven door Chris Vaill (), genaamd normalize - het kan worden opgehaald vanaf http://www.cs.columbia.edu/~cvaill/normalize/

Ik gebruik de volgende syntax (-m is voor mix mode, waarbij alle bestanden zo luid mogelijk zijn):

     normalize -m *.wav