original in en 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.
InleidingNormaal gesproken is het niet mogelijk om wave-geluid in real-time te converteren naar mp3-geluid. De procedure is:
Omdat een wave bestand erg snel ontzettend groot wordt (100 MB voor 10 minuten stereo muziek in CD kwaliteit), is de opslagcapaciteit voor dit type geluid vaak beperkt. Een mp3-encoder kan een wavebestand van 100 MB reduceren tot 10 MB met de standaard mp3-kwaliteit (128 kbps, stereo). Dit opent de mogelijkheid om bijvoorbeeld 24 uur digitale muziek zonder onderbrekingen op te nemen! 24 uur is 60*24 = 1440 minuten, dus 1,4 GB (1440 MB) harde schijf ruimte!!! Dit laatste heb ik gedaan om de top 300 van de jaren 80 op te nemen (uitgezonden door Loostad radio). Op een onderbreking na (het opneemprogramma stopt automatisch na 24 uur en daar kwam ik vrij laat achter...) is dit succesvol verlopen! Op deze pagina geef ik aan welke software ik ervoor heb gebruikt, hoe het eventueel anders kan en stel ik de software beschikbaar voor download. |
'Mpegrec' doet hetzelfde als 'sox | lame', maar allerlei instellingen zijn al 'voorgeprogrammeerd'. De gebruiker heeft er verder eigenlijk geen omkijken meer na, MITS ook 'Lame' is geinstalleerd! Ik raad het gebruik van 'mpegrec' ten zeerste aan. Houdt U er wel rekening mee, dat dit programma automatisch na 24 uur stopt!!! Bovendien bevat de software een vervelende casting-bug. De door de gebruiker opgegeven opname-tijd wordt niet correct gebruikt. Vaak is het veel korter!
-b | Gebruik 128 kbps als mp3 bitrate. De standaardwaarde in 'mpegrec' is 192, wat eigenlijk een vreemde (en veel te hoge) waarde is. Bijna alle mp3-bestanden hebben een constante bitrate van 128 kbps. |
-o | Naam van de uitvoerfile. In dit geval dus ./test.mp3. Als U geen naam opgeeft, gaat alles naar de standaarduitvoer ('stdout'). Meestal is dit de xterm waarin U het programma opstart. Staan alle mp3-codes op Uw beeldscherm i.p.v. in een bestand... |
Let op:
Zorg ervoor dat de mixer-instellingen goed
staan, anders neemt U nog niets op! Ik bedoel daarmee dat U de juiste
opnamebron hebt geselecteerd en ook de volumeregelaars helemaal open
hebt gezet.
sox | Het opneemprogramma: geluid wordt via de 'line-in' van de geluidskaart opgenomen. |
-t ossdsp | Dit geeft aan dat de invoer van de OSS-geluidsdriver komt. Dit is de geluidsdriver die standaard bij de kernel zit als je geluid meecompileert. |
-w | Sample bit type is 16 bit long word (als U dit niet begrijpt: laat maar, niet belangrijk). |
-s | De 'sample data' is 'signed linear' (als U dit niet begrijpt: laat maar, niet belangrijk). |
-r 44100 | De sampling frequentie is 44100 Hz (CD-kwaliteit). |
-c 2 | Twee kanalen opnemen (stereo). |
/dev/dsp | Dit is het opneem-device: het linux-apparaat waar de opnamedata vandaan komt. Alle apparaten, poorten, schijven, enzovoorts worden onder Linux benaderd via de '/dev'-directory. De wave-data wordt onder Linux dus benaderd als '/dev/dsp'. Sterker nog: i.p.v. 'sox' kan je ook een wave-file als volgt krijgen: 'cat /dev/dsp >test.wav' (mits de mixer goed ingesteld staat!!!). |
-t raw | De uitvoerdata is 'ruwe' data (ongewijzigd; zo van de geluidskaart). |
- | Gebruik de standaarduitvoer, gesymboliseerd door '-'. |
lame | Het encoder programma: het opgenomen geluid wordt door de '|' doorgesluisd naar 'lame' om het naar mp3 te converteren. |
-x | 'Force byte-swapping of input'. Wat dit precies doet weet ik niet, maar zonder deze optie werkt het eenvoudigweg niet (voordat ik daar achter was!). |
-m s | Encodeer als stereo mp3-file. Standaard encodeert 'lame' het als 'joint-stereo': alleen de VERSCHILLEN tussen beide kanalen wordt ge-encodeerd. Het resultaat is een hogere compressie, maar een mindere kwaliteit van de mp3-file. |
- | Invoer is 'stdin'. Dat klopt dus in deze situatie. |
./test.mp3 | De file waar het eindresultaat in komt te staan. |
Zoals U ziet is de microfoon de huidige opnamebron. Aangezien een
externe bron via de 'line-in' op de geluidskaart aangesloten is,
moet ik dus van de 'line-in' de opnamebron maken. Dat doe ik door op de
'line-in' te gaan staan in de mixer en de rechtermuisknop eenmaal in te
drukken. Het submenuutje van Figuur 2 komt dan te voorschijn:
Natuurlijk selecteert U 'RecSource'. De 'line-in' van Uw geluidskaart staat nu ingesteld als opnamebron. Zet op dezelfde manier ook meteen de microfoon UIT als opnamebron: de extra ruis wilt U echt niet hebben!
Figuur 3: de KDE mixer staat nu goed
ingesteld.
Bovenstaande pleit dus voor het opnemen onder een soort DOS-prompt
(de Bash-shell onder Linux). Dit heeft een aantal gevolgen:
Gelukkig kunnen bovenstaande problemen vrij makkelijk opgelost
worden. Het eerste probleem, de geluidsondersteuning, los ik als volgt
op:
'modprobe -k sb'
Met deze opdracht wordt de module 'sb' geladen, waardoor mijn geluidskaart (een SoundBlaster AWE 64) geinstalleerd wordt onder Linux. Als U niet weet, hoe Uw geluidskaart onder Linux heet, kijk dan in '/etc/conf.modules' (SuSE) of '/etc/modules.conf' (hangt van Uw Linux distributie af). Bij mij ziet het er als volgt uit (heb ik zelf ooit eens voor elkaar gebokst):
Het tweede probleem is het selecteren van de 'line-in' m.b.v. een
tekst-georienteerd mixer-programma. Ik gebruik hiervoor het programma
'aumix'. Als U in Bash alleen 'aumix' intypt, start de mixer op in
interactieve modus. Dit is handig om Uw instellingen snel te overzien
en aan te passen, zie Figuur 4.
Met de pijltjestoetsen kunt U de verschillende bronnen selecteren. Met de '<' of '>' toetsen selecteer ik het volume (links) of de balans (rechts). Met de '+' of '-' kunt U de volume van de huidige geselecteerde bron laten toe- of afnemen. Met 'm' kunt U de huidige bron 'muten of unmuten' (selecteren/deselecteren als opnamebron). Als de huidige bron ook de opnamebron is, staat links naast de volumeregelaar een rode R (Record). als U de bron alleen kunt gebruiken om af te luisteren, staat er een groene 'P' (Playback). Als U op 's' drukt, worden de huidige instellingen bewaard in de file '~/.aumixrc'. De volgende keer kunt U deze instellingen weer heel makkelijk activeren met de opdracht: 'aumix -l'.
Om het bovenstaande te automatiseren heb ik zelf een scriptje
aangemaakt: './mrec'. Dit script ziet er als volgt uit:
#!/bin/sh if [ -z "$1" ]; then echo "Usage: mrec mp3-output-file" exit 0 fi modprobe -k sb aumix -l mpegrec -b 128 -o "$1"
De 'lame'-files en installatietips vindt U hier.
N.B.: De installatie onder Windows behandel ik niet, maar U hebt wel
de Windows versie van 'lame' nodig!!! Ik stel de windows versie van 'mpegrec' beschikbaar als
download voor de liefhebbers. Er is trouwens wel heel goede
documentatie in de .tar.gz-file (winzip) bijgesloten. De homepage-link
helpt u wellicht ook verder.
Zet voor de regels waar geen '#' staat alsnog een '#'. Deze extra opties hebt U beslist niet nodig!
mv /usr/sbin/cron /usr/sbin/cron.backup
Uiteraard staat 'cron' bij andere distributies eventueel in een andere directory. Met de opdracht:
which cron
kunt U achterhalen waar 'cron' geinstalleerd staat. Let U wel goed op dat 'cron' niet andere taken moet uitvoeren! Op een Linux machine voor persoonlijk gebruik kan het geen kwaad.