original in nl Philip de Groot
nl to en Philip de Groot
en to de Katja Socher
Bald bekommt er seinen Doktor von der Universität Nijmegen in Chemometrie. Er arbeitet gern mit Linux und schreibt regelmäßig seine Erfahrungen auf.
EinführungNormalerweise ist es unmöglich, wave-sound direkt in Echtzeit in mp3-sound umzuwandeln. Die Prozedur, der man folgen sollte, ist:
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). |
'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!
-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.
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. |
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:
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!
Abb. 3: Der KDE-mixer ist richtig eingestellt.
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:
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.
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"
Die 'lame'-Dateien und Installationstipps kann man hier finden.
Die Zeilen, die kein '#' haben, sollten jetzt eines bekommen. Du mußt diese Extraoptionen nicht benutzen!
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.