AW: Sechsstündiger Wave-Mitschnitt wird nur eine Viertelstunde abgespielt
Hallo!
Es erscheint mir wichtig auf einen Umstand hinzuweisen, der noch nicht zur Sprache kam. Ja, manchmal dauert es mit dem Nachdenken etwas länger und man endeckt eigene Denkfehler erst später.
Ich schrieb:
Aber Vorsicht! Ein 16Bit-Stereo-Sample hat eine Größe von 4 Bytes. Das Offset des ersten Samples (linker Kanal) in einer stinknormalen Wavedatei liegt normalerweise bei 0x2C (44 dez). Man kann also problemlos splitten und den Waveheader wegsägen.
Es kommt aber darauf an, wie groß der 'fmt '- Chunk ist. Normalerweise ist er 16 Bytes (0x10) lang, die "10" nach 'fmt ' bei Fileoffset 0x10 (erstes Byte in der zweiten Zeile). Dann ist alles Okay.
Der Chunk kann aber auch größer sein. Siehe unten: Der 'fmt '-Chunk ist hier 18 Bytes (0x12) groß, die Audiodaten beginnen in dieser Datei also bei Offset 0x2E (46 dez). Wenn man diese Datei einfach nur splittet und den alten Waveheader "wegsägt", sind die Kanäle vertauscht und am Ende fehlt ein "halbes" Sample bzw. ein "halbes" Sample ist überflüssig.
Trivia: Ein einziges 16-Bit Stereosample hat eine Größe von vier Bytes. Zwei Bytes für den linken Kanal, zwei Bytes für rechts. Diese beiden 16-Bit breiten "Zahlen" wurden vom AD-Wandler gleichzeitig "ermittellt", sie gehören also zeitlich zusammen, sind eigentlich "atomar" - unteilbar.
Ich habe den alten Screenshot zum besseren Verständnis unten nochmal angehangen.
Sollte der "fmt "- Chunk 18 Bytes groß sein UND man die Datei als STEREO-AUFNAHME interpretieren lassen hat, hat man ein Problem. Die eigentlichen PCM-Daten beginnen (mit den ersten zwei Bytes (16-Bit) des ersten Samples (linker Kanal)) nicht mehr an einem durch vier teilbaren Offset in der Datei.
Wenn ich also eine solche Datei als "Rohdaten" von Audacity" interpetieren lasse und "16 Bit Stereo" beim Import angebe, mache ich möglicherweise einen Fehler.
Natürlich wird Audacity dann die ersten zwei Bytes aus der Datei dem linken Kanal zuordnen, die nächsten zwei Bytes dem rechten Kanal (das ist das erste Stereosample) usw. Die ersten paar "Samples" ergeben zwar nur "Rauschen" (das ist der Waveheader mit seinen binären Daten), aber so ist es ja auch gedacht. In der grafischen Darstellung der "Waveform" sieht man diesen "Datenmüll" sofort und kann ihn samplegenau wegschneiden. Null Problemo.
Beginnen die Audiodaten nun aber an einem Dateioffset welches nicht durch vier teilbar ist, hat man ein Problem.
Ich wiederhole mich:
Wenn ich also eine solche Datei als "Rohdaten" von Audacity" interpetieren lasse und "16 Bit Stereo" beim Import angebe, mach ich einen Fehler.
Warum?
Ganz einfach: Weil "Audacity" dann (!) nur ganzzahlige Vielfache von vier Bytes (ein einziges Stereosample - vier Bytes) "schneiden" kann!
Natürlich wird Audacity dann die ersten zwei Bytes aus der Datei dem linken Kanal zuordnen, die nächsten zwei Bytes dem rechten Kanal (das ist das erste komplette Sample) usw.
Die ersten paar "Samples" ergeben zwar nur "Rauschen" (das ist der Waveheader mit seinen binären Daten), aber so ist es ja auch gedacht. Neu ist, daß der um zwei Bytes größere "fmt "-Chunk als 16-Bit-Sample für den linken Kanal in der grafischen Darstellung auftaucht. In der grafischen Darstellung der "Waveform" sieht man diesen "Mist" beim Reinzoomen sofort - links - und kann ihn auch "wegschneiden". Doch damit scheidet man das erste wirkliche Audiosample "in der Mitte" auseinander! Man schneidet also "halbe" Samples.
Und genau das ist falsch! Nicht nur, daß dadurch die Kanäle vertauscht sind, auch die Phasenlage stimmt nicht mehr, da es es einen zeitlichen Versatz von genau einer Sampleperiode gibt, da die folgenden 16 Bit (zwei Bytes) als "rechter Kanal" interpretiert werden. Das stimmt aber nicht, denn diese sind eigentlich die ersten zwei Bytes des linken Kanals des zeitlich unmittelbar nachfolgenden Samples!
Ja. ja - ist nicht einfach zu verstehen.
Es gibt nur ein paar Möglichkeiten:
1.) Beim Import einer in Stereo aufgenommenen Datei als "Rohdaten" (PCM) gebe ich "16 Bit - Mono" an. Damit werden die Samples für links und rechts von Audiacity hintereinander interpretiert - die Datei wird also um 50% langsamer und tiefer abgespielt. Dafür kann ich dann aber "den Mist" (also den Waveheader) auf zwei Bytes genau (!) (weg)schneiden und die Datei dann wieder als PCM abspeichern. Danach kann ich sie als "16-Bit Stereo" neuladen und interpretieren lassen - und habe gewonnen. Verstanden?
2.) Das für das Dateisplitting vewendete "grobe" Programm sucht nach dem "data"-Chunk in der Datei und kopiert die folgenden Daten (bis zur angegebenen Dateigröße) in jeweils eine neue Datei.
Was ich sagen will: Auch mit "Audiacity", "CoolEdit" & Co kann man verunglückte Wavedateien "retten". Das geht - da bin ich mir sicher. Man muß aber auch bei diesen Progis wissen, was man tut und was passiert. Und darum: Im Notfall einfach hier fragen!
vg Zwerg#8