![]() | Noot |
---|---|
Bij alle opdrachten wordt de bash-shell verondersteld |
Verzamel alle MP3 bestanden in één directory.
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.
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 |
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.
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.
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.
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 |
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 |
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 |
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 is een proces waarbij gedurende alle geluidsbestanden worden gebracht tot eenzelfde
geluidsniveau. Ik gebruik hiervoor een programma geschreven door
Chris Vaill (<cvaill@cs.columbia.edu>
), 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 |