In diesem Jahr dürften sich viele Hörbücher auf den Gabentischen finden, häufig als CDs. Doch für’s Schlaf- oder Kinderzimmer bevorzugen nach wie vor viele Leute Kassettenrekorder: Sie sind billig, und bei einem Stopp bleibt die Kassette an einer Stelle stehen und spielt am nächsten Tag an derselben Stelle weiter.
Wer keine endlosen Stunden zwischen Stereoanlage und PC verbringen möchte, um rechtzeitig auf Stop zu drücken, dem nehmen zwei einfache Skripte diese Arbeit ab. Das Überspielen von Audio-CDs oder MP3-Dateien auf eine Kassette ist ohne Hilfsmittel ein großer Aufwand.
Damit der PC die Daten von einer Audio-CD handhabt, digitalisieren Sie sie zunächst und wandeln sie in MP3-Dateien um. Das erledigt das Werkzeug lame von [1] (RPM-Quellpaket) oder [2].
Neben dem Perl-Basispaket – das jede größere Distribution automatisch installiert – benötigen Sie das Perl-Modul MP3-Infoperl-MP3-Infolibmp3-info-perl.
Auf die Platte, …
Legen Sie sich eine Verzeichnisstruktur an, in der Sie die MP3-Dateien unterbringen. Sie brauchen ein Verzeichnis hoerbuch und darunter pro CD des Hörbuchs je ein Verzeichnis, beispielsweise mit den Namen hoerbuch/CD01/, hoerbuch/CD02/ usw. Diese Struktur ist wichtig, damit die einzelnen Dateien in der richtigen Reihenfolge auf den Kassetten landen.
Unter SuSE ist der Datei-Browser Konqueror bereits so vorkonfiguriert, dass er nach der Installation von lame (und anschließendem Konqueror-Neustart) Audio-CDs automatisch ausliest: Geben Sie als Zieladresse audiocd:/ ein, und schieben Sie die Dateien aus dem Verzeichnis MP3 per Drag & Drop auf die Festplatte; dabei konvertiert Konqueror die Audio-Tracks ins MP3-Format. Alternativ lesen und kodieren Sie die Audio-Tracks mit einem lame-Interface Ihrer Wahl, beispielsweise ripperX[4].
… fertig, …
Das Perl-Skript mp3ls.pl (Listing 1, Heft-CD) ermittelt die Spieldauer der Audiodateien.
Listing 1
mp3ls.pl ermittelt die Spieldauer
#!/usr/bin/perl -w
use MPEG::MP3Info;
$mp3 = shift;
while ($mp3) {
print $mp3.":";
$info = get_mp3info $mp3;
die "Keine MP3-Datei?\n" unless $info->{VERSION};
$hh = int $info->{MM} / 60;
$mm = $info->{MM} % 60;
printf "%2.2d:%2.2d:%2.2d\n", $hh, $mm, $info->{SS};
$mp3 = shift;
}
exit 0;
./mp3ls.pl `find /pfad/zum/hoerbuch -name *.mp3` >filelist
erstellt in der Datei filelist eine Liste der MP3-Dateien, die auf Kassette zu kopieren sind.
Das Perl-Skript mplaylist.pl von der Heft-CD erzeugt ein Shell-Skript zum Abspielen der Dateien.
mplaylist.pl benötigt vier Parameter: Zuerst geben Sie die Datei an, in die mp3ls.pl die zu überspielenden Dateien geschrieben hat. Anschließend folgt die Länge einer Kassettenseite in Minuten und danach die Länge der Überlappung in Sekunden: Muss das Skript eine Datei auf zwei Kassettenseiten verteilen, wiederholt es auf der zweiten die hier angegebene Zeit.
Der vierte Parameter bestimmt die Toleranzgrenze in Minuten: Wenn auf der Kassette weniger Platz bleibt als hier angegeben, bricht das Skript keine neue Datei an.
Dann leiten Sie die Standardausgabe in eine beliebige Datei um, in der Sie anschließend das Shell-Skript finden.
Mit den Befehlen
./mplaylist.pl filelist 45 30 5 >aufnahme.sh chmod u+x aufnahme.sh
erzeugen Sie ein Shell-Skript aufnahme.sh und machen es ausführbar. Der anschließende Aufruf von ./aufnahme.sh überspielt die Dateien aus der Liste in filelist auf Kassetten mit 45 Minuten pro Seite. Von Stücken, die nicht mehr auf eine Seite passen, wiederholt es auf der nächsten Seite 30 Sekunden. Eine neue Datei bricht es nur dann an, wenn noch mindestens fünf Minuten auf der Kassette verbleiben; so wird die Erzählung nicht in allzu kurze Teile zerrissen.
… los!
Verbinden Sie den Line-Out-Ausgang Ihrer Soundkarte mit Ihrem Kassettenrekorder, und legen Sie die erste Kassette ein. Nun starten Sie zunächst die Aufnahme auf dem Kassettenrekorder und dann das Überspiel-Skript ./aufnahme.sh. Nach 45 Minuten ist die erste Kassettenseite bespielt, und das Skript hält an. Drehen Sie nun die Kassette um oder legen Sie eine neue ein, und starten Sie wieder die Aufnahme am Kassettendeck. Mit [Enter] setzten Sie anschließend die Wiedergabe fort.
Wollen Sie den Vorgang unterbrechen und später fortsetzen, geschieht dies mit [Strg-C] am Ende einer Kassette. Um an dieser Stelle fortzufahren, streichen Sie aus dem Skript aufnahme.sh die bereits abgearbeiteten Dateien heraus. Anschließend starten Sie wieder ./aufnahme.sh.
Glossar
-
Perl
-
Die “Practical Extraction and Report Language” ist eine Skript-Programmiersprache, die vor allem darauf ausgerichtet ist, Informationen aus Textdateien zu verarbeiten. Sie benötigt keinen Compiler.





Wie die umgekehrte Variante (von der Kassette zum MP3) funktioniert kann man hier nachlesen: https://www.kassetten-digitalisieren.de