original in nl Philip de Groot
Promoveert binnenkort aan de Universiteit van Nijmegen op het onderwerp chemometrie. Werkt zeer graag met Linux en schrijft regelmatig zijn ervaringen hiermee op.
Kortom, je hebt een programma nodig dat mp3-bestanden ZELF kan bewerken. Deze programma's bestaan, zij het (nog) niet voor Linux. Heel veel Windows versies van deze programma's staan ter beschikking. Echter: al deze programma's hebben 1 groot nadeel. Ze 'verslikken' zich in een mp3-bestand van 650 MB. Ik heb 1 programma gevonden dat de klus kan klaren (mits je een flinke portie geduld hebt): 'Manns' mp3 edit'. Ikzelf gebruik dit programma onder Windows98. In de grafische interface kan je het begin en einde van het gewenste mp3-deel aangeven en met de 'trim' opdracht knip je dit stukje mp3-code eruit en kopieer je dat naar een nieuw bestand. Dit programma is 'donationware,' wat betekent dat je niet verplicht bent om ervoor te betalen, maar je wel vriendelijk wordt verzocht om dit te doen als het programma bevalt. Dit programma heeft 2 nadelen: het is op een bestand van 650 MB TRAAG en het werkt alleen op CONSTANTE bitrates!!! Het begin zoeken van het laatste uur (van bijvoorbeeld 24 opgenomen uren) duurt heel erg lang en gaat gepaard met een stevig geratel van de harde schijf. Het knippen zelf gaat daarentegen razendsnel (en zonder kwaliteitsverlies). Problemen met afspelen heb ik met deze editor nog niet ondervonden, al controleer ik altijd achteraf of het bewerken goed is gegaan (door de afzonderlijke bestanden ook nog eens in te laden). Tijdens mijn eerste bewerkingen met deze editor klikte ik al op de 'Trim' knop voordat het programma uitgerateld was. Dit leidt onherroepelijk tot verminkte bestanden, die niet afgespeeld kunnen worden! Ter indicatie: het editen van een bestand van 650 MB kost mij 1 uur met dit programma, hoofdzakelijk veroorzaakt door wachten (en dat is best irritant)!
Deze aanpak heeft als voordeel dat het nauwelijks een extra belasting vormt voor de processor tijdens het maken van de mp3 CDs. De images bestaan al! Via een script kunt U automatisch de images mounten, de opname starten, na 12 uur het opnemen afbreken en de image unmounten, een tweede image mounten en verdergaan met de opname, enzovoorts. Het branden van de CD's heb ik voor de zekerheid met de hand gedaan, voor het geval er problemen zouden optreden (ik had 1 keer een probleem door een slechte CDR). Vandaar dat ik 4 images heb gemaakt: 3 reserve images voor het geval ik even niet een CD kon branden (en dus maximaal 36 uur respijt heb). Het gebruikte script ziet er als volgt uit:
#!/bin/sh echo "loading modules for sound support..." modprobe -k snd-card-sb16 modprobe -k snd-pcm-oss modprobe -k snd-mixer-oss echo "setting mixer..." amixer set Line 31 unmute capture; amixer set Master 31; amixer set PCM 31 cd /where/ever/you/stored/the/images/ for i in 1 2 3; do for ii in 1 2 3 4; do echo "mounting image_$ii on /mnt ..." mount -t ext2 -o loop=/dev/loop1 image_$ii /mnt echo "starting mpegrec ..." mpegrec -b 128 -x -mj -o /mnt/top2000_$ii.mp3 echo "umount /mnt" umount /mnt done done
Ik draaide dit alles ZONDER XWindows, dus vanaf de Bash-prompt. Vandaar dat ik sound-support met de hand moest laden, evenals de OSS emulatie (nodig om de ALSA-drivers goed te laten werken) en de mixer driver (dit kan natuurlijk geautomatiseerd worden door een pre-install/post-install opdracht te gebruiken in het bestand '/etc/conf.modules'). De 4e regel stelt de mixer correct in: opname bron is line-in en de volume wordt maximaal open gezet. Daarna zorgt het script voor het nodige mount en unmount werk. Wat de opties van 'mpegrec' betreft: '-mj' geeft aan dat ik een joined stereo opname wil maken. Dit omdat ik dacht dat het bestand dan kleiner zou worden (het moet wel allemaal op zo'n 670-680 MB passen). Dit blijkt achteraf echter helemaal niet waar te zijn: het maakt nagenoegd niet uit of je stereo of joined-stereo opneemt! In het vervolg gebruik ik zelf dus gewoon stereo, maar dat moet ieder voor zichzelf uitmaken. Het programma 'mpegrec' moet ook na 12 uur stoppen. Om dat te bereiken had ik de source code aangepast en de maximaal 24 uur (die er dus keihard instaat) veranderd in 12 uur. Helaas ging de vlieger niet op: het programma bleef nu opeens wel vrolijk doorgaan met opnemen! Ik heb dus om de 12 uur handmatig de mp3-opname onderbroken (je moet er wat voor over hebben...). Het script zorgde vervolgens voor de rest. Van 'mpegrec' snap ik nu geen snars meer; de source code moet ik eens echt goed onder handen nemen...
Opmerking:
Met de nieuwste versie van cdrecord (cdrecord-1.9) ondervond ik problemen met het branden van CD's. Onder de vorige versie, cdrecord-1.8.1, werkte alles nog vlekkeloos. Uiteindelijk heb ik de problemen opgelost door de firmware van mijn CD brander (een Philips CDD 3610) op te waarderen naar de nieuwste versie: 3.09 (i.p.v. ik dacht 3.02). Ik dacht in eerste instantie dat de problemen veroorzaakt werden door kernel 2.4.3, maar dit blijkt dus niet het geval te zijn!
De belangrijkste feiten op een rijtje:
#!/bin/bash echo "record $1 named ($3) for $2 seconds" aumix -f ~/.aumixrc /usr/bin/yes x | /usr/bin/radio $1 >/dev/null 2>/dev/null sox -V -r 44100 -c 2 -t ossdsp -w -s /dev/dsp -t wav - 2>/dev/null | lame - ~/$3.`/bin/date "+%H%M.%m-%d-%y"`.mp3 --resample 16 -b 8 -a -m m -h --lowpass 4 --highpass .12 --voice& sleep $2 kill -9 $! # copy the output to a different direcory. If you want you can # replace cp by rcp or scp and copy it to a different computer: cp $3.*`/bin/date "+.%m-%d-%y"`.mp3 /tmp/outputdir
Dit script is op zich duidelijk. Doel is om een begrijpbare radio-opname te krijgen die slechts 3.5 megabyte/uur opslagruimte nodig heeft! Met begrijpbaar bedoel ik dat de spraak nog te interpreteren is. De muziek kwaliteit is natuurlijk niet om over naar huis te schrijven! De eerste regels van het script stelt de mixer in en start het programma voor een radiokaart en sox. De 'truc' zit hem in een aantal opties die 'lame' meekrijgt en die we nu nader gaan bekijken:
--resample 16 | Herdefinieer de sampling frequentie van de output file van 44kHz naar 16 kHz. |
-b 8 | Zet de sampling rate op 8 kbit/s (slik!). |
-a | Combineer de stereo stream tot een mono opname. |
-m m | Forceer mono mp3 encodering. |
-h | Een optie om hoge kwaliteit mp3-encodering toe te passen (langzamer). |
--lowpass 4 | Stel het laagdoorlaatfilter in op 4 kHz. Alle signalen (frequenties) hoger dan 4 kHz worden eruit gefilterd. |
--highpass .12 | Stel het hoogdoorlaatfilter in op .12 kHz. Alle signalen (frequenties) lager dan .12 kHz worden eruit gefilterd. |
--voice | Gebruik een mp3-compressie techniek die geoptimaliseerd is voor spraak. |
Het is duidelijk dat een hoge compressie verkregen kan worden voor spraak. Meestal wilt men dit niet, maar de mogelijkheid is bij deze aangegeven!
#!/bin/sh /usr/local/bin/mpegrec \ -l 5400 \ -x '--preset fm \ --tt "Computers in Your Life" \ --tl "Open Line with Tom Wieble" \ --ta "Tom Wieble" --ty `date +%Y` \ --tg "Speech" \ --tc "Copyright (c) 1997 - `date +%Y` WOSU" -c' \ -o open_line_`date +%d%b%y`_`date +%H%M`.mp3
De optie '-l 5400' stelt de opnametijd in op 90 minuten. Alle opties na '-x' worden meteen doorgesluisd naar lame (regels 4 t/m 9) en de '-o' optie bewaard het bestand als 'datum_en_tijd.mp3'. Deze regels kunnen natuurlijk naar believen aangepast worden, waarbij het wellicht handig is om de opties van 'lame' eens goed te bekijken. In de onderstaande tabel staan de huidige opties verder uitgewerkt:
--preset fm | Lame kent een aantal standaard instellingen. 'fm' is bedoeld voor het maken van fm-opnamen, maar ikzelf vind de kwaliteit minder als bij de standaard sampling rate van 128 kbit/s. Dit heeft met name te maken met de toegepaste filters in 'lame'. |
--tt "Computers in Your Life" | '--tt' definieert de titel van de opname (maximaal 30 karakters). |
--tl "Open Line with Tom Wieble" | '--tl': album, oftewel: bron van origine (maximaal 30 karakters). |
--ta "Tom Wieble" --ty `date +%Y` | '--ta': artiest (maximaal 30 karakters). |
--tg "Speech" | '--tg': genre (naam of nummer). |
--tc "Copyright (c) 1997 - `date +%Y` WOSU" -c" | '--tc': commentaar (additionele informatie; maximaal 30 karakters). |
Kortom: een nette manier om een mp3-file te maken, inclusief datum en tijd van opnemen en allerlei additionele informatie. Het is wel even werk om dit alles netjes in een script te zetten, maar het is leuk om te zien dat het allemaal eenvoudigweg mogelijk is!