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