August 12th, 2008 by matthias
Say, you have a large MP3 audio book (or song file collection; in this case, the Bible) and want it to fit on a MP3 player, but it does not fit. Then you can re-encode it, using lame on Linux. While a 128kbps MP3 file (normal audio book quality) has approx. 1MiByte/min, a “lame -V9″ variable birate maximum compression MP3 has just 0.4MiByte/min. When allplied to spoken language, the loss in quality is only a little.
To convert your audio book (stored in dirs and files below them), use the following:
for dir in *; do \
for file in "$dir"/*; do \
lame -V 9 "$file" "${file/.mp3/_V9.mp3}"; \
done; \
done;
Then, to sort out the newly generated files, and rename them to short names, do the following:
mkdir AudioBookV9;
for dir in AudioBook/*; do \
mkdir "${dir/AudioBook/AudioBookV9}"; \
mv $dir/*_V9.mp3 "${dir/AudioBook/AudioBookV9}"; \
done;
for file in AudioBookV9/*/*; do \
mv "$file" "${file/_V9.mp3/.mp3}"; \
done;
You now have all relevant files in directoy AudioBookV9, and if the size fits (check with “du -h AudioBookV9″), you want to transfer that to your MP3 player. So mount your MP3 player as a mass storage device (here, to /media/misc/), and do this:
for dir in AudioBookV9/*; do \
sudo mkdir "/media/misc/${dir/AudioBookV9/}"; \
done;
for file in AudioBookV9/*/*; do \
sudo cp "$file" "/media/misc/${file/AudioBookV9/}"; \
done;
Here, note that we don’t simply copy the whole AudioBookV9/* stuff recursively. This will work in most cases, but for the KINGZON MP3 Player M3ZH it did not. Here, the order in which files are written to the device is important, as “normal playing mode” means that the device plays files in this order, not in alphabetical order. Copying whole directories makes the files being written in the order they appear in the directory tables, so you’ll have all your chapters mixed up on the device. So use the workaround, or you’ll hear the end of your fascinating novel way too early 
Posted in Audiobearbeitung, Sprache: Englisch, alle Artikel | No Comments »
May 26th, 2008 by matthias
Wenn das benötigte Trident-Kernelmodul /lib/modules/2.4.7/kernel/drivers/sound/trident.o nicht existiert, muss es zuerst in den Kernel als Modul einkompiliert werden: cd /usr/src/linux; make menuconfig; nun das trident-Modul aufnehmen; make modules modules_install. Die Verwendung des ALSA-Soundtreibers ist nur mit dem von SuSE veränderten Kernel 2.4.4-4GB möglich, daher empfiehlt sich im Hinblick auf spätere Kernel-Updates die Verwendung des trident-Kernelmoduls. Dazu muss das ALSA-Soundsystem aus der Datei /etc/modules.conf rauskommentiert werden, sofern es bereits einmal aktiviert war. Stattdessen ändert man die Zeile “alias char-major-14 off” in “alias char-major-14 trident“.
Verwendung des ALSA-Treibers: Die Konfiguration des im Notebook vorhandenen Soundchips SiS 630 mit YaST2 scheitert (entweder wird per PnP nicht erkannt, oder »Carddatabase not faound, please check your installation.«). Man verwende also das textbasierte alsaconf. Vorher unbedingt den kernelbasierten Soundtreiber entladen (rmmod trident), sonst kann natürlich ALSA die Soundkarte nicht belegen (alsasound gibt aber auch keine richtige Fehlerausgabe zurück, nur der Testsound funktioniert dann nicht und auch sonst keine auf ALSA basierenden Programme wie noteedit). Ansonsten löst alsasound die Aufgabe richtig, wenn man die Soundkarte SiS 630 auswählt.
Wie kann man nun erreichen, dass ALSA beim Systemstart automatisch geladen wird? Das wurde schon automatisch von alsaconf in /etc/modules.conf eingerichtet.
Bedienung von ALSA
- Die Mixereinstellungen werden in
/etc/asound.conf gespeichert und bei jedem Start von ALSA wiederverwendet und bei jeder Beendigung von ALSA werden die aktuellen Mixereinstellungen dorthin gespeichert.
- ALSA kann manuell mit
rcalsasound start gestartet, und mit rcalsasound stop gestoppt werden (z.B. um das den trident-Kerneltreiber wieder zu laden).
- Mixer für ALSA:
alsamixer für Textmodus, gamix für Grafikmodus.
- ansonsten können alle Soundprogramme wie bisher verwendet werden. Bei timidity gibt man dazu z.B. an:
timidity -Os *.mid, um auf ALSA PCM-Device auszugeben.
Posted in Audiobearbeitung | No Comments »
May 26th, 2008 by matthias
Dazu muss eine Soundausgabe von ALSA auf den MIDI-Devices erreicht werden. Gelistet werden sowohl in kmid als auch in noteedit folgende Devices:
- External MIDI 0 MIDI 0-0
- SiS 7018 SiS 7018 port 0
- SiS 7018 SiS 7018 port 1
- SiS 7018 SiS 7018 port 2
- SiS 7018 SiS 7018 port 3
In kmid wird parallel auf Konsole ausgegeben, dass all diese Devices geöffnet und initialisiert wurden. Allein, es wird kein Sound gespielt. Eine Änderung der Lautstärke in kmid scheint korrekt zu funktionieren, denn es wird auf der Konsole jeweils »Position reached!« ausgegeben. Es liegt nicht daran, dass keine Lautstärke eingestellt ist (vgl. z.B. die Ausgabe von amix für Kanal »Music«). Da sonst wirklich alles fuktioniert, scheint es eher so, als sei in diesem Notebook nicht nur die MIDI-Schnittstelle nicht eingebaut, sondern auch die interne MIDI-Synthese zumindest nicht mit der Lautsprecher-Ausgabe verbunden worden. Sie ist als Device vorhanden, läuft sich aber irgendwie tot. So als habe das Notebook gar keine MIDI-Unterstützung. Zwar sagt noteedit beim Start »TSE3 ALSA MIDI Scheduler created«, aber dieses Gerät kann hardwaremäßig gar keinen Sound ausgeben!
Den Symptomen nach (erkannte MIDI-Devices, Abspielen funktioniert, nur der Sound fehlt; Abspielen unter Windows funktioniert) besteht das Problem darin, dass die interne MIDI-Synthese der SiS 7018 mit Wavetable funktioniert und deshalb zuerst ein Soundfont geladen werden muss. Wie geschieht das? Bei normaler AWE32/64-Synthese verwendet man dazu sfxtest und sfxload. Der Treiber für normale AWE32/64-Synthese funktioniert nach /usr/src/linux/Documentation/sound/AWE32 aber nur mit ORIGINAL SoundBlaster-Wavetable-Soundkarten.
Das Device zur Wiedergabe durch interne MIDI-Synthese ist /dev/music (noch zu überprüfen).
General MIDI Sound font: members.xoom.com/yar/synthgm.sbk.gz . Einträge am Ende von /etc/modules.conf zur Verqwendung von AWE32/64:
alias sound-slot-0 sb alias sound-service-0-1 awe_wave
post-install awe_wave /usr/local/bin/sfxload PATH_TO_SOUND_BANK_FILE
Benötigt wird Information, um die Wavetable-Funktionalität beim Treiber snd-card-trident.o nutzen zu können. Nach Informtionen aus dem Sourcecode des ALSA-Treibers (/usr/src/packages/SOURCES/alsa-driver-0.5.10b/cards/card-trident.c) hat dieser Treiber nur ein RawMidi-Device, aber keines, das interne Synthese beherrscht. Die Wavetable-Funktionalität kann also mit diesem Treiber nicht genutzt werden. Anscheinend sind die 4 in kmidi angezeigten Ports alles externe MIDI-Devices (die aber hardwaremäßig nicht implementiert sind: keine MIDI-Schnittstelle), die Devices für interne Synthese existieren nicht.
Besteht eine Möglichkeit, die MIDI-Ereignisse auf /dev/midi mit aconnect / alsaseq abzufangen und per Streaming an eine Software-Synthese mit timidity weiterzuleiten?
Neuere Version des ALSA-Treibers verwenden oder OSS-Treiber oder Kerneltreiber?
Posted in Audiobearbeitung, Sprache: Deutsch, alle Artikel | No Comments »
May 8th, 2008 by matthias
Schwingungsfrequenzen der Tonleiter in Hz
(aus: »Physikalische Formeln und Daten«, 1. Aufl. 1998, Ernst Klett Verlag, ISBN 3-12-770800-9)
temperierte oder gleichschwebende Stimmung: Halbtonschritte 12te-Wurzel(2) = 1,059fache
Ton rein temperiert
c' 264 262 Violinschlüssel auf der ersten unteren Hilfslinie
cis' 278 277
d' 297 294
dis' 313 311
e' 330 330
f' 352 349
fis' 374 370
g' 396 392
gis' 418 415
a' 440 440
ais' 467 466
h' 495 494 auf der mittleren Linie im Violinschlüssel
c'' 528 524
Posted in Audiobearbeitung | No Comments »
May 8th, 2008 by joachim
You want to play some Realplayer .rm file and listen to it. At the same time you want to save what you hear as a MP3 file. The solution to this is quite simply, once you know it.
You have to have the following programs installed: vsound, realplay, sox and lame. The last three are usually shipped with your Linux distribution. vsound is probably not installed, read its webpage to check how to install it.
To play and convert a file at the address www.someaddress.bla/test.rm just execute this command (put everything on one line):
URL="http://www.someaddress.bla/test.rm" vsound -a 5 -d -s -t realplay "$URL" |
sox -t au - -t wav - |
lame -v --ta "Test file" - "test.mp3"
This opens realyplayer which plays the file. After it stopped for 5 seconds realplayer will be closed. The mp3 is created while it’s playing, so no waiting at the end.
Posted in Audiobearbeitung | No Comments »
May 6th, 2008 by matthias
Man lege sich auf ID3v2.3-Tags als Referenz-Informationsquelle fest und lasse die Dateinamen und die Ordnerstruktur automatisch daraus generieren. Man lasse auch die amarok-internen Metadaten daraus generieren. Aber man verwende keine ID3v1.1-Tags (auch nicht zusätzlich): sie bringen keine zusätzliche Funktionalität und es ist nicht möglich sie sinnvoll automatisch aus ID3v2.3-Tags zu generieren (z.B. wegen kürzeren Feldlängen). Man verwende einen Standard-Zeichensatz in den ID3v2.3-Tags (am besten UTF8, aber ggf. stattdessen ISO8859-1).
Die Praxis:
Die Anfangssituation wird eine Sammlung mit schlechter Datenhygiene sein, d.h. ohne dass eine Form von Metainformationen konsistent als Referenzinformationsquelle dienen könnte.
kid3 sollte verwendet werden um die korrekten ID3v2.3-Tags zu erstellen, ist jedoch nicht komfortabel. Eine bessere Lösung gibt es aber nicht: das (Debian-)Paket xmms2-plugin-id3v2 hilft nicht weiter (denn mit welchem Frontend verwendet man es?). Auch amarok hilft nicht weiter denn damit werden nur die intern redundant verwalteten Metadaten bearbeitet, nicht die ID3-Tags.
Um die nun überflüssigen ID3v1.1-Tags zu löschen verwende man »id3v2 –delete-v1 *.mp3«.
Um die Dateinamen entsprechend den ID3v2.3-Tags zu erstellen kann man id3ren nicht verwenden denn es arbeitet nur auf ID3v1.1 (wie auch id3 und id3tool). Die einzigen Tools für ID3v2.3 sind kid3 und id3v2. Also geht man wie folgt vor: man markiert alle Dateien deren Dateiname entsprechend dem ID3v2.3-Tag formatiert werden soll in kid3 und wählt »Dateiname -> von ID3v2« und dann »Datei -> Speichern«. Um das effizient tun zu können sollte man am besten alle Stücke in einem einzigen Ordner gespeichert haben, oder ein entsprechendes Verzeichnis mit symbolischen Links verwenden.
Abschließend wähle man in amarok »Sammlung neu erfassen« - damit werden alle amarok-Metadaten von den ID3-Tags aktualisiert sofern die Datei mit einem externen Programm seither geändert wurde. Dabei wertet amarok auch ID3v2-Tags aus und zieht sie den Informationen im Dateinamen vor. (Wenn man dabei auch den Dateinamen geändert hat merkt amarok das auch beim automatischen »Sammlung aktualisieren«.)
Von nun an sollte man nur noch Stücke zur Sammlung hinzufügen deren ID3v2-Tag korrekt ist und bei dem die wesentlichen Informationen vollständig eingetragen sind.
Posted in Audiobearbeitung | No Comments »
May 6th, 2008 by matthias
Man verwende:
-
id3ren -template="%a - %s.mp3" *.mp3
Das funktioniert nur wenn die Stücke einen ID3v1.1-Tag haben, nicht mit ID3v2.3-Tags. Weil die Feldlängen im ID3v1.1-Tag beschränkt sind (je 30 Zeichen für Textfelder) kann es passieren dass z.B. nicht der ganze Songtitel im Dateinamen erscheint.
Posted in Audiobearbeitung | No Comments »
May 5th, 2008 by matthias
Audio-CDs können nicht wie CD-ROMs einfach mit einem Befehl wie »readom dev=/dev/hdc f=/path/to/image.iso« ausgelesen werden. Das führt stets zu einem Fehler im ersten Sektor, und bei »-noerror« auch in jedem weiteren Sektor. (Gilt das aber für alle CDs?). Was jedoch funktioniert ist:
-
cd /media;
-
readom -v -clone -noerror dev=/dev/hdc f=/media/cdda.raw; eject;
-
wodim -v -clone -raw96r -eject speed=10 /media/cdda.raw;
Mögliche Geschwindigkeiten für readom und wodim sind: 4, 10, 16, 20, 24 (zumindest bei dem hier verwendeten Brenner PIONEER DVD-RW DVR-K05). Benutzt man dies Option speed=# mit einer Geschwindigkeit höher als 10fach (also ab 16fach) so beginnt wodim wie gewöhnlich in 10facher Geschwindigkeit zu brennen und passt die Gewschwindigkeit später an (hier getestet beim PIONEER DVD-RW DVR-K05). Das kann für CD-DA unerwünscht sein, also verwende man am besten speed=10 oder weniger.
Üblicherweise sind für CD-DA wohl langsame und sehr langsame Geschwindigkeiten (1, 2, 4) zu empfehlen. Weitere sinnvolle Optionen für readom: speed=#, -c2scan.
Es gibt eine weitere Möglichkeit zum Kopieren von CD-DA, nach der Manpage von wodim. Dazu führe man zuerst aus:
-
icedax -v all -device /dev/hdc –cddb 0 -O wav –bulk; eject;
Und dann:
-
wodim -v -useinfo -text -dao -eject speed=10 *.wav
Dabei wird versucht, Track-Indizes mit zu kopieren und CD-Text Information von der CD-DA zu lesen. Wenn dort keine CD-Text information vorhanden ist wird icedax versuchen, diese über freedb.org zu erhalten. Dieses zweite Verfahren scheint das bessere zu sein weil beim CD-Cloning beim Fixieren von CDs mit Überlänge oft oder immer ein Fehler auftritt (»Errno: 0 (Success), flush cache scsi sendcmd: no error [...] Trouble flushing the cache«). Dieser Fehler bedeutet dass die gebrannte CD-DA dann nicht verwendet werden kann.
Posted in Audiobearbeitung | No Comments »
May 5th, 2008 by matthias
Man verwende grip. Konfiguration:
- Konfiguration: Kodiere: Kodierer: Kodierer: lame
- Konfiguration: Kodiere: Kodierer: Kommandozeile: -h –vbr-new -V 4 (d.h. hohe Qualität, variable Bitrate in Qualitätsstufe 4 (0=höchste))
- Konfiguration: Rip: Ripper: grip (cdparanoia)
- Konfiguration: Rip: Ripper: Rip-Datei-Format: ~/Desktop/%A - %n.wav (Namenskonvention »Interpret - Stückname.wav«)
Posted in Audiobearbeitung | No Comments »
April 30th, 2008 by matthias
Man verwende lame zur Kodierung mit variabler Bitrate einen Befehl der Form:
-
lame -V 7 input.mp3 output.mp3
Bei der Option »-V« bedeutet:
- 1: die meisten Frames haben 320 kbps (keines unter 128 kbps)
- 2: die meisten Frames haben 256 kbps (keines unter 128 kbps)
- 3: die meisten Frames haben 224 kbps (bei Musik; bei Sprache: 96-128 kbps)
- 4: die meisten Frames haben 192 kbps
- 5: die meisten Frames haben 160 kbps
- 6: die meisten Frames haben 128 kbps
- 7: die meisten Frames haben 112 kbps oder 96 kbps, je nach Musikstück
- 8: die meisten Frames haben 96 kbps
- 9: die meisten Frames haben 80 kbps (bei Musik; bei Sprache: 16-24 kbps)
Bei »-V 8« hört man deutlich, dass die hohen Frequenzen (etwa mit Besen gespieltes Schlagzeug) nicht mehr richtig zur Geltung kommen. Das ist meist noch akzeptabel, jedoch scheint »-V 7« die beste Kombination aus Qualität und Größe. »-V 9« produziert akzeptable Qualität bei Sprache (allerdings mit hörbarem Quantisierungsrauschen). »-V 8« scheint für Sprache die beste Wahl (es sind keine merklichen Qualitätsmängel hörbar). Will man in kompakter aber sehr hoher Qualität Sprachaufzeichnungen archivieren scheint »-V 3 -q 1« die beste Wahl: diese Aufzeichnungen enthalten viele Frames geringer Komplexität (z.B. Pausen) bei denen es völlige Verschwendung ist sie mit 128 kbps oder höher zu encodieren.
Es gibt verschiedene Noise-Shaping Algorithmen; »-V« impliziert »-h« (high quality), was »-q 2« ist. Theoretisch ergibt sich durch »-q 0« eine weitere Verbesserung. Sie ist jedoch praktisch nicht hörbar, dafür dauert der Codiervorgang aber etwa vierfach länger. Man verwende »-q 1«: dies ist gegenüber »-q 2« ebenfalls eine Verbesserung, der Codierungsaufwand ist aber noch vertretbar.
Um als Mono zu encodieren, füge man »-m m« hinzu. Das ergibt gegenüber Joint Stereo noch einmal eine Verkleinerung um 20-30%. Allerdings ist selbst bei Sprache durch die Recodierung eine deutliche Qualitätsverschlechterung (ähnlich dem Quantisierungsrauschen) hörbar.
Um Dateien in Serie umzukodieren verwende man:
-
for file in *.mp3 ; do lame -V 7 "$file" "${file/.mp3/.varKbpsV7.mp3}"; done
Um in Serie umzukodieren mit 128 kbps konstanter Bitrate:
-
for file in *.mp3 ; do lame -b 128 -h "$file" "${file/.mp3/.varKbpsV7.mp3}"; done
Posted in Audiobearbeitung | No Comments »