SynKlick: Reparatur von regelmäßigen Klicks (Konzept)
This commit is contained in:
parent
2f917e0b91
commit
132f1cf17c
2 changed files with 67 additions and 0 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
*~
|
||||
*.bak
|
||||
*.o
|
||||
*.so
|
||||
*.html
|
||||
62
sauSynKlick/SynKlick.txt
Normal file
62
sauSynKlick/SynKlick.txt
Normal 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.
|
||||
|
||||
Loading…
Reference in a new issue