play-mate hat geschrieben:
Upsampling ist bei cPlay und dem "Secret Rabbit Code" -Interpolator gar nicht eine Frage von einer Verdoppelung (oder mehr) der Samplingrate.
Auch nicht das verschieben des Anti-Aliasing Filters.
Oder gar Jitter.
Es geht darum das Zeitliche Eintreffen der analogen Signale bei der Aufnahme (A/D Wandling) und diese analogen, elektrischen Spannungswerte wiederherzustellen.
Da die Einspeisung dieser elektrischen Signale ununterbrochen analog sind, kann man auch diese nicht nur in "Sampling-Schritten" wiederherstellen. Ein erkundetes Dilemma bei Digital Technik.
Wenn man aber die Signalwerte verdoppelt oder vervierfacht kann man eine Interpolation (also die Verknüpfung) des originalen Signals Mathematisch errechnen und dabei die Wahrscheinlichkeit der zutreffenden Punkte der analogen Aufnahme viel genauer berechnen.
-und auch analoger ausgeben.
(...ich weiss, es hört sich wie Wodoo an !)
Die erstellte Spannungswandlung im D/A Converter verläuft dabei aber glatter und weniger kantig.
Theoretisch könnte man sagen das die Upgesampelte und danach berechnete "Wahrscheinlichkeit" auf jeden Fall eine Verzerrung des Original ist, aber genau dass ist der Punkt :
Eine übliche lineare 1:1 Interpolation ist auch nicht treu zu den Daten die der A/D Wandler in der Datei eingeschrieben hat, aber der Vorteil von einer "Secret Rabbit Codierung" besteht in den "Rundungen" eines hochgerechnetes Signals. Dabei trifft eine höhere, und eigentlich exaktere Anzahl von Samples auf die genaueren Zeitpunkten im D/A Wandlerchip ein.
Wenn dies jemand kapieren kann, ist Uli Brüggemann doch der Jenige !!
Cics beschreibt das vollständig und dokumentiert es auch, aber manchmal braucht es auch ein wenig....eh, Verständnis um verstanden zu werden.
Oops, das sieht nun doch so aus wie ein
Hornissennest. Da wird kräftig durcheinandergewürfelt.
Also:
1.
Bei der hier angesprochenen Interpolation werden Zwischenpunkte ermittelt. Bei Verdoppelung also ein Zwischenpunkt zwischen zwei Abtastwerten, bei Vervierfachung 3 Zwischenpunkte zwischen zwei Abtastwerten. Das entspricht genau einer Abtastratenwandlung. Bei einem Umrechnen von 44.1 kHz auf 96 kHz, wie bei cics dargestellt, gibt es dann ein ungeradzahliges Verhältnis, die Lage der Abtast- und Interpolationspunkte ändert sich entsprechend.
2. cPlay verwendet den Secret Rabbit Code (SRC = Secret Rabbit Code = Sample Rate Conversion = Abtastratenwandlung = Upsampling mit erzeugten Zwischenwerten), der Autor, Erik de Castro Lopo, verweist klar darauf, dass seine Methode auf der sinc-Interpolation beruht (wir wollen ja die best quality). In puncto Theorie verweist er weiter auf die Seite von Julius O. Smith III, auf der es zuhauf Grundlagen gibt. Als Beispiel seien insbesondere die Bilder auf
https://ccrma.stanford.edu/~jos/resampl ... ation.html genannt. So, und wenn man sich dann die Filterkernels von SRC selbst anschaut (ich hab mir die Mühe gemacht!), das sind bandbreitenbegrenzte sinc-Funktionen, wobei das best quality Filter ein Kernel der Länge 680478 taps ist, also sehr lang (die Tabelle bei SRC hat nur 340239 taps, da der Kernel symmetrisch ist, brauchts nur eine Hälfte). Die sinc-Funktion ist im Prinzip unendlich lang, durch das Abschneiden und Fenstern bewegt man sich vom idealen Filter weg. Und wie bereits geschrieben, erzeugen immer kürzere Filter immer mehr Ungenauigkeiten.
3. Also, die Interpolation erzeugt im Digitalbereich Zwischenpunkte. Beispiel Verdoppelung: das Verfahren ist simpel, jeder Zwischenpunkt wird erstmal zu Null gesetzt. Nun wird das Musiksignal einschliesslich der Zwischenpunkte mit dem sinc-Filter gefaltet. Das ist nichts anderes als das beschriebene Aufsummieren der sinc-Kurven bei JOS. Und voilá, das Ergebnis zeigt die interpolierten Amplitudenwerte, welche das Musiksignal eben runder, glatter erscheinen lassen. So wie es cics darstellt.
4. Das findet nun alles im Digitalbereich statt. D.h. dass im Vergleich zum Originalsignal der DA-Wandler eben mehr Punkte erhält. Die entsprechend der Signaltheorie unter der Berücksichtigung der Bandbreitenbegrenzung (durch das Aliasing-Filter beim AD-Wandeln ) nun dem DA-Wandler ein einfacheres Rekonstruieren des Analogsignals erlauben. Ein DA-Wandler ist im Prinzip als eine Sample and Hold-Konstruktion darstellbar. Der analoge Ausgangswert entspricht der Amplitude des Digitalsignals und zwar für eine Abtastung. Das Ergebnis wäre streng genommen eine Treppenfunktion, also die schlechteste Interpolation. Wenn man nun die Stufen im Digitalbereich enger zusammenlegt, wird das Ergebnis besser. Aber man erkennt, dass das nicht ausreicht, man braucht noch ein analoges Glättungsfilter hinter dem DA-Wandler. Die Stufen sind ja nicht beliebig klein zu wählen, die Abtastrate würde zu hoch. Das analoge Glättungsfilter muss sich nun an der halben Abtastrate orientieren. Auch hier gibt es die widersprüchlichen Forderungen: möglichst steil, keine Phasendrehungen, keine negative Beeinflussung des Musiksignals.
5. Und nun des Pudels Kern:
a) Originalsignal sei 48 kHz
Für die DA-Wandlung braucht es ein analoges Filter bei 24 kHz, um die volle Bandbreite zu übertragen, aber auch die Treppenstufen zu entfernen (was sich ansonsten in Aliasing, Klirr etc. auswirkt). Da das analoge Filter üblicherweise minimalphasig ist, entstehen auch noch Phasendrehungen. Das analoge Filter liegt am Rande des Hörbereichs, lässt aber aufgrund seiner Begrenztheit noch hörbare Artefakte zu.
b) das Originalsignal werde nun im Digitalbereich auf 96 kHz hochgesampelt. Das sinc-Filter kann beliebig genau gewählt werden, also best quality. Das Ergebnis ist ein "runderes" Signal im Digitalbereich vor der Wandlung. OBWOHL die interpolierte Information auch wiederum nur Frequenzen bis 24 kHz enthält UND NICHT MEHR !. Aber jetzt braucht es für die DA-Wandlung nur noch ein Analogfilter für 48 kHz !! Welches damit ausserhalb des Hörbereichs liegt.
6. Fazit:
Das Upsampling erlaubt es, analoge Filter beim DA-Wandeln zu verwenden, welche weiter ausserhalb des Hörbereichs liegen. Zuvor muss im Digitalbereich ein Interpolationsfilter angewandt werden, dessen Qualität über die Qualität des Interpolationsverfahrens bestimmt (Hinweis: wir haben hier noch nicht über die Rechengenauigkeit philosophiert, ein zusätzliches Thema). Alles in allem kein Voodoo, nur mathematisch angewandte Signaltheorie.
Nun fliegt, Ihr Hornissen
Grüsse, Uli