SynKlick: Reparatur von regelmäßigen Klicks (Konzept)

This commit is contained in:
Fischlurch 2014-08-30 00:48:26 +02:00
parent 2f917e0b91
commit 132f1cf17c
2 changed files with 67 additions and 0 deletions

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
*~
*.bak
*.o
*.so
*.html

62
sauSynKlick/SynKlick.txt Normal file
View file

@ -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.