Taktunterschied zwischen Abspielen und Aufnahme des Logsweep

frankl
Aktiver Hörer
Beiträge: 485
Registriert: 20.01.2013, 01:43
Wohnort: Aachen

Taktunterschied zwischen Abspielen und Aufnahme des Logsweep

Beitrag von frankl »

Hallo Forenten,

als ich vor ein paar Tagen mal wieder eine Messung gemacht habe, um meine Raum- und Systemkorrekturfilter neu zu berechnen, habe ich mich an eine Bemerkung erinnert, die Uli vor einiger Zeit mal gemacht hatte.
uli.bruegemann hat geschrieben: Ein USB-Mikrofon hat einen eingebauten AD-Wandler. Schliesslich überträgt USB ja keine Analogsignale, bestenfalls analoge Digitalsignale. Und somit hat der AD-Wandler auch irgendwo eine Clock. Diese hat mit größter Wahrscheinlichkeit nichts mit der Clock gemeinsam, mit der ein analoges Messsignal per DA-Wandler ausgegeben wird. Im besten Fall bedeutet das den Effekt einer Zeitdehnung/-stauchung. Wiederum nicht unüblich sind aber Drifts während der Messung. D.h. das Messergebnis weist Phasenschwankungen auf (die man aber nicht kennt) und taugt nicht wirklich für Phasenauswertungen.

Daher rate ich zur Verwendung einer Soundkarte mit AD/DA-Wandler mit gleichem Takt und eingebauten Mikrofonvorverstärker. Dann passt das Timing.
Dem letzten Vorschlag möchte ich bei mir nicht folgen. Wenn ich eine Messung mache, dann soll der Sweep exakt so abgespielt werden, wie ich auch Musik abspiele. Ich will nicht nur Raumeinflüsse korrigieren, sondern das Gesamtsystem aus Raum und Abspielkette inklusive aller beteiligter Hardware, Kabel und Software. Und eine Aufnahmemöglichkeit gibt es in der Kette nicht, dafür verwende ich eine externe USB-Soundkarte, die an meinem Notebook hängt. Da ist der Einwand natürlich berechtigt, dass die Berechnung der Impulsantwort fehlerhaft ist, wenn die Taktgeschwindigkeit beim Abspielen und beim Aufnehmen nicht genau gleich ist.

Um in meiner Aufnahme genau den Abschnitt zu finden, der dem abgespielten Sweep entspricht, habe ich vor meinen Sweep einige Sekunden Stille mit zwei Ticks im Abstand von 1000 Samples kopiert. Diese Ticks suche ich dann mit audacity in der Aufnahme und finde so auf 1 Sample genau den Abschnitt, den ich zur Berechnung der Impulsantwort brauche.

Jetzt habe ich einfach nochmal diesen Abschnitt mit den zwei Ticks hinten an meinen (90 Sekunden) Sweep angehängt. Damit kann ich sehr genau den Abstand der Ticks vor und hinter dem Sweep im Original und in der Aufnahme vergleichen. Ich habe festgestellt, dass der Abstand sich um 88 Samples über ungefähr 2 Minuten unterscheidet.

Da stellt sich die Frage, ob das einen gravierenden Fehler in der Impulsantwort ergibt? Um das zu prüfen habe ich einmal dieses Problem ignoriert und so wie sonst die Impulsantwort und daraus einen Korrekturfilter berechnet. Und zum anderen habe ich meine Aufnahme mit 'sox' von einer Samplerate von 95999,3 auf eine Samplerate von 96000 konvertiert, wonach der Abstand der Ticks in Original und Aufnahme sich nur noch um 1 Sample unterschieden. Dann habe ich zum Vergleichen Impulsantwort und Korrekturfilter mit Hilfe der "up"gesampleten Aufnahme berechnet.

Das Ergebnis: Es gibt einen hörbaren Unterschied. Der ist nicht riesig, aber interessant genug, so dass ich in Zukunft meine Aufnahme immer upsamplen werde.

Danke an Uli, dass er auf dieses Problem aufmerksam gemacht hat.

Viele Grüße,
Frank
Bild
Eunegis
Aktiver Hörer
Beiträge: 134
Registriert: 17.11.2012, 19:53

Beitrag von Eunegis »

Hallo Frank,

erschreckend interessanter Gedankengang, das. Das erste, was mir dabei spontan einfällt, ist nicht eine technisch-mathematische Antwort, sondern etwas ganz Praktisches: das Problem müßte doch z. B. alle DIRAC (DDRC...)-Nutzer schwer treffen. Denn die Geräte nutzen USB-Mikrofone. Und selbst alle Acourate-Nutzer (und Dirac-Software-Nutzer) müssen Deiner Messung nach betroffen sein, wenn sie nicht eine Korrektur per Upsampling vornehmen.

Gibt es entsprechende weitere Hardware/Software-Nutzer-Forenten, die das in guter "wissenschaftlicher" Tradition an ebenjener Hardware/Software gegenchecken können und insbesondere Hörbarkeitsprüfungen vornehmen können?

Gruß,
Jens
Bild
FoLLgoTT
Aktiver Hörer
Beiträge: 554
Registriert: 20.01.2011, 14:05
Wohnort: Hannover
Kontaktdaten:

Beitrag von FoLLgoTT »

Hallo Frank,
frankl hat geschrieben:Das Ergebnis: Es gibt einen hörbaren Unterschied. Der ist nicht riesig, aber interessant genug, so dass ich in Zukunft meine Aufnahme immer upsamplen werde.
Eigentlich logisch und doch denkt kaum einer daran. Der komplette Amplitudengang ist ja so verschoben, wie die beiden Takte voneinander abweichen. Das heißt, das Korrekturfilter korrigiert den verschobenen Amplitudengang und hören tust du dann wieder mit dem originalen. Das passt natürlich nicht mehr, auch wenn es nur sehr gering ist. Ich hatte die Abtastrate in Brutefir mal umkonfiguriert, die Filter aber nicht neu erstellt. Das hatte denselben Effekt, nur viel stärker. ;)

Ich benutze zum Messen ein eigenes USB-Interface mit Mikrofonverstärker und nutze das auch als Signalquelle. Und mein Falt-PC wird immer über die analogen Eingänge gemessen, somit passt es da auch automatisch.

Gruß
Nils
Bild
FoLLgoTT
Aktiver Hörer
Beiträge: 554
Registriert: 20.01.2011, 14:05
Wohnort: Hannover
Kontaktdaten:

Beitrag von FoLLgoTT »

Ich muss mich korrigieren. Das Problem tritt bei mir natürlich auch auf, allerdings merkt man das während der Messung nicht. Die Filter werden für das Mess-Audio-Interface erstellt, gefaltet werden sie aber von der internen Soundkarte. Im Grunde betrifft das jede Konstellation, bei dem ein Gerät die Faltung durchführt, das nicht gleichzeitig das messende Audio-Interface benutzt. Also alle externen Falter.

Wer zusätzlich ein USB-Mikrofon benutzt, hat also drei Takte (Audio-Interface, Falter, Mikrofon), deren Fehler sich akkumulieren. Ob die Akkumulation zufällig gut oder schlecht ist, ist nicht vorhersagbar und nur messbar.

Auf der anderen Seite sind die Abweichungen wahrscheinlich so gering, dass Toleranzen der verwendeten Treiber deutlich größer sind ...
Bild
Fujak
Moderator
Beiträge: 5752
Registriert: 05.05.2009, 21:00
Wohnort: Bayern
Kontaktdaten:

Beitrag von Fujak »

Hallo zusammen,

angeregt durch Frank und Uli habe ich meinen Logsweep nicht von einem Interface abgespielt und aufgenommen, sondern von meinem PC über die Anlage (also DDC-Reclocker-DAC-VV-LS) abgespielt und über die interne Soundkarte des PC wieder aufgenommen. Praktisch bei Acourate ist ja, dass dem Original-Logsweep auf L und R jeweils ein Dirac-Pulse zu Beginn und am Ende erstellt wird, sodass man diesen als Zeitmarker verwenden kann.

Legt man Original Logsweep und aufgenommenen Logsweep übereinander, ergibt sich folgender Zeitversatz (zum Vergrößern auf Grafik klicken):

Dirac-Pulse L
Bild

Dirac-Pulse L mit markiertem Zeitversatz
Bild


Dirac-Pulse R
Bild

Dirac-Pulse R mit markiertem Zeitversatz
Bild

Es ergeben sich also bei beiden Kanälen etwa 5000 Samples Zeitdifferenz.

Wenn ich also mit der Originalkette messen möchte - was ich so wie Frank bevorzuge, anstatt ein Interface für die Messung zu verwenden, dann stellt sich für mich die Frage nach einer praktikablen Lösung.

Nun gibt es bei vielen Treibern die Möglichkeit, einen Zeitversatz für Input und Output zu definieren. Bei dem von mir verwendeten sind es leider nur bis zu 1024 Samples Differenz, die man kompensieren kann - also nicht ausreichend.

Bliebe eine andere Möglichkeit, die Acourate beim Logsweep-Recorder bietet, nämlich beim Aufnehmen des Logsweeps einen Allpass-Prefilter einzuschleifen, den man mit diesem Zeitversatz passgenau austattet (Rotate-Function).

Die Frage, die sich für mich dabei allerdings stellt: Ist es damit getan, den Zeitversatz einfach durch zeitliches Verschieben zu kompensieren oder braucht es dafür eine Angleichung der Samplerate, so wie Frank dies bei sich beschrieben hat?

Grüße
Fujak
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Fujak,

Vorsicht! Es gibt zwei Arten von Zeitversatz. Zum einen ein durch mögliches Delay in der Wiedergabekette (nicht weiter schädlich) und zum anderen dadurch, dass bei nicht identischen Abtastraten für Wiedergabe und Aufnahme ein gegebener Zeitabstand im Originalsignal sich bei der Aufnahme ändert.

Frank und ich meinen hier den zweiten Fall. Das ist aber nicht anhand der aus dem Logsweep berechneten Pulsantworten ermittelbar. Man muss da hergehen und z.B. in der Logsweep48_rec.wav die Diracimpulse identifizieren und dann den Abstand ermitteln. Mit dem Originalabstand ergibt sich dann ein Resamplingfaktor für eine SRC.

Grüsse
Uli
Bild
Fujak
Moderator
Beiträge: 5752
Registriert: 05.05.2009, 21:00
Wohnort: Bayern
Kontaktdaten:

Beitrag von Fujak »

Vielen Dank, Uli, genau darauf bezog sich meine Frage. Dann werde ich das mal in meiner Mittagspause untersuchen.

Grüße
Fujak
Bild
Fujak
Moderator
Beiträge: 5752
Registriert: 05.05.2009, 21:00
Wohnort: Bayern
Kontaktdaten:

Beitrag von Fujak »

Melde mich zurück mit folgendem Ergebnis:

Code: Alles auswählen

Original Dirac L		
Start: 22050 S     End: 4079250 S      Diff: 4057200 S

Aufnahme Dirac L	
Start: 26980 S     End: 4084236 S      Diff: 4057256 S
                                            ----------

                                       Diff:    - 56 S
                                            ==========
Differenz von 56 Samples bezieht sich auf Samplerate 44.1 bei Logsweep-Dauer von 90 sec.

Den aufgenommenen Logsweep kann ich ja mittels Sox um einige Nachkommastellen downsamplen, doch dann muss ich ja diesen modifizierten File in Acourate einbauen, um entsprechende Pulse.dbl bzw. zuvor Inverse.dbl zu generieren und daraus die Filter (Macro 1-4) berechnen zu lassen.

Wie würdest Du da am ehesten vorgehen?

Grüße
Fujak

P.S.: Wäre das nicht eine neue Funktion in einer zukünftigen Update-Version wert (so etwas wie "Samplerate-Alignment")?
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Das Problem ist das automatische Auffinden der Diracpulse im Logsweep. Der Peak kann ja auch negativ sein etc.

Du kannst die Logsweep48_rec.wav in Acourate laden und mit TD-Function - SRC umrechnen. Dabei im Edit-Feld Special das Verhältnis 4057200/4057256 = 0.9999861976 bzw. umgekehrt (was richtig ist, weiss ich grad nicht) eingeben. Das Ergebnis dann als Logsweer48_recSRC.wav speichern. Dann mit Logsweep - Logsweep Convolution weitermachen und die Pulsantworten "zu Fuss" rechnen.

Grüsse
Uli
Bild
FoLLgoTT
Aktiver Hörer
Beiträge: 554
Registriert: 20.01.2011, 14:05
Wohnort: Hannover
Kontaktdaten:

Beitrag von FoLLgoTT »

Fujak hat geschrieben:Wie würdest Du da am ehesten vorgehen?
Die Frage ist doch eher: "Sollte man da überhaupt tätig werden?". Denn der Unterschied im Takt beträgt bei dir gerade mal 0,001 %.

Die Korrekturfilter verschieben sich also um diesen Wert. Sprich: soll ein Filter bei 1 kHz wirken, so wirkt es in Wahrheit bei 1000,01 Hz. Da kann mir keiner erzählen, dass das eine klangliche Relevanz besitzt. Vom Gefühl her würde ich schätzen, dass das "krumme" Korrektur-Resampling mehr verändert als diese geringe Taktabweichung.

Gruß
Nils
Bild
Fujak
Moderator
Beiträge: 5752
Registriert: 05.05.2009, 21:00
Wohnort: Bayern
Kontaktdaten:

Beitrag von Fujak »

Hallo Uli,
uli.brueggemann hat geschrieben:Das Problem ist das automatische Auffinden der Diracpulse im Logsweep. Der Peak kann ja auch negativ sein etc.
das könnte man doch mit einer Formel bewerkstelligen, die vor jeweils vor Einsetzen und nach Abklingen des Logsweeps innerhalb eines definierten Zeitfenbsters eine Änderung des Pegels von 0dB auf +/- XdB und wieder 0 innerhalb eines Samples (=Dirac-Puls) detektiert. Von dort könnte man dann mit folgender Formel weitermachen:

Code: Alles auswählen

                                      ([Orig.-Dirac End] - [Orig.-Dirac Start]) Samples
korr. Samplerate = orig. Samplerate x -------------------------------------------------
                                      ([Aufn.-Dirac End] - [Aufn.-Dirac Start]) Samples
und ab da weitermachen wie bisher.

Grüße
Fujak
Bild
Fujak
Moderator
Beiträge: 5752
Registriert: 05.05.2009, 21:00
Wohnort: Bayern
Kontaktdaten:

Beitrag von Fujak »

Hallo Nils,

ich beziehe mich auf die Hörerfahrung von Frank, der einen Unterschied feststellt. Sowohl bei mir als auch bei Frank sind es nur wenige Promille Abweichung (bei anderen kann es durchaus mehr sein). Die aber scheinen eine Hörrelevanz zu haben, wobei zugegebenermaßen Frank damit nicht explizit gesagt hat, dass es eine qualitative Verbesserung darstellt, diese Promille-Abweichung zu korrigieren. Ich möchte das bei Gelegenheit auch selbst mal bei mir testen.

Grüße
Fujak
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Damit es mal klarer wird:

Ich habe einen Logsweep mit 48 kHz von 10 Hz bis 24000 Hz erzeugt, Zeitdauer 60 Sek. Und die dazugehörige Inverse gesichert. Dann dazu mal einen weiteren Sweep erzeugt, diesmal mit der Länge 59.99917185 sek. Das entspricht den 60 sek multipliziert mit einem Faktor 4057200/4057256 aus Fujaks Beispiel.

Und nun beide Sweeps mit der 60 sek. Inversen gefaltet und die Pulsantwort extrahiert. Das sieht dann so aus (zum besseren Vergleich ist eine Antwort um 150 Samples verschoben):

Bild

Ihr dürft gerne raten welcher Impuls zum korrekten Sweep+Inverse gehört. :wink:

Es sollte auch klar werden, dass die eine Pulsantwort trotz der ach so minimalen Taktabweichung von 0.001% doch irgendwie bescheuert ausschaut. :mrgreen:

Grüsse
Uli
Bild
Fujak
Moderator
Beiträge: 5752
Registriert: 05.05.2009, 21:00
Wohnort: Bayern
Kontaktdaten:

Beitrag von Fujak »

Also Uli, ehrlich gesagt gefällt mir der rote Impuls besser als der grüne, es ist irgendwie schöner geschwungen. Der andere sieht irgendwie so eckig und steril aus.

Spaß beiseite, danke für dieses anschauliche Besipiel; die Beweislast ist erdrückend. Es lebe das "Sampleraten-Alignment". Ich werde die Prozedur bei mir mal weiter durchführen und den Unterschied posten.

Grüße
Fujak
Bild
frankl
Aktiver Hörer
Beiträge: 485
Registriert: 20.01.2013, 01:43
Wohnort: Aachen

Beitrag von frankl »

FoLLgoTT hat geschrieben: Die Frage ist doch eher: "Sollte man da überhaupt tätig werden?". Denn der Unterschied im Takt beträgt bei dir gerade mal 0,001 %.

Die Korrekturfilter verschieben sich also um diesen Wert. Sprich: soll ein Filter bei 1 kHz wirken, so wirkt es in Wahrheit bei 1000,01 Hz. Da kann mir keiner erzählen, dass das eine klangliche Relevanz besitzt. Vom Gefühl her würde ich schätzen, dass das "krumme" Korrektur-Resampling mehr verändert als diese geringe Taktabweichung.
Hallo Nils,

Deine Interpretation ist nicht richtig. Durch die unterschiedlichen Taktgeschwindigkeiten, wird die Berechnung der Impulsantwort fehlerhaft (da geht eben der ursprüngliche Sweep und der aufgenommene Sweep ein). Es wird also ein Korrekturfilter zu einer falschen Impulsantwort berechnet.

(Wenn der gleiche Korrekturfilter für das Abspielen mit so minimal unterschiedlicher Geschwindigkeit benutzt wird, dann gebe ich Dir Recht, dass das keine klangliche Auswirkung hat.)
fujak hat geschrieben: Differenz von 56 Samples bezieht sich auf Samplerate 44.1 bei Logsweep-Dauer von 90 sec.
Der Laufzeitunterschied bei Fujak ist also sogar etwa dreimal so groß wie bei mir. Da würde es mich auch interessieren, ob die Samplerate-Korrektur in diesem Fall einen hörbaren Unterschied ausmacht.

Einen extremen Laufzeitfehler habe ich schon auf mehreren Notebooks gesehen, die statt 44100 Samples pro Sekunde etwa 44200 gespielt haben (entsprechend bei Vielfachen, wogegen 48k, 96k und 192k sehr genau stimmten). So große Abweichungen sollten vermutlich nicht ignoriert werden.

Viele Grüße,
Frank
Bild
Antworten