Hallo Forenten,
hier geht es ja um die Frage nach dem Prinzip, wie ein DAC eine Folge von Samples (sagen wir 44100 pro Sekunde), die aus der Aufnahme eines Audiosignals kommen, wieder in die analoge Amplitudenkurve zurückverwandelt.
Die Samples beschreiben ja Punkte in konstanten Zeitabständen, durch die die Kurve, die wir suchen, geht.
Wenn ich es hier richtig verstanden habe, dann gibt es NOS-DACs, die von den Samplepunkten aus die Amplitude für eine Zeiteinheit konstant halten und diese waagerechten Striche nahezu senkrecht verbinden; das ergibt dann solche Treppenverläufe wie sie im ersten Post dieses Threads gezeigt wurden.
Ich stimme mit den Leuten überein, die das für eine sehr schlechte Näherung an die gesuchte Kurve halten, und möchte das ein bisschen erklären.
Zuerst ist zu bedenken, dass mit einer Samplerate von 44100 Hz nur Audiosignale aufgenommen werden können, die die folgende Voraussetzung (V) erfüllen.
(V) Das Signal enthält nur Frequenzanteile bis 22050 Hz (also bis zur halben Samplerate).
Das
Sampling-Theorem besagt, dass ein Signal, das die Vorraussetzung (V) erfüllt, vollständig durch die Amplitudenwerte zu 44100 Zeitpunkten in gleichen Abständen pro Sekunde beschrieben ist. Und
vollständig heißt wirklich vollständig.
Man beachte, dass das umgekehrt bedeutet, dass bis auf die eine richtige alle kontinuierlichen Amplitudenverläufe, die durch eine Folge von aufgenommenen Samples laufen, nicht die Voraussetzung (V) erfüllen!
Betrachten wir jetzt einen Brickwall-Filter, der jede Sinus-Schwingung mit Frequenz kleiner als 22050 Hz unverändert durchlässt und jede Sinus-Schwingung mit Frequenz größer als 22050 Hz auslöscht. Cay-Uwe und Uli haben oben mit graphischen Darstellungen des Amplituden-Frequenzverlaufs schon angesprochen, dass man einen solchen Filter extrem genau mit FIR Filtern praktisch annähern kann (genauer heißt mehr Filterkoeffizienten, längere Rechnung und längere Verzögerung des Outputs).
Wenn wir nun einen Dirac-Puls (ein Sample mit Maximalwert, alle anderen Null) durch einen solchen (Näherungs-)Filter schicken, dann sieht das Ergebnis (fast) wie ein Sampling der
sinc-Funktion aus, eben dieser Peak mit den symmetrischen Vor- und Nachschwingern, der in diesem Thread schon häufig erwähnt wurde.
Damit können wir beschreiben, was herauskommt, wenn man eine beliebige Abfolge von Samples durch diesen Filter schickt: Man muss jedes Sample durch die erwähnte sinc-Funktion mit Peak an der Stelle dieses Samples und skaliert mit dem Wert des Samples ersetzen (hier nehme ich an, dass die Samples auf den Bereich von -1.0 bis +1.0 normiert sind, bei negativem Wert wird die sinc-Funktion auf den Kopf gestellt). Diese vielen skalierten sinc-Funktionen werden nun aufsummiert und so bekommen wir das Ergebnis. Dieser Vorgang wird übrigens
diskrete Faltung genannt.
Joachim hatte mal auf
diese Webseite verwiesen. Wenn man etwas runterscrollt gibt es da ein Bild mit einem Amplitudenverlauf, in den mehrere kleine Kopien der sinc-Funktion reinkopiert wurden. Wenn ich es richtig verstehe, soll dieses Bild veranschaulichen, wie schlimm ein DAC mit so einem Filter steile Flanken fehlerhaft rekonstruiert. Hier scheint mir ein Missverständnis vorzuliegen, wie sich die beschriebene Faltung auf ein Musiksignal auswirkt. Das ist nämlich mit bloßem Auge unmöglich abzuschätzen.
Nehmen wir eine Folge von Samples, die ein Signal, das Vorraussetzung (V) erfüllt, beschreibt, und schicken es durch unseren Filter. Was passiert dabei? (Fast) nichts! (denn das Eingangssignal ist ja eine Überlagerung von Sinus-Schwingungen, die der Filter unverändert durchlässt).
Umgekehrt: Wenn wir eine Folge von Samples haben, die durch den Filter verändert wird, dann ist dies
keine Folge von Samples, die durch Aufnahme eines Signals, das Vorraussetzung (V) erfüllt, gewonnen wurde.
Ein krasses Beispiel dafür ist der oben und in diesem Thread oft betrachte Dirac-Puls (oder auch Rechteck-Signale). Dieser ist kein Signal, das durch eine Aufnahme entstehen kann. Und deswegen macht es auch keinen Sinn, zu sagen, dass ein NOS-DAC dieses besonders exakt wiedergeben kann! Falls es in der Natur tatsächlich einen solchen Puls als Schallereignis gäbe, müsste man vor der Aufnahme mit der Samplerate von 44100 Hz aus dem Signal alle Anteile größer 22050 Hz ausfiltern (damit Voraussetzung (V) erfüllt ist) und wenn man das gemacht hat, kommt eben ein Amplitudenverlauf, wie in der sinc-Funktion heraus; diese lässt sich samplen und von einem guten DAC auch sehr präzise reproduzieren. Besser kann man es prinzipiell mit 44100 Samples pro Sekunde nicht machen.
Und jetzt noch dazu, dass die eingangs erwähnte Treppenfunktion, die man aus Samples einer Aufnahme gewinnt, keine gute Näherung an den kodierten Amplitudenverlauf ist: Das kann man zum Beispiel gut an einer Sinus-Schwingung leicht unterhalb der halben Samplerate und mit der maximalen Amplitude sehen, sagen wir eine mit 22040 Hz. Wenn man sich die Samples anschaut, dann sieht man, dass die in der Amplitude immer langsam auf- und abschwellen. Wenn man hierzu die Treppenfunktion bildet, dann sieht das so aus, als ob die Lautstärke des Signals auf- und abschwillt. Das ist aber falsch. Intuitiv könnte man denken, dass nur etwas mehr als 2 Samples pro kompletter Sinus-Schwingung diese 22040 Hz Schwingung nur sehr ungenau beschreiben, aber das stimmt nicht. Zusammen mit der Information, dass diese Samples ein Signal mit Bedingung (V) beschreiben, ist nach dem Sampling-Theorem das Ausgangssignal genau beschrieben. Das Auf- und Abschwellen, dass von der Treppenfunktion beschrieben wird, kann man erreichen, indem die 22040 Hz mit einer Sinus-Schwingung von etwa 22060 Hz (oberhalb der halben Samplingrate) überlagert wird. Umgekehrt, wenn man die Treppenfunktion in ihre Frequenzanteile zerlegt, dann hat man die Hauptkomponenten bei 22040 Hz und bei 22060 Hz. Letztere ist eben falsch und erzeugt das falsche lauter und leiser werden. Diesen (Aliasing-)Effekt haben wir weiter oben im Thread bei den Messungen des Audio Note CD-4 schon gesehen.
Für eine gute Rekonstruktion des Originalsignals müsste man eben auf die Treppenfunktion noch einen Brickwall-Filter wie oben beschrieben anwenden, der alle Signalanteile größer der halben Samplerate ausfiltert. Das Problem ist, dass wir nun aber ein analoges Treppensignal haben und ein extrem steiler Filter im Analogbereich kaum zu realisieren ist.
Wenn ich das richtig verstehe, begegnet ein Oversampling-DAC dem so: Zuerst wird das Signal mit einer höheren Samplingrate neu kodiert, sagen wir auf die vierfache Rate, also 176400 Hz. Dazu werden zwischen je zwei Samples drei Nullen eingefügt und unser oben beschriebener sinc-Funktion Filter (immer noch für die maximale Frequenz 22050 Hz, aber mit Samplerate 176400 Hz) angewendet. Wenn wir zu diesen Samples jetzt die Treppenfunktion bilden, dann liegen die noch auszufilternden Frequenzen oberhalb 88200 Hz (Hälfte von 176400). Da das Nutzsignal nur Frequenzen bis 22050 Hz enthält, können wir im Analogbereich also jetzt einen viel weniger steilen Filter verwenden, der bis 22050 Hz alles durchlässt und dann bis 88200 Hz stark abfällt.
Mir ist klar, dass ich einigen der Mitdiskutierenden nicht Neues erzählt habe, aber vielleicht hilft es auch einigen zum besseren Verständnis.
Viele Grüße,
Frank