From 132f1cf17cdc0ff55dc62d613d8625783bc5f682 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sat, 30 Aug 2014 00:48:26 +0200 Subject: [PATCH] =?UTF-8?q?SynKlick:=20Reparatur=20von=20regelm=C3=A4?= =?UTF-8?q?=C3=9Figen=20Klicks=20(Konzept)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 ++++ sauSynKlick/SynKlick.txt | 62 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 .gitignore create mode 100644 sauSynKlick/SynKlick.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fbc06aa --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*~ +*.bak +*.o +*.so +*.html diff --git a/sauSynKlick/SynKlick.txt b/sauSynKlick/SynKlick.txt new file mode 100644 index 0000000..79ec31d --- /dev/null +++ b/sauSynKlick/SynKlick.txt @@ -0,0 +1,62 @@ +SynKlick: Aufnahme reparieren +============================= +:Date: Sept.2014 + +_Reparieren einer Rohaufnahme mit synchronen 1-Sample-drop-outs auf allen Spuren_ + +Im Sommer 2014 habe ich die Serie der *Mycel-Performances* von Benedikt Brachtel aufgezeichnet. +In einigen dieser Sitzungen habe ich aus noch ungeklärtem Grund einen regelmäßigen Defekt in der Aufnahme: +Es findet sich ein Null-Sample synchron auf allen Spuren. Diese sehr spezifische Struktur ermöglicht eine +rein mechanische Reparatur, für die ich hier ein dediziertes Hilfsprogramm schreibe. + +Lösungsansatz +------------- +An allen untersuchten Defekt-Stellen habe ich ein einziges Null-Sample gefunden, das einen ansonsten +glatt aussehenden Kurvenverlauf unterbricht. Dieser Null-Wert tritt offensichtlich auf allen Spuren +synchron auf. Da ich keinen XRun von Jack bekommen habe, vermute ich einen Defekt in Ardour beim +Wegschreiben der Puffer -- möglicherweise als Wechselwirkung mit dem re-Draw der Wellenformen; ich +hatte nämlich während der Aufnahme das Editorfenster in Anzeige, bei relativ hoher Auflösung, so daß +ich zur Kontrolle die Wellenform permanent sehen konnte. Wackelkontakte an den 3.5-Miniklinken traten +immer wieder auf. + +Es geht also darum, einen Satz von Rohdateien Wort für Wort synchron zu prüfen; wenn ein bestimmtes +Muster auf allen Spuren auftritt, muß die Korrektur ausgelöst werden + +- das Muster definiere ich als _ein einziges_ Null-Wort umgeben von normalen Sample-Werten auf einer + Seite (positiv oder negativ), so daß es sich wahrscheinlich nicht um einen Null-Durchgang des Signales + handelt. +- die Korrektur besteht darin, das Null-Wort durch den Mittelwert der Nachbar-Samples zu ersetzen. + +Es könnte zu ``false positives'' kommen, speziell bei leisem Rauschen. Die Kombination mehrerer +Kanäle senkt jedoch die Wahrscheinlichkeit solcher Fehl-Korrekturen. Auch ist die Korrektur als Solche +nicht gefährlich, denn ein Mittelwert ist in den meisten Fällen ungefähr richtig; ich vermute daß +die verbleibende Störung meist nicht wahrnehmbar ist. Obwohl ich nicht untersucht habe, ob diese +Null-Samples nun _ausgefallene_ Samples oder _zusätzlich eingeschobene_ Samples sind, entscheide +ich mich für eine Ersetzung durch einen besser eingepaßten Sample-Wert, und nicht für eine +Verkürzung der Aufnahme -- einfach um den Eingriff möglichst unproblematisch zu halten. + +Anmerkungen zur Implementierung +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Ich verwende die http://www.mega-nerd.com/libsndfile[libsndfile], welche auf Linux-Systemen inzwischen +zur Standard-Lösung für den Zugriff auf Sound-Dateien geworden ist. Sie bietet ein sauberes API und +ein brauchbares Programmier-Modell, und sie unterstützt viele Datenformate. Hier konkret geht es +um Wave-64 mit floating-point-Samples. + +Das Korrektur-Programm bekommt die Namen aller Quell-Spuren und ein Zielverzeichnis, wo es die korrigierten +Ströme in identisch zur Quelle benannte Sample-Dateien schreibt. In der eigentlichen Verarbeitung verwenden +wir nur die erste Quellspur zur Suche; ein erkanntes Muster muß dann auf allen anderen Spuren bestätigt werden. +Dies erfordert, von einer gegebenen Position auch stets auf das _Vorgänger-_ und __Nachfolger-__Sample zugreifen +zu können, was besondere Vorsicht an den Puffergrenzen bedingt. Dies werde ich durch entsprechende Abstraktion +und Trennung des Lese- vom Verarbeitungsvorgang lösen. + + +Arbeitsnotizen +-------------- +.Juli 2014 +Nach Abschluß der Aufnahmen stelle ich in mindestens zwei der Sitzungen einen regelmäßigen Defekt fest. +Nach Analyse beschließe ich, eine Reparatur zu versuchen. Dies ist auch ein Anlaß, mich einmal mit der +*`libsndfile`* zu beschäftigen. + +.28.8.2014 +Nach Rückkehr von meiner üblichen Ende-August-FrOSCon-Reise wird diese Aufgabe nun dringend. +