vorher
nachher
Ausreißer

Das Album Frumpy 2 erschien 1971, war damals in Deutschland eine Sensation in der Szene, geriet dann aber in Vergessenheit. Ende 2008 wurde es auf CD erneut veröffentlicht, so dass ich es mir endlich zulegen konnte. Leider stellte ich dann beim ersten Probehören fest, dass da in den Songs was knistert und knackt. Ich rippte also die CD und guckte mir die Sache genauer an.

In der Spektralansicht sah ich das Problem (siehe oberstes Bild): Lauter Aussetzer im Sound - das sind jeweils die roten Spitzen. Die sind direkt so auf der CD, das ist kein Lesefehler und auch nicht das Ergebnis eines komischen Kopierschutzes und somit doppelt und dreifach ärgerlich. Als nächstes sah ich mir dann die einzelnen Aussetzer an und stellte schnell fest, dass sie allesamt dem gleichen Muster entsprachen: Der Wert war genau um ca 16.000 zu niedrig (siehe unterstes Bild). Somit lag die Vermutung nahe, dass es sich um einzelne Bitfehler handelt, so dass die Werte um exakt 16.384 vom Soll abweichen, und zwar immer nach unten. Mit dieser Prämisse ging ich nun daran, mir ein kleines Programm zu schreiben, was die Aussetzer aufspürt und korrigiert.

Dazu wird eine sehr einfache Heuristik benutzt: Gehe durch sämtliche Samples der Datei und berechne die Differenzen über die drei vorherigen und die drei nachfolgenden Samples. Anschließend werden die Differenzen berechnet für den Fall, dass man das Sample um 16.384 nach oben zieht, wenn sich dadurch die Differenzen deutlich ändern (mathematisch gesprochen: wenn sich die Krümmung der Kurve deutlich verringert), hat man ein kaputtes Sample gefunden und kann es korrigieren.

Nach dem ersten Testlauf sah das Ergebnis schon besser, aber nicht gut aus. Die Ursache waren ungünstige Konstellationen der kaputten Samples, so gibt es massenweise Stellen, wo zwei, drei oder gar vier Samples direkt hintereinander die falschen Werte haben. Das wurde dann über erweiterte Heuristiken erschlagen. Die letzten Überbleibsel konnten erst durch direkte Vorgabe der erlaubten Grenzwerte abgefangen werden, ein generischer Ansatz hätte hier zu viele Samples "gefunden", die eigentlich in Ordnung sind. Das Feintuning dieser Grenzen war dann auch das Zeitaufwendigste an der ganzen Geschichte.

Nach rund zwei Wochen war das Programm fertig und behebt nun in zwei Songs vom Album jeweils über 4000 kaputte Samples, eine Arbeit, die von Hand extrem mühsam geworden wäre. Das Ergebnis sieht man im mittleren Bild, welches den gleichen Ausschnitt zeigt wie das erste. Und nun kann man auch entspannt dem Röhren der Hammond lauschen :-)

Download des Programms inkl. Quelltext

Das Programm erwartet als Parameter den Song How The Gypsy Was Born bzw. Take Care Of Illusion als einfache Wave-Datei, so wie sie von CD kommen. Die anderen beiden Songs des Albums waren bei mir fehlerfrei, so dass es einen rudimentären Test gibt, ob die Eingabedatei einer der beiden Songs ist. Wenn der Test positiv verläuft, werden die kaputten Samples repariert und das Ergebnis in eine neue Datei geschrieben.