Echtzeit mp3 Aufnahmen

ArticleCategory: [Artikel Kategorie]

Applications

AuthorImage:[Bild des Autors]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in nl Philip de Groot

nl to en Philip de Groot

en to de Katja Socher

AboutTheAuthor:[Über den Autor]

Bald bekommt er seinen Doktor von der Universit�t Nijmegen in Chemometrie. Er arbeitet gern mit Linux und schreibt regelm��ig seine Erfahrungen auf.

Abstract:[Zusammenfassung]

Dieser Artikel zeigt, wie man Musik mit Linux aufnehmen kann. Im Gegensatz zum LinuxFocustip in der Januar 2001 Ausgabe wird nicht das 'teure' WAV-Format benutzt. Stattdessen wird direkt im d�nneren mp3-Format aufgenommen. 24 Stunden Aufnahmen in CD-Qualit�t werden Realit�t, wenn dieses Format benutzt wird.

ArticleIllustration:[Titelbild des Artikels]

[Illustration]

ArticleBody:[Der eigentliche Artikel]

Einf�hrung

Normalerweise ist es unm�glich, wave-sound direkt in Echtzeit in mp3-sound umzuwandeln. Die Prozedur, der man folgen sollte, ist:
  • Nimm zuerst eine wave-Datei mit einem Aufnahmeprogramm auf.
  • Benutze einen mp3-encoder (z.B. 'Lame'), um die wave-Datei in eine mp3-Datei umzuwandeln.

Eine wave-Datei schnell aufzunehmen, verbraucht eine ganze Menge Plattenplatz (100MB f�r 10 Minutens Stereomusik in CD-Qualit�t). Dies beschr�nkt die Speicherkapazit�t f�r Musik, die in diesem Format aufgenommen wurde. Ein mp3-encoder ist in der Lage, eine wave-Datei von 100 MB auf 10 MB in der Standard mp3-Qualit�t (128 kbps, Stereo) umzuwandeln. Diese Eigenschaft erm�glicht das digitale Aufnehmen von Musik f�r 24 Stunden ohne Unterbrechung! 24 Stunden sind 60*24 = 1440 Minuten, die nur 1,4 GB (1440 MB) Festplattenplatz brauchen!!! Ich habe dieses Feature benutzt, um die 80er Top 300 aufzunehmen, �bertragen von Loostad radio (einige englische Seiten sind ebenfalls verf�gbar). Die Aufnahme wurde nur einmal unterbrochen, das mp3-Aufnahmeprogramm h�lt automatisch nach 24 Stunden an und dies war nicht dokumentiert..., die Aufnahme war sehr gut! Ich werde dir zeigen, was f�r Software ich benutzt habe und alternative Wege erkl�ren, wie man Echtzeit mp3-Aufnahmen machen kann. Ich habe die benutzte Software f�r diesen Artikel auch auf einer Seite verf�gbar gemacht (Links sind weiter unten im Artikel).

Die Prozedur

Unten werden zwei Methoden, f�r Echtzeit mp3-Aufnahmen in Stereo- und CD-Qualit�t diskutiert:

'Mpegrec' macht dasselbe wie 'sox | lame', aber verschiedene Einstellungen sind schon definiert. Der Benutzer braucht sonst nichts weiter. Installiere einfach 'Lame'! Ich rate dir, 'mpegrec' zu benutzen. Behalte jedoch im Ged�chtnis, da� dieses Programm nach 24 Stunden aufh�rt!!! Dar�berhinaus f�hrt ein �rgerlicher casting-Fehler zu fehlerhaften Aufnahmezeiten: die Aufnahmezeit, die vom Benutzer angegeben wird, wird nicht korrekt benutzt. In den meisten F�llen ist sie viel k�rzer!

Wie man mpegrec benutzt

Das Benutzen von 'mpegrec' ist einfach. Tippe in einem xterm 'mpegrec -b 128 -o ./test.mp3' und das war's auch schon!
Erkl�rung der verschiedenen Optionen:
-b Benutzt 128 kbps als die mp3 Bitrate. Der Standardwert in 'mpegrec' ist 192, was ein seltsamer (und viel zu hoher) Wert ist. Fast alle mp3-Dateien haben eine konstante Bitrate von 128 kbps.
-o Name der Ausgabedatei. In diesem Beispiel: ./test.mp3. Wenn keine Ausgabedatei definiert ist, wird alles zum Standardoutput ('stdout') geschickt. Normalerweise ist das der xterm, in dem das Programm ausgef�hrt wurde. Der gesamte mp3-Code wird auf deinen Bildschirm geplottet, statt in einer Datei gespeichert zu werden...

Achtung:
Pa� bitte auf, da� deine Mixereinstellungen richtig eingestellt sind. Wenn nicht, wird nichts aufgenommen! Die richtige Aufnahmequelle mu� ausgew�hlt sein und die entsprechenden Lautst�rkeregler sollten auf ihren h�chsten Einstellungen stehen.

Wie man 'sox | lame' benutzt

Tippe den folgenden Befehl in einen xterm:
sox -t ossdsp -w -s -r 44100 -c 2 /dev/dsp -t raw - | lame -x -m s - ./test.mp3
Erkl�rung der gelieferten Optionen:
sox Das Aufnahmeprogramm: Sound wird aufgenommen durch Benutzen von 'line-in' der Soundkarte.
-t ossdsp Die Soundeingabe stammt urspr�nglich von den OSS Soundtreibern. Diese Treiber sind im Linuxkernel enthalten, wenn der Standardsoundsupport enthalten ist.
-w Der Samplebittyp ist ein 16 bit langes Wort (wenn du das nicht verstehst, mach dir nichts daraus, es ist nicht wichtig).
-s Die 'sample data' ist 'signed linear' (wenn du das nicht verstehst, mach dir nichts daraus, es ist nicht wichtig).
-r 44100 Die Samplingfrequenz ist 44100 Hz (CD-Qualit�t).
-c 2 Aufnahme von 2 Kan�len (stereo).
/dev/dsp Dies ist das sound-sampling device: das Linux-device, das die Aufnahmedaten liefert. Auf alle devices, ports, Platten, usw. wird �ber das '/dev'-Verzeichnis zugegriffen. Auf den wave-stream wird unter Linux �ber '/dev/dsp' zugegriffen. Es ist eine Tatsache, da� es sogar m�glich ist, deine Sounddatei durch Benutzen des folgenden Befehls zu erhalten: 'cat /dev/dsp >test.wav' (arbeitet nur, wenn die Mixereinstellungen richtig sind!!!).
-t raw Die Ausgabe sind 'rohe' Daten (unver�ndert, direkt von der Soundkarte).
- Benutzt die Standardausgabe, symbolisiert durch '-'
lame Das Enkodierprogramm: der aufgenommene Sound wird zu 'lame' gepiped (weitergeleitet) f�r die mp3 Umwandlung.
-x 'Force byte-swapping of input'. Ich kenne die genaue Funktion dieser Option nicht, aber ohne sie l�uft die Prozedur einfach nicht (bevor ich es herausfand!).
-m s Enkodiert eine mp3-Datei als Stereo. Der Standard, 'lame' enkodiert es als 'joint-stereo': nur die UNTERSCHIEDE zwischen beiden Soundkan�len werden enkodiert. Als Ergebnis erh�lt man eine h�here Kompression, aber die mp3-Qualit�t ist schlechter.
- Die Eingabe ist 'stdin'. Dies ist f�r das laufende Beispiel korrekt.
./test.mp3 Der Name der endg�ltigen mp3-Datei.

Der Mixer

Eine korrekte Mixereinstellung ist sehr wixhtig. Der Mixer entscheidet �ber die Aufnahmequelle. Der Standard, der KDE-Mixer ist wie folgt eingestellt:
Die Standard KDE Mixereinstellungen
Abb. 1: Die Standard KDE Mixereinstellungen.

Abbildung 1 zeigt, da� das Mikrofon die momentane Aufnahmequelle ist. F�r unseren Zweck wird eine externe Quelle an den Computer angeschlossen, die den 'line-in' Konnector als Soundkarte benutzt. Die Aufnahmequelle sollte 'line-in' sein. Wenn der Mauszeiger auf dem line-in Kanal des KDE-Mixers positioniert wird, f�hrt ein rechter Mausklick zu dem Men�, das in Abb. 2 gezeigt wird:

Auswählen der richtigen Aufnahmequelle
Abb. 2: Ausw�hlen der richtigen Aufnahmequelle.

Nat�rlich wird 'RecSource' gew�hlt, um 'line-in' der Soundkarte als die Aufnahmequelle zu w�hlen. Benutz dieselbe Prozedur, um das Mikrofon als Aufnahmequelle abzustellen: du m�chtest den zus�tzlichen L�rm nicht haben!

Achtung:

Wenn 'line-in' nicht als Aufnahmequelle gew�hlt ist, erh�lt man keinen Sound von 'line-in' (sogar, wenn du selbst die Musik h�ren kannst)!!! Vergi� nicht, 'line-in' auf 'unmute' zu setzen. Abb. 2 zeigt dies richtig: du kannst 'line-in' auf mute setzen, deshalb ist es momentan 'unmuted'.

Der KDE-mixer ist richtig eingestellt
Abb. 3: Der KDE-mixer ist richtig eingestellt.

Vorsichtsma�nahmen, um gute Aufnahmen zu erhalten

Es ist wahrscheinlich, da� du normalerweise in XWindows arbeitest und das 'mpegrec' in XWindows ausgef�hrt wird. Dies ist aus den folgenden zwei Gr�nden keine gute Idee:

Die Bemerkungen oben zeigen an, da� Aufnahmen am besten erhalten werden, wenn keine grafische Umgebung vorhanden ist. Das hei�t, da� die Bash-shell benutzt werden sollte (eine textbasierte Shell). Diese Methode hat einige Konsequenzen:

Diese zwei Probleme k�nnen ganz leicht gel�st werden. Das erste Problem, Soundunterst�tzung, wird wie folgt gel�st:
'modprobe -k sb'

Dieser Befehl l�dt das Modul 'sb', das meine Soundkarte installiert (eine SoundBlaster AWE 64). Wenn du nicht wei�t, welches Modul installiert werden mu�, siehe in deinen '/etc/conf.modules' (SuSE) oder '/etc/modules.conf' (abh�ngig von deiner Distribution) nach. F�r mich ist der Soundkartenteil folgenderma�en:

alias char-major-14 sb
pre-install sb /sbin/modprobe "-k" "adlib_card"
pre-install sb /sbin/modprobe "-k" "awe_wave"
options sb io=0x220 irq=5 dma=1 dma16=5 # mpu_io=0x330
options adlib_card io=0x388 # FM synthesizer
post-install sb /usr/bin/sfxload "/win98/Program Files/Creative/ctsnd/sfbank/synthgs.sbk"
Deine Soundkarte ist immer in 'alias char-major-14' definiert (wenn die Standard OSS-Treiber benutzt werden, was normalerweise der Fall ist). Diese Zeile wird mit 'sb' abgeschlossen, damit ich wei�, da� der Befehl 'modprobe -k sb' die Soundkartendienste initialisiert.


Das zweite Problem ist das Ausw�hlen von 'line-in' auf deiner Soundkarte mit einem textbasierten Mixerprogramm. Ich benutze das 'aumix' Programm. Wenn in der Bash der Befehl 'aumix' ausgef�hrt wird, startet der Mixer im interaktiven Mode. In diesem Mode k�nnen Einstellungen auf einen Blick �berpr�ft und ver�ndert werden, siehe Abb.4.

Der textorientierte Mixer 'aumix'
Abb. 4: Der textorientierte Mixer 'aumix'.

Du kannst die verschiedenen Aufnahmequellen mit den Pfeiltasten ausw�hlen. Die '<' or '>' Tasten w�hlen die Lautst�rke (links) oder die Balance (rechts). Die '+' und '-' Tasten erh�hen oder veringern die Lautst�rke der momentan ausgew�hlten Quelle. 'm' mutes oder unmutes die momentane Quelle. Wenn die momentane Quelle als Aufnahmequelle ausgew�hlt ist, wird ein rotes 'R' auf der linken Seite dieser Lautst�rkequelle angezeigt. Wenn die Quelle nur f�r die Wiedergabe benutzt werden kann, wird ein gr�nes 'P' angezeigt. Dr�cken von 's' speichert die aktuellen Einstellungen in '~/.aumixrc'. Diese Einstellungen werden sehr leicht beim n�chsten Start mit dem Befehl: 'aumix -l' aktiviert.


Um die obige Prozedur zu automatisieren, habe ich ein kleines Skript geschrieben: './mrec test.mp3'. Dieses Skript enth�lt die folgenden Zeilen:

#!/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"

Sound wird initialisiert, 'line-in' ist als Aufnahmequelle selektiert und 'mpegrec' beginnt sofort mit der Aufnahme.

Installieren von mpegrec

Ich habe die 'mpegrec' Software, die in diesem Artikel benutzt wird, zum Herunterladen verf�gbar gemacht. Weitere Informationen �ber 'mpegrec' kann man auf http://www.netwaysglobal.com/mpegrec/ finden. Nur die Quelldateien und die kompilierten win32 Versionen k�nnen hier gefunden werden. Eine Seite mit weiteren Informationen existiert nicht, aber einige weitere Informationen k�nnen hier erhalten werden.

Die 'lame'-Dateien und Installationstipps kann man hier finden.

Installation unter Linux

Installieren von lame

Die 'lame' Version, die in diesem Artikel benutzt wird, ist auch zum Herunterladen verf�gbar. Die 'lame' Homepage findet sich unter http://www.mp3dev.org/mp3/.

Linuxinstallation

Installieren von sox

'Sox' ist ein Programm zum Aufnehmen, Umwandeln oder Editieren von Sound. Als ein Beispiel kann ein Echo zu der Sounddatei hinzugef�gt werden. Lies die 'sox' man-pages ('man sox') f�r weitere Informationen. Umwandlungen, die 'sox' machen kann: Umwandeln einer wave-Datei in eine .au-Datei (das Standard SUN Audioformat) und umgekehrt. Die M�glichkeiten sind manchmal ganz praktisch. Die Version von 'sox', die f�r diesen Artikel benutzt wurde, kann >hier gefunden< werden und die Homepage ist auf http://home.sprynet.com/~cbagwell/sox.html.

Linuxinstallation

Andere Probleme

Ich fand zwei weitere Probleme:

Cron

Dies ist ein generelles SuSE Problem. Ein schwerer Prozess wird ausgef�hrt, um die man-pages upzudaten und die alten log-Dateien zu entfernen. Dieser Prozess ist sehr n�tzlich, benutzt aber zuviel Prozessorpower f�r die mp3-Aufnahmen. Ich �nderte den Namen von 'cron' w�hrend der Aufnahmen, so da� es nicht gefunden und ausgef�hrt werden konnte. Nach dem Aufnehmen wird 'cron' wieder zur�ck umbenannt! Benutz den folgenden Befehl, um den Namen von 'cron' zu �ndern:

mv /usr/sbin/cron /usr/sbin/cron.backup

Es ist wahrscheinlich, da� der Ort von 'cron' sich f�r andere Linuxdistributionen unterscheidet. Du kannst den Ort von 'cron' mit dem folgenden Befehl finden:

which cron

Bitte �berpr�fe, ob 'cron' f�r andere Aufgaben gebraucht wird. Auf einem Desktoplinuxrechner sollte dies kein Problem sein.

Soundtreiberproblem

Dieses Problem wurde durch Benutzen der alternativen Alsa Soundtreiber gel�st. Benutz die Alsa Dokumentation (nicht in den gepackten driver/utilities Dateien enthalten), um Anweisungen zu bekommen, wie man diese Treiber installiert. Es ist besser, diese Treiber nicht zu benutzen, bis echte Probleme auftreten.