Audio == unbekanntes Gebiet.
Gib mir eine Maschinen Steuerung und ich kann mit reden.
Das ganze ist zum lernen und da muss man halt auch mal mit billigen fragen ankommen.
Ist das Verfahren denn genau so in einem samplerate converter drin oder machen die das anders?
Wie wäre es denn wenn ich mit 44.1 ankomme und mit 48 raus will?
Da kann man ja nicht mal eben *4 arbeiten.
Also mal 4.
Jetzt könnte ich halt einfach jeweils die 3 fehlenden Werte Lineal
ausrechnen, aber ich vermute das wird nicht sauber.
Naja, kommt halt drauf an, was du so haben willst. Kann man schon so machen. Zauberwort: CIC-Filter. Wenn die "Kaskade" nur aus 1 Kamm und 1 Integrator besteht, ist das sowas wie ein Lineal. Bei 2 oder mehr wird aus dem Lineal dann ein Kurvenlineal...
Kennt jemand einen guten open-source samplerate converter der das kann?
Ober geht das vielleicht recht simpel mit was anderem?
Es gibt z.b. die libsamplerate - kommt halt drauf an, auf was fuer einer HW du das machen willst.
Bei ganzzahligen Vielfachen kannst du unbesorgt linear interpolieren.
Das macht jeder DSP-Algorithmus so, der die zeitliche Aufloesung
eines Signals etwas aufhuebschen will (oder muss).
Ein 48 kHz/44.1 kHz Konverter ist dagegen ein wahres Monster.
Und es kann sicherlich keiner behaupten, dass die ganze Rechnerei
dem Signal besser taete...
Na dann lasse ich mal die Finger von 44.1 auf 192.
Ich muss meinen armen Cortex m4 ja nicht quälen. War halt nur so eine Idee wenn man schon mal dran ist.
Das auffüllen mit Nullen ist interessant. Das sowas funktioniert hätte ich nicht gedacht. Ob 32 bit int da reichen? Oder float, double, 64 bit int.
Den cic muß ich mir noch ansehen.
Ich bin davon ausgegangen das sowie ich linear zwischen den Werten arbeite, ich mir oberwellen rein baue. Schließlich kommt selten ein sauberes 1khz Signal an, ausser beim messen.
Das reicht ja nicht. Da muss man anschliessend noch filtern.
Wenn du bzgl. der einfachen linearen Interpolation Zweifel hast,
steht dir noch die ganze Palette besserer Interpolationsmethoden
zur Verfuegung. Z.B. Splines, ...
Das mit dem Filter habe ich schon verstanden, den brauche ich immer und habe ich jetzt nicht noch mal erwähnt.
Ich probiere es einfach mal aus dann werde ich ja sehen ob ich mit 0 oder linear auffüllen sollte. Aber wenn ich euch richtig verstanden habe spielt das nicht so eine große Rolle, solange ich nur ein *4 mache.
Ich muss meinen armen Cortex m4 ja nicht quälen. War halt nur so eine
Idee wenn man schon mal dran ist.
Da koennte evtl. die libsamplerate sich sogar drauf kompilieren lassen...
Das auffüllen mit Nullen ist interessant. Das sowas funktioniert hätte
ich nicht gedacht. Ob 32 bit int da reichen?
Ja, das auffuellen mit Nullen ist halt die "reine" Lehre. Danach aber entsprechend Tiefpassfiltern und dann "einfach nur" jedes x-te Sample verwenden. So geht Samplerateconversion auf dem Papier. Aber in der Praxis laesst sich da viel Rechnerei einsparen.
Ich schaetz fuer 44.1->192 Conversion wirste z.b. eine Tabelle brauchen mit 640 Eintraegen fuer die jeweiligen FIR-Koeffizienten und dann musste fuer jedes Ausgangssample halt mal ein FIR mit den Koeffizienten aus der Tabelle und den Eingangssamples berechnen. Also z.b. 5..X MAC-Operationen (X je nach Audiphilitaet) fuer jedes Ausgangssample. Wird schon im Rahmen bleiben. Und wahrscheinlich kannst du dann aus der selben Tabelle auch die Koeffizienten nehmen, wenn du 48->192 konvertieren willst. Dann greifst du halt immer nur auf die selben 4 Tabelleneintraege zu.
Messtechnisch ist die Frage interessant: Wieviel Dreck der durch Interpolation eingebauten Aliasspektren wird durch die Dezimation in dein Ausgangspassband gespuelt und kannst du damit leben?
Was vielleicht auch nicht ganz unwichtig ist: Wie sind denn die Master/slave
Taktverhaeltnisse? Also du kriegst vermutlich eine Bitclock angeliefert fuer 48 (oder 44.1) kSamples/sec. Kriegt dann deine HW eine vervierfachung des Taktes hin und der Ausgang deines Converters ist dann der Master fuer die weitere Verarbeitung oder kommt da von Aussen auch irgendwoher eine Masterclk fuer die 192kSamples Domain? Die dann vielleicht auch mal so ein klitzekleinesbisschen daneben liegen kann? So dass du ggf. auch mal 47.99999kS/s -> 192.00001kS/s Conversion machen muesstest?
Ein 48 kHz/44.1 kHz Konverter ist dagegen ein wahres Monster.
Nun ja, man braucht einen 160:147 Übersetzer. Das ist noch überschaubar. Ohne trickreiche Filter, also einfach mit Überabtastung wäre wohl technisch am Einfachsten, braucht halt eine Abtastfrequez von 7MHz.
http://96khz.org/htm/resampler4448.htm
Aber ich meine, die waren gar nicht Gegenstand der Frage, oder?
Das auffüllen mit Nullen ist interessant. Das sowas funktioniert hätte
ich nicht gedacht. Ob 32 bit int da reichen?
Ja, das auffuellen mit Nullen ist halt die "reine" Lehre.
Und diese funktioniert nur sehr theoretisch, bzw:
Danach aber entsprechend Tiefpassfiltern
... und zwar GUT tiefpassfiltern. Was in dem gelinkten Beitrag oben zu sehen ist, würde ich mal als optische Täuschen einstufen. Da hat jemand das Ergebnis vorweg genommen (die grünen Punkte) und frech 1/5 Amplitude eingezeichnet. Das faule Ei, dass sich dahinter verbirgt, ist die extreme Filtergüte, die dafrü gebraucht wird.
Ich empfehle für die meisten Fälle immer die Interpolation UND die Filterung, wie man sie für das zero padding angewendet hätte. Vereinfacht kann man sich das lineare Interpolieren als ein Vorfiltern vorstellen.
Messtechnisch ist die Frage interessant: Wieviel Dreck der durch
Interpolation eingebauten Aliasspektren wird durch die Dezimation in
dein Ausgangspassband gespuelt
Die Dreiecke sind erstmal kleine ganzzahlige Vielfache der Basisfrequenz, die durch die Punktabstände definiert ist. Die dadurch bedingte Abweichung von einer "kurvigen" idealen Interpolation ist von der Amplitude schon mal sehr gering und es braucht dann nicht viel um die wegzufiltern.
Für den TE ist wichtig: Der finale Filter, der auf die 192kHz-Daten anzuwenden wäre, darf natürlich nach wie vor nur 16-18kHz durchlassen und nicht etwa 30-50kHz wie man es bei 192kHz Daten anwenden würde.
Auch interessant: Die entstehenden Rundungen nach der Interpolation dürfen gerne gedithert werden, damit das Signal nicht verschlechtert wird und neue tieffrequente Spektralanteile verpasst bekommt.
So ich habe jetzt mal einfach die 3 fehlenden Werte Lineal rein gerechnet und einen Filter auf die Daten los gelassen. Das ganze mit 32bit int und vorher um 8 bit verschoben.
Das Ergebnis ist recht gut für den Aufbau.
Ich werde jetzt noch ein paar Tests machen mit float und anderen festkomma Versionen. Vielleicht auch noch mit einem anderen Filter, da gibt es ja genug, incl web Seiten die einem alles berechnen.
Wie schon gesagt lasse ich die Finger vom ungeraden upsampling. Den empfohlenden Code habe ich mir angesehen und das ist aktuell noch eine Nummer zu groß für mich. Aber ein Thema was interessant ist und ich werde mich da rein arbeiten, nur nicht für dieses Projekt.
Lass den (Interpolationsfilter) doch probeweise mal weg.
Wenn du korrekt interpoliert hast, wirst du keinen Unterschied hoeren.
Sicherlich erfaehrt das Signal durch die Interpolation Unstetigkeiten.
Aber die fuehren hoechstens zu spektralen Anteilen oberhalb
des interessanten Spektrums.
Sicherlich erfaehrt das Signal durch die Interpolation Unstetigkeiten.
Das ist auch unrichtig. Die Interpolation führt nicht zu Unstetigkeiten. Sie hat aber ein anderes Problem, nämlich neue spektrale Anteile. Aber:
Aber die fuehren hoechstens zu spektralen Anteilen oberhalb
des interessanten Spektrums.
Das ist nur scheinbar richtig. Der Fehler, der gemacht wird, ist abhängig von der Abtastung der Stützstellen. Das Spektrum des interpolierten Signals wird mit dem der Abtastung gefaltet, wobei auch tiefere Frequenzen entstehen, weil das dadurch entstehende Rauschen an Filtern gemittelt wird.
Ich empfehle für die meisten Fälle immer die Interpolation UND die
Filterung, wie man sie für das zero padding angewendet hätte.
Vereinfacht kann man sich das lineare Interpolieren als ein Vorfiltern
vorstellen.
Das ist jetzt aber eine praktische Herangehensweise, oder? Denn theoretisch fügt man durch die Interpolation immer Spektralanteile hinzu, die man nicht mehr vollständig durch Filterung entfernen kann. Das passiert durch einfügen von Nullen nicht.
Abgesehen davon helfen die Nullstellen, die Filterbänke klein zu halten, die doch sonst beim Upsampling in den GHz Bereich extrem unhandlich werden, wie es so manche Samplerateconverter machen.
Abgesehen davon helfen die Nullstellen, die Filterbänke klein zu halten,
Wie kann man sich das als Analogelektroniker vorstellen, was in diesem Fall eine Filterbank ist und warum sie durch bestimmte Daten "klein gehalten" werden kann?
Das ist noch schlechter als die Interpolation, weil das
so entstehende Rechteck mehr Oberwellen und Fehler hat.
Nie angeben, welche Fälle man miteinander vergleicht!
Der Leser könnte eventuell folgen...
Das ändert nichts an der Qualität
Es ändert sich sehr wohl das Signal.
Sicher nicht: Gib das Originalsignal mit der originalen
Sample-Rate über einen (fehlerfreien) D/A-Wandler aus,
und dann gib jeden Abtastwert viermal mit dem vierfachen
Sample-Takt über denselben Wandler aus.
(Annahme dabei: Der Wandler gibt keine -- nur in der
Phantasie existierenden -- Dirac-Stöße aus, sondern hält
den alten Abtastwert solange, bis der neue kommt, wie das
ja reale Wandler auch tun.)
Es entsteht exakt dasselbe Zeitsignal.
Also kann die Qualität sich nicht geändert haben.
Das Auffüllen ist die einfachste und schlechteste
Möglichkeit der Interpolation.
Das mag ein -- aber das war nicht die Aussage.
Die Aussage war: Auch einfaches Wiederholen der Samples
fällt keinesfalls hinter die Qualität des Originalsignales
zurück.
Man erkennt auch, dass selbst lineare Interpolation
die Energie der Quantisierungsverzerrungen schon
deutlich reduziert, denn die Abweichungen vom idealen
Verlauf werden zeitlich verkürzt und dadurch auch in
ihren Amplituden verringert.
Dass bessere Interpolationsmethoden zu noch besseren
Ergebnissen führen, wurde nicht bestritten.
Denn theoretisch fügt man durch die Interpolation
immer Spektralanteile hinzu, die man nicht mehr
vollständig durch Filterung entfernen kann.
Das passiert durch einfügen von Nullen nicht.
Das ist m.E. eine theoretisch vielleicht richtige,
praktisch aber unsinnige Betrachtungsweise: Natürlich
verarbeitet man in der digitalen Domäne Zahlenwerte,
die einzelnen, isolierten Zeitpunkten zugeordnet sind;
das mag die Interpretation als Dirac-Stöße nahelegen.
Der D/A-Wandler gibt aber keine Dirac-Stöße aus,
sondern produziert eine Treppenspannung, bei der der
alte Abtastwert so lange gehalten wird, bis der neue
kommt.
Einfaches Wiederholen modelliert die realen Verhältnisse
deutlich besser als Einfügen von Nullen, weil kein realer
Wandler auch nur annähernd Dirac-Stöße erzeugt.
Das ist jetzt aber eine praktische Herangehensweise, oder? Denn
theoretisch fügt man durch die Interpolation immer Spektralanteile
hinzu, die man nicht mehr vollständig durch Filterung entfernen kann.
Völlig richtig, in jedem Fall wird Information hinzugefügt. Man muss aber 3 Dinge berücksichtigen:
Wie oben schon von grummler angeführt, ist es so, (Zitat) "dass selbst lineare Interpolation die Energie der Quantisierungsverzerrungen schon deutlich reduziert" ... und diese Interpolation mithin als eine Art Vorfilter zu dem Filter gesehen werden kann, welches man für die Rekonstruktion benötigt.
Man eben jenes angesprochene Rekonstruktionsfilter erst einmal bauen muss und dass dieses ziemlich gut sein muss, will man die Fehler, die durch die Nullstellen hineinkommen, komplett weginterpolieren
Von sehr Vielen übersehen wird, dass das Hinzufügen einer "0" zu einem Datenstrom nur dann wirklich keine Information hinzufügt, wenn der Bias dieses Datenstrom auch "0" ist, es sich also um einen symmetrischen Datenstrom handelt. Dies impliziert wiederum 2 weitere Aspekte:
a) Bei Datenströmen wie Bilddaten, kann man so (einfach) nicht interpolieren!
b) Der Erfassungsbereich des Filters muss ausreichend groß sein, um den tatsächlichen Bias der Daten zu erfassen, bzw. braucht ein Bandpassverhalten, um diese niederfrequenten Anteile zu unterdrücken- oder korrekt formuliert, sie nicht falsch mitzuschleppen.
Und genau das ist das Problem der Filter: Sie arbeiten eben nicht so, dass sie die Theorie erfüllen. Durch das Interpolieren zwischen nur 2 (oder wenigen Punkten) respektive dem Vervielfachen der Information wird genau das vermieden. Es bildet sich maximal eine kleine Restmenge an Fehler aus, die in Summe erheblich kleiner ist, als das, was die "unvollständigen" Filter einschleppen.
Daher ist die Interpolationsart immer der Aufgabenstellung anzupassen und kann meistens pauschal nicht skizziert werden.
Als Beispiel hier ein Bild mit den 3 angesprochenen Möglichkeiten. Ich musste erstmal etwas arbeiten, denn das Original enthält (m)eine vierte, die ich an der Stelle nicht posten möchte :-) Die gibt es als Core für meine lieben Kunden.
Erklärung Zum Bild:
Abgesehen von der Art, wie Excel die Daten darstellt und interpoliert, sieht man schon, wie die Fehler aussehen und wo der Hase im Pfeffer liegt:
Orange zeigt die Abweichung von einem idealen Sinus, wie sie sich durch das bei symmetrischen Datenströmen mit perfektem Nullpunkt richtig(st)e Auffüllen mit Nullen ergibt. Die Fehler reichen bis zur vollen Amplitude und das möchte man nicht wirklich wegfiltern. Es geht, wenn die SV darauf ausgelegt ist und ist in manchen Anwendungsfällen, wenn gezielt mit den Daten mathematisch, also in Software, weitergearbeitet werden soll, auch "Pflicht"!
Die Türkise zeigt die Abweichung bei Werteduplikation. Es entstehen die klassischen gerundeten Sägezähne, die bei Klangerzeugung übrigens sehr gerne genommen wird, da oberwellenreich.
Das grüne ist die Abweichung bei linearer Interpolation - allerdings mit 10-facher Verstärkung, weil man sie sonst im Bild nicht sehen würde!
Hinweis: Wenn man die Kurven optisch vergleicht, muss man gedanklich den Sinus der inbegriffen ist, "abziehen", weil der ja Signal ist. Das gilt insbesondere für die sich bildende Verschiebung bei den interpolierten Kurven. Wollte man das richtig darstellen, müsste man den Sinus phasenrichtig abziehen. Man muss also den hochfrequenten Anteil ansehen.
So oder so ist die linear interpolierte Kurve die mit Abstand beste und verzerrungsärmste. Ich nutze die in meinem Synth für das user-RAM, weil dort eine beliebige Welle drin liegen kann und fahre das Ganze mit 192kHz ab. Durch den Post-Filter ergibt sich für eine Sinuswelle auch bei der höchst darstellbaren Frequenz, eine Qualität mit besser 72dB (sfdr), obwohl dann nur noch 4*8 Punkte arbeiten und die Welle aussieht, wie angenagte Dreiecke.
Noch eines zum Beitrag oben:
Gerade der Punkt 3b) ist ein gerne übersehener Aspekt, der immer wieder zu Diskussionen Anlass gibt, wenn man sich die Signalverarbeitung so ansieht, die Manche ausbrüten und sich mit dem jeweiligen Macher unterhält. Da scheint bei Vielen die Theorie nicht so 100% verstanden worden zu sein, oder sie können sie nicht anwenden. Ich weis nicht, wo und was die Leute heute so studieren, aber uns wurde das SO! beigebracht - inklusive der vielen Fallunterscheidungen und dem Durchkauen von Anwendungsfällen. Das taucht auch in guten Lehrbüchern so auf - trotzdem sieht man viele Lösungen mit ungeschicktem upsamplen (und auch downsamplen, siehe den Dezimations-thread). Möglicherweise kommt das Betrachten der vielen Optionen bei der heutigen, verkürzten Hochschulausbildung auch einfach zu kurz. Wäre mal interessant zu wissen, was da heute vermittelt wird.
Wie oben schon von grummler angeführt, ist es so, (Zitat) "dass
selbst lineare Interpolation die Energie der Quantisierungsverzerrungen
schon deutlich reduziert" ... und diese Interpolation mithin als eine
Art Vorfilter zu dem Filter gesehen werden kann, welches man für die
Rekonstruktion benötigt.
Um mal eine "plausible" nicht-mathematische Erklärung zu geben, warum das falsch ist:
Du fügst zu jedem korrekt aus dem Original-Datenstrom stammenden Sample drei durch lineare Interpolation fehlerbehaftete Samples hinzu. Dann folgt ein Antialiasing-Filter - das grob gesagt - die perfekt geglättete Kurve durch alle Eingangswerte zieht.
Würde dieses Filter nur die aus dem Original-Datenstrom stammenden Samples sehen, wäre das Ergebnis perfekt. Aber nun überwiegen drei fehlerbehaftete Samples und ein perfektes Ergebnis ist völlig ausgeschlossen.
Fügst Du hingegen Nullen ein (zur Terminologie: keine Nullstellen!), so wird durch das Antialiasing-Filter nur der Ausgangspegel geviertelt, aber ansonsten ist es, als wären nur die aus dem Original-Datenstrom stammenden Samples da. Es entsteht also eine perfekt geglättete Kurve.
Lehre: Wir konzentrieren uns aufs Design des Anti-Aliasing-Filters und lassen jeden systemtheoretisch unsinnigen Zwischenschritt wie Originalsamples wiederholen oder linear interpolieren.
Tatsächlich reichen drei einfache Filter mit je vier Koeffizienten, um die jeweils drei Zwischenwerte im Sinne eines brauchbaren Anti-Aliasing-Filters hinzuzufügen. Das Analogfilter darf dann sehr einfach ausfallen und der Klang ist hörbar besser als bei der Rekonstruktion 0ten und 1ten Grades (um das handelt es sich nämlich beim Wiederholen bzw. linear Interpolieren).
Wie oben schon von grummler angeführt, ist es so,
(Zitat) "dass selbst lineare Interpolation die Energie
der Quantisierungsverzerrungen schon deutlich reduziert"
... und diese Interpolation mithin als eine Art
Vorfilter zu dem Filter gesehen werden kann, welches man
für die Rekonstruktion benötigt.
Um mal eine "plausible" nicht-mathematische Erklärung zu
geben, warum das falsch ist:
Möglich, aber unwahrscheinlich.
[...]
Fügst Du hingegen Nullen ein [...], so wird durch das
Antialiasing-Filter nur der Ausgangspegel geviertelt,
aber ansonsten ist es, als wären nur die aus dem
Original-Datenstrom stammenden Samples da. Es entsteht
also eine perfekt geglättete Kurve.
Warum das zwar theoretisch richtig, praktisch aber
irrelevant ist, habe ich weiter oben zu erklären versucht.
Hast Du das gelesen und verstanden?
Tatsächlich reichen drei einfache Filter mit je vier
Koeffizienten, um die jeweils drei Zwischenwerte im
Sinne eines brauchbaren Anti-Aliasing-Filters
hinzuzufügen.
Jetzt willst Du mich verklapsen?!
Dir ist nicht zufällig aufgefallen, dass nach dem Einfügen
der Nullen die erste Stufe gleitender Mittelwerte gerade
die von Null verschiedenen Samples wiederholt -- mithin
also genau die von Rolf verschmähte Methode darstellt.
Die zweite Stufe gleitender Mittelwerte bildet eine
lineare Interpolation; die dritte interpoliert demgemäß
quadratisch.
Das Analogfilter darf dann sehr einfach ausfallen und
der Klang ist hörbar besser als bei der Rekonstruktion
0ten und 1ten Grades (um das handelt es sich nämlich
beim Wiederholen bzw. linear Interpolieren).
Sachlich richtig -- aber argumentativ völlig unsinnig:
Dass eine quadratische Interpolation bessere Ergebnisse
liefert als eine konstante oder lineare, das ist nun
wirklich eine Binsenweisheit -- und auch von niemandem
hier bestritten worden.
Oh je was habe ich da wieder angestellt.
Jetzt streiten sich die Experten darüber wie man es richtig macht.
Ich habe inzwischen so einiges getestet und laut Spektrum habe ich angeblich mit dem linearen auffüllen keine zusätzlichen Frequenzen.
Die schlechteste Methode war den Wert einfach 4 mal auszugeben.
Aber das kann mit einem anderen Filter schon wieder anders sein.
Da bin ich jetzt am Testen.
Es ging um lineare Interpolation, die der TE "lineal" nennt <->
Fortführung des Wertes durch Kopieren.
Da hat aber jemand "lineare Interpolation" ueberhaupt nicht verstanden.
Sicherlich erfaehrt das Signal durch die Interpolation Unstetigkeiten.
Das ist auch unrichtig. Die Interpolation führt nicht zu Unstetigkeiten.
Wenn ich linear interpoliere, ist die enstehende Ausgangskurve aus
einzelnen Abschnitten zusammengesetzt. Der Uebergaeng zwischen zwei
dieser Geradenabschnitte wird in der 1. Ableitung ein Sprung sein.
Das ist sehr wohl ein Unstetigkeit.
Aber die fuehren hoechstens zu spektralen Anteilen oberhalb
des interessanten Spektrums.
Das ist nur scheinbar richtig. Der Fehler, der gemacht wird, ist
abhängig von der Abtastung der Stützstellen. Das Spektrum des
interpolierten Signals wird mit dem der Abtastung gefaltet, wobei auch
tiefere Frequenzen entstehen, weil das dadurch entstehende Rauschen an
Filtern gemittelt wird.
Und phantasiert ueber "tiefere Frequenzen" bei einer Faltung.
Da die Interpolation mit einem *ganzzahligen" Vielfachen der
originaeren Abtastrate erfolgt, ist gerade das ausgeschlossen.
Keiner wuerde auf die voellig abwegige Idee kommen, mit einem
Filter mit anderer Samplerate zu filtern. Ausser vielleicht,
naja wer wohl.
Den groessten Fehler der linearen Interpolation kann man an einem
24 kHz (Sinus-)Signal abschaetzen, dass mit 48 kHz abgetastet wurde
und nun fuer eine Samplerate von 192 kHz linear interpoliert wird.
Das abgetastete Signal besteht da nur aus einem Minimal- und einem
Maximalwert. Ein Rechteck, aus dem das Rekonstruktionsfilter
dann wieder einen Sinus ausrechnet.
Wird das linear hochinterpoliert, ergibt sich ein Dreieck mit
den bekannten Oberwellen oberhalb der urspruenglichen Grundwelle.
Die Oberwellen liegen dann bei 48, 72, ... kHz.
Auch von diesen Oberwellen bleibt nach dem Rekonstruktionsfilter
am Ausgang nichts mehr ueberig.
Eine separate Filterung der Interpolation ist zumeist auch
ueberfluessig.
Auf weiteren Schwachsinn gehe ich gar nicht ein.
Wer es besonders gut meint, und mit "Nullen auffuellt", darf dafuer
besonders gut filtern.
Der Prediktor 0. Ordnung, also das blosse Halten des Samplewertes
ist nicht lohnenswert, weil die lineare Interpolation so einfach ist.
Reale Wandler arbeiten aber mit Verrauschen, Oversampling, um ihr
Anti-Aliasing-Filter passend anzusteuern.
Ja das Oversampling ist genau der Punkt um den es hier geht.
Aber Rauschen werde ich nicht dazu tun.
laut Spektrum habe ich
angeblich mit dem linearen auffüllen keine zusätzlichen Frequenzen.
Die werden dann wohl unter der Messgrenze liegen :).
Jetzt streiten sich die Experten darüber wie man es richtig macht.
Die Experten streiten da eigentlich nicht darüber, wenn sie die Theorie verstanden haben und die Praxis richtig anwenden. Streit gibt es nur bei denen, die das Thema falsch beleuchten :-)
Ich habe inzwischen so einiges getestet und laut Spektrum habe ich
angeblich mit dem linearen auffüllen keine zusätzlichen Frequenzen.
Doch du hast die, du siehst sie nur wahrscheinlich nicht, weil sie so gering sind. Siehe dazu mein Diagramm oben und die Tatsache, dass die grüne Fehlerkurve Faktor 10 verstärkt ist.
aber ansonsten ist es, als wären nur die aus dem Original-Datenstrom
stammenden Samples da.
Da ist dein erster Denkfehler: In der neuen Zeitdomäne werden diese Samples so behandelt, als seien sie diskrete Werte und mit den neuen Zeiten eingefügt. Damit entstehen zwei Fehler:
a) Es entsteht ein AMplituden / Zeitsprung, der nur auf einen Übergang verteilt ist
b) Die ursprünglichen Samples sind ebenfalls Mittelwerte aus Zeitintegralen und repräsentieren Durchschnittswerte über Zeitbereiche. Es kommt also zu einer doppelten Verschmierung, die aber nicht homogen ist.
Bei einer linearen Interpolation ist das hingegen homogen - wenn auch systematisch Fehlerbehaftet.
Tatsächlich reichen drei einfache Filter mit je vier Koeffizienten, um
die jeweils drei Zwischenwerte im Sinne eines brauchbaren
Anti-Aliasing-Filters hinzuzufügen.
Da ist der zweite Denkfehler:
Die Interpolation - egal wie sie formuliert ist - ist nicht das AA-Filter!
Lehre: Wir konzentrieren uns aufs Design des Anti-Aliasing-Filters
Selbiges ist immer ein elektronisches, gepaart mit einer entsprechenden Ansteuerung durch Oversampling und Vorbehandlung der Daten.
Um es nochmal zusammenzufassen:
Die Theorie, Nullen einzufügen ist grundsätzlich richtig, führt aber im Regelfall zu einem Bedarf an Filterung, der in der Praxis nicht leistbar ist. Bei Audio z.B. wo klassisch mit 48kHz abgetastet wird und damit fast kein headroom zu den Nutzfrequenzen besteht, ist es praktisch unmöglich, einen guten Filter zu bauen. Wenn man dann so wie vorgestellt, ungünstig interpoliert, oder gar nicht, dann hat man Störspektren, die um Größenordnungen höher sind, als das minimale Gemüse, dass durch Vorinterpolation in den Datenstrom kommt.
Da hat aber jemand "lineare Interpolation" ueberhaupt nicht verstanden.
Was gibt es da zu interpretieren? Es war die Rede von linearer Interpolation zwischen zwei sample-Werten. Genau das wurde aufgegriffen. Welche Form der linearen Interpolation schweb dir vor?
in der 1. Ableitung ein Sprung sein.
Das ist sehr wohl ein Unstetigkeit.
In der ersten Ableitung, ja - davon war aber im original Post nicht die Rede.
Wir hatten die beiden Fälle "Werte vervielfachen" mit "Interpolieren" verglichen und ich (und andere) hatten das richtigerweise so dargestellt, dass die Werte-Vervielfachung die Unstetigkeit bildet und zwar die in der Kurve selber und nicht erst in der ersten Ableitung. In meinem Diagram sollte das plausibel dargestellt sein. Und so ganz nebenbei führt das Einsetzen von Nullen auch erst einmal zu Sprüngen und zwar zu ganz gewaltigen :-)
Also: Das Vorhandensein von Sprüngen ist theoretisch nicht unbedingt ein Problem, soweit es das aber praktisch ist (was es ist!), ist es bei linearer Interpolation ein geringeres Problem. Dass es mit einer quadratischen- einer spline oder noch weiterer Verfahren noch besser ist, wurde auch schon mehrfach angedeutet.
Da die Interpolation mit einem *ganzzahligen" Vielfachen der
originaeren Abtastrate erfolgt, ist gerade das ausgeschlossen.
Es ist aus drei Gründen nicht ausgeschlossen:
a) da Originalsample enthält bereits tieffrequente Komponenten infolge der erstmaligen Rundung, die sich durch die Interpolation weiter abbilden. Das ist der tieffrequente Rauschanteil im Signal.
b) durch das Interpolieren wird wieder ein Wert gebildet, der ebenfalls gerundet werden muss, was wiederum auch tieffrequente Komponenten erzeugt.
c) ein irgendwie interpoliertes Signal (auch ein perfektes) kann durch spätere nichtlineare verzerrende Komponenten Aliasfrequenzen erzeugen, die wieder unterhalb des ehemaligen Grenzbereiches in den Nutzbereich gespiegelt werden.
Diese 3 Punkte sind mitunter klein und vernachlässigbar, aber im Einzelfall eben nicht.
Auch von diesen Oberwellen bleibt nach dem Rekonstruktionsfilter
am Ausgang nichts mehr ueberig.
Wie allgemein bekannt ist, gibt es keine derartigen Filter mit idealer Sperrwirkung. Im Gegenteil: Gerade bei wenig headroom sind die Filter alles andere als ideal, weder im Durchlass- noch im Sperrbereich.
Damit vergibt man sich die Möglichkeit, das Störspektrum dort hin zu verschieben, wo es am Wenigsten stört. In der Regel wird man das Rauschen so bemessen, dass das Störspektrum, das durch Interpolation und Rundung eingetragen wird, nach oben geschoben wird, wo es dann (möglichst gut) gekillt wird - soweit es das AA-Filter eben kann. Unterlässt man das Rauschen hat man besonders viel Störanteil im niederfrequenten Nutzspektrum.
In der ersten Ableitung, ja - davon war aber im original Post nicht die
Rede.
Das wuerde ein gewisses Mindestmass an eigener Hirntaetigkeit voraussetzen.
Eine Sinuskurve mit "Knicken" drin, ist in meiner Begriffswelt unstetig.
Das mag nicht mit der mathematischen Definition zusammenfallen.
Sicher enthaelt das Quantisierungsrauschen auch "niederfrequente"
Anteile. Um das geht es aber gar nicht.
Durch eine Interpolation werden diese allein mit interpoliert
aber eben nicht erzeugt.
Der Rest der Deduktionskette ist damit fuer mich auch erledigt.
Wie allgemein bekannt ist, gibt es keine derartigen Filter mit idealer
Sperrwirkung. Im Gegenteil: Gerade bei wenig headroom sind die Filter
alles andere als ideal, weder im Durchlass- noch im Sperrbereich.
Erzaehl doch mal was neues.
ein 23.9kHz Signal
Ja, Fangfrage. Das koennte bei einem korrekt dimensionierten
Antialiasingfilter am Eingang da gar nicht auftauchen.
Im uebrigen habe ich keine Lust, ueber Signalanteile
die 1 oder 1/2 LSB betragen, weiter zu diskutieren.
Und selbst wenn es 2 LSB waeren, ein Audiofuehler wuerde den
Klang eines derartigen DAC vermutlich als besonders "luftig"
und "transparent" beschreiben.
Allgemein folgt der Energieinhalt natuerlicher Audiosignale
der Frequenz einer 1/f-Charakteristik. Damit sind sie die
allerbesten Kandidaten fuer eine lineare Interpolation.
Der TO hat ja mittlerweile auch die Brauchbarkeit fuer sich entdeckt.
Ob er an der Interpolation nun noch herumfiltert, ist mir schlicht egal.
Durch eine Interpolation werden diese allein mit interpoliert
aber eben nicht erzeugt.
In dem Punkt muss ich mich jetzt selbst korrigieren.
Natuerlich ist auch eine Interpolation schlussendlich der
Quantisierung unterworfen. Das kann natuerlich ein
zusaetzliches Quantisierungsrauschen im LSB-Bereich erzeugen.
Das ist aber den grundsaetzlichen Voraussetzungen geschuldet
und nicht der Interpolation als solche.
Die Theorie, Nullen einzufügen ist grundsätzlich richtig, führt aber im
Regelfall zu einem Bedarf an Filterung, der in der Praxis nicht leistbar
ist.
Das sehe ich anders. Gerade mit Nullung wird die Filterung einfach, weil sehr viele Samples 0 sind, also bei einem FIR-Filter nicht betrachtet werden müssen. Es kommt natürlich auf den Faktor an, um den man die Samplefrequenz erhöht. Gerade bei asynchronen Konvertern kenne ich das so, dass in den Gigahertz-Bereich hochgesetzt wird, um dann die Zielfrequenz durch Dezimation zu erreichen. Der Eingangsvektor für das Filter ist dann zwar extrem groß, berechnet werden müssen aber nur wenige, z.B. 64 Werte. Mit Interpolation ist das rechnerisch kaum zu schaffen.
Angenommen, es handelt sich um 15,77 kHz. Macht es das besser?
Was hindert dich, ein winziges Prograemmelchen zu schreiben,
dass einen Sinus von 15.77 kHz mit 48 kHz abtastet, darauf
dann eine lineare Interpolation anwendet, die aus 2 Stuetzstellen
dann noch 3 Zwischenwerte interpoliert?
Davon koenntest du dann ganz einfach einen mit 192 kHz abgetasteten
Sinus subtrahieren und dir hoechstselbst die Differenz ansehen.
Die muss natuerlich noch gefiltert werden.
Also alles raus, was den Ohren nicht gut tut und nicht mehr
hoerbar ist.
Jetzt last es mal gut sein.
Meine Frage ist sehr gut beantwortet worden und ich habe viele weitere Informationen die ich mir ansehen werde.
Mir persönlich ist es egal wie sich das Ganze bei 15.77 oder so verhält, das es besser ist 24khz mit 192 als mit 48khz abzutasten sollte klar sein. Genauso wie das man nichts an Informationen wirklich herzaubern kann. Weg ist weg und alles andere ist nur ein kaschieren, nur das sollte halt irgendwie brauchbar sein. Wobei wenn man einen sinus von 24khz nimmt hat man ja nicht viel Informationen bei 48khz Abtastung.
Das wuerde ein gewisses Mindestmass an eigener Hirntaetigkeit
voraussetzen.
Du meinst damit also, dass jemand erraten soll, was du mit deiner Aussage jeweils gemeint haben könntest und daß es sie sinngemäß umdeuten soll. Da kann man auch der Meinung sein, dass du dich einfach korrekter und richtiger ausdrücken solltest. 😄
Eine Sinuskurve mit "Knicken" drin, ist in meiner Begriffswelt unstetig.
Das ist halt einfach nicht richtig und zwar aus 2 Gründen, wie ich ausführen werde ...
Das mag nicht mit der mathematischen Definition zusammenfallen.
Das wiederum ist richtig. Die Interpretation deckt sich nicht mit der allgemeinen Interpretation. Die Mathematik ist da eindeutig. 😄
Es wäre aber schon hilfreich, wenn du dich an den offiziellen Begriffen und Deutungen orientieren würdest, zumal diese in diesem Fall Schulwissen sind.
Das gilt umso mehr, wenn du versuchst, etwas damit zu entkräften, denn du argumentierst hier konkret nicht nur mit einem Interpretationsfehler der Stetigkeit sondern auch einem inhaltlichen Denkfehler:
Die Stetigkeit, egal ob in der 1. 2, oder 3. Ableitung ist allein kein notwendiges Kriterium für eine mehr oder weniger gute Interpolation. Man kann sehr leicht Wellenbögen aneinanderfügen, die im Proportiional und auch im Differential stetig sind und trotzdem hörbare Artefakte machen, weil die inbegriffenen Frequenzen nicht zusammenpassen - siehe die Themen spektrale Signalrekonstruktion, Restauration bei Übersteuerung und Clippen, sowie Granularsynthese bei Klangerzeugung.
Die hier angeführte Unstetigkeit in der 1. Ableitung, die du bei Sinusknicken siehst, ist allein ein optisches Thema, denn zwischen den Punkten gibt es keine Geraden, die zusammenstoßen und einen Knick definieren. Es sind allesamt jeweils unstete, diskrete Punkte und damit hängt es einzig von der Qualitiät der Rekonstruktion und dem Wert der Punkte ab, wie diese Punkte interpoliert und in eine kontinuierliche Welle übertragen werden.
Will heißen (wie im vorherigen Posting schon ausgeführt): Alle Samples, die sich vom Vorgänger unterscheiden, erzeugen immer einen Knick - oder eben auch keinen, wenn man es diskret auffasst.
Wenn man nun weiterdenkt und den Knick interpretieren möchte, dann hätte das Vervielfachen 3x gar keinen und dann 100% Knick am Endpunkt, die lineare 50% an den Endpunkten und dazwischen keine und ein quadratische Interpolation würde die Knicke auf alle Stoßstellen verteilen.
Gerade das Beispiel 2 mit der linearen Interpolation, wo die beiden mittleren Punkte keinen Knick haben (weder im Proportional noch in der 1. Ableitung) zeigt, dass diese Punkte ein Problem erzeugen, was das Eintragen von Oberwellen angeht, weil sie bildlich gesprochen, die im Signal enthaltenen Oberwellen in unnatürlicher Weise in eine Gerade einpferchen.
Du hast zwar ein gewisses Wissen, aber leider einige Probleme in der Betrachtung der Problemstellung, die dir den Blick auf die Fakten verstellen und verhindern, dass du dein Wissen sinnvoll anwenden kannst. Du machst es dir bei bei allen Betrachtung zu einfach und lässt Details weg. Das muss ich leider auch hier feststellen:
Sicher enthaelt das Quantisierungsrauschen auch "niederfrequente"
Anteile. Um das geht es aber gar nicht.
Doch um die geht es durchaus, weil diese eben mit nichts mehr beseitigt werden können.
Durch eine Interpolation werden diese allein mit interpoliert
aber eben nicht erzeugt.
Sie werden aber falsch mitinterpoliert - nebst denen des eigentliches Signals und damit werden aus 2 Gründen weitere Abweichungen vom Ideal erzeugt.
Im uebrigen habe ich keine Lust, ueber Signalanteile
die 1 oder 1/2 LSB betragen, weiter zu diskutieren.
Das wäre insofern richtig, wenn es wirklich nur 1-2 LSBs wären und man nicht die Aufgabe hätte, in dem Bereich zu messen. Aber für den Audiobereich kann man schon nur teilweise so zulassen und spätestens bei der Prozessierung von Daten aus Radar-, MRT- oder Satelitensignalen muss genau geschaut werden.
Ja, Fangfrage. Das koennte bei einem korrekt dimensionierten
Antialiasingfilter am Eingang da gar nicht auftauchen.
Auch das ist nicht richtig. Selbst das beste Analogfilter am Eingang, hat keine unendliche Sperrwirkung gegen Frequenzen oberhalb Nyquist und die werden unweigerlich gespiegelt und gelangen in die Interpolation. Umgekehrt gelangt das, was man aus gibt unweigerlich in das Folgegerät, was dasselbe Problem hat.
Da man dem Signal kaum ansieht, was es in sich trägt, muss man unterstellen, dass bis zu 24kHz Signalanteil haben kann und damit entsprechend umgehen.
Die beiden letzt genannten Punkte haben mithin auch Folgen für die Interpolation im Bezug auf das Runden:
Das ist aber den grundsaetzlichen Voraussetzungen geschuldet
und nicht der Interpolation als solche.
Es ist aber von Bedeutung wie man damit umgeht. Das Einfügen von 0-en in den Datenstrom erzeugt den gleichen absoluten Rundungsfehler wie das Einfügen eines jeden anderen Wertes. Es ist aber 3x hintereinander derselbe Fehler, nämlich ein Rechteck mit der Frequenz 1/4 und dem Tastverhältnis 1:3.
Nimmt man aber eine lineare oder andere variante Interpolation, kann man statistisch runden und gelangt zu einem Fehlerspektrum mit durchschnittlich gleicher, faktisch aber tendenziell geringer Amplitude als bei festen Werten, dessen Fehler so aussieht +-+- und damit im Spektrum eine Oktave höher liegt, womit mehr am AA-Filter des Ausgangs "stirbt". In dem Punkt ist das Einfügen von Nullen so schlecht, wie das Weiterverwenden des Wertes.
Es lohnt übrigens mal, das in 8 Bit nachzustellen und damit zu prüfen, was bei sehr kleinen Signalpegeln passiert und sich dort die Fehler aufschaukeln (oder auch nicht).
Gerade mit Nullung wird die Filterung einfach, weil sehr viele Samples
0 sind, also bei einem FIR-Filter nicht betrachtet werden müssen.
Langsam, Langsam - die Aussage war "Mehr Filterbedarf" (... bei der Qualität) und nicht "mehr Resourcenbedarf" (bei der Umsetzung).
Abgesehen davon, dass die Rechnung teilweise eine MGC* ist, weil man erst durch das Einfügen von Nullen einen scheinbar großen (aber im Informationsgehalt gleichen) Datenstrom deklariert, den man im Folgeschritt super einfach durch Weglassen berechnen möchte, lohnt hier ein Blick auf die Details:
Das Interpolieren entschärft die Notwendigkeit eines massiven Post-Filters; ein Teil der nötigen Gesamtarbeit steckt also vorne, daher ist das nicht direkt vergleichbar. Im Fall des einfachen automatischen Interpolierens passiert genau das gleiche, mitunter sogar dasselbe: Es werden (gewichtete) Mittelungen vorgenommen, wenn man z.B. einen FIR oder CIC direkt speist.
Und von der Umsetzung ist das auch nicht in allen Fällen wirklich einfacher oder rechenzeitsparender. Man muss z.B. immer die letzten 4 Samples nehmen und in den Filter schieben, was zu Additionen führt. Nimmt man die lineare Interpolation, habe ich bei den beiden Punkten A und B die neuen Punkte A0, A1, A2, A3 sowie B0, B1 ... und muss rechnen:
Mit Faktor 4 erweitert und in die Gesamtrechnung geschleppt, sind das 3 Additionen ohne Teilung.
Wenn man das in einem FPGA baut, wird man so oder so eine pipeline bauen, die munter addiert, was kommt - ganz egal ob belegte Werte oder Nullen reingeschoben werden.
Es ist einfach eine Addition, die nicht gespart werden kann, es sei denn man macht eine aufwändige Verwaltung für die Nullen.
erade bei asynchronen Konvertern kenne ich das
so, dass in den Gigahertz-Bereich hochgesetzt wird,
Jaha, das die Methode des oversamplens. Sofern das zur Verfügung steht, ist das der bequemste Weg, allerdings arbeiten die genauso: Pauschal addieren und dezimieren, meistens mit CIC, allerdings sind dort noch mehr Berechnungen je Sample nötig. Wenn man das oversampling geschickt auslegt, respektive das Interpolieren, also z.B. nicht ausgerechnet einen Binärfaktor, kann man auch den unschönen Sperrbereich des CIC austricksen.
15.77 kHz bei 48 kHz Samplerate wuerde man sich als Oszi nicht antun.
Warum nicht?
Waere so in einer Audiodatei auch seltsam.
Ist durchaus gängig. Wir mastern bis 16kHz@3dB.
Was in der einfachen Darstellung mit dem Abtasten nicht evident wird, ist das Interpolieren des AA-Filters, das bei 16kHz noch bestens funktioniert und auch bei Weitem nicht die Schwebungen erzeugt, die die Zeichnung suggeriert. Faktor 3 ist bei 48kHz noch gut machbar. Was leidet ist die Phasenrepräsentation, weil die Welle bei den typischen Filtern bei der Frequenz schon deutlich nachhängt.
Wichtig zu beachten ist, dass einfach nur ein Lineal benutzen, um die
fehlenden Werte zu berechnen, wahrscheinlich keinen guten Sound liefern
wird. Besser ist es, eines der oben genannten Tools zu verwenden,
Ich habe mit SoX schon gearbeitet. Das macht genau das, was ich oben beschreibe, nämlich post Filterung. Die Option den Datenstrom selber zu interpolieren oder zero padding zu kommandieren, bleibt unbenommen.
In jedem Fall schlägt dann die Aussage "braucht enormen Rechenbedarf" wieder zu. Die Tools arbeiten praktisch alle mit lang ausgedehnten FIR-Filtern, deren Koeffizienten (und bei einigen auch die Länge) der vorher eingestellten Grenzfrequenz angepasst werden (können).
Tatsächlich reichen drei einfache Filter mit je vier Koeffizienten, um
die jeweils drei Zwischenwerte im Sinne eines brauchbaren
Anti-Aliasing-Filters hinzuzufügen.
Das ist nicht meine Meinung, das ist theoretisch richtig und wird praktisch millionenfach genauso in Hard- und Software beim gradzahligen Upsampling durchgeführt. Lediglich die Anzahl der Koeffizienten ist unterschiedlich; mit vier Koeffizienten kann eine bereits akzeptable Qualität erreicht werden, mit mehr wird es natürlich besser.
Kleiner Hinweis an die Nicht-Fachleute: Natürlich werden praktisch keine Nullen eingefügt, sondern die 3 x 4 Koeffizienten alternierend auf die selben vier Ausgangssamples angewendet und dann ein Ausgangssample weitergeschoben. Würde man die Nullen real einfügen, müsste man ein FIR-Filter mit 15 oder 17 Koeffizienten anwenden, wobei immer jeweils 11 bis 13 Multiplikationen mit Null stattfinden würden. Vielleicht fällt ja jetzt der Groschen ...
mit vier Koeffizienten kann eine bereits akzeptable
Qualität erreicht werden, mit mehr wird es natürlich besser.
Was ist denn bei dir eine "akzeptable Qualität" in Zahlen?
Ich meine, es ist ja nicht so, dass man das nicht berechnen könnte.
Im Gegenteil, das wird ja "millionenfach" gemacht, um (d)einen Begriff aufzugreifen und es lässt sich ja einfach bemessen, was bereits bei der einfachen linearen Interpolation an Störspektrum herauskommt und was beim zero padding herauskommt. Und es lässt sich auch simulieren und messen, was der spätere Wandler und dessen AA-Filter daraus zaubern.
Vielleicht möchtest du mal ein Beispiel aufzeigen, am Besten das zitierte mit den "3 Gleichungen" und den "4 Koeffizienten".
sondern die 3 x 4 Koeffizienten alternierend auf
die selben vier Ausgangssamples angewendet
Das ist schon klar, sind Multiplikationen und ein Multiplexer, der faktisch die Werte ignoriert deren Koeffizient oder Wert 0 ist. Also ein FIR-Filter. Das ist schon mal deutlich mehr Aufwand.
15.77 kHz bei 48 kHz Samplerate wuerde man sich als
Oszi nicht antun.
Warum nicht?
Weil die Mehrheit, die Mathematik nicht verstanden hat,
sich beschwert, dass der Oszi "Punkte dazulügt", wenn
man korrekte Interpolation wählt... :/
Beschämend, aber das ist die normative Kraft des
Faktischen...
Waere so in einer Audiodatei auch seltsam.
Ist durchaus gängig. Wir mastern bis 16kHz@3dB.
Was in der einfachen Darstellung mit dem Abtasten nicht
evident wird, ist das Interpolieren des AA-Filters, das
bei 16kHz noch bestens funktioniert und auch bei Weitem
nicht die Schwebungen erzeugt, die die Zeichnung
suggeriert.
Im Anhang eine Graphik für das Zahlenbeispiel von Gasheizer
(Signal hat 15.77/48 der Abtastfrequenz), aber mit kubischer
Interpolation (kubischer Spline).
Faktor 3 ist bei 48kHz noch gut machbar.
Entspricht meiner Erfahrung. Aus einem DDS mit 50MHz Takt
bekommt man noch vernünftig nutzbare 15MHz. Anständiger
Tiefpass ist dann natürlich Pflicht.
Ach ja ich habe noch ein paar englische Seiten darüber gelesen. Und es ist schon interessant was man plötzlich aus den paar Daten zaubern kann.
Sieht man bei Grummler im PDF ja auch schön. Aus den Daten einen anständigen sinus ableiten ist in der Theorie ja machbar. Aber wenn ich daran denke wie zB ein 24khz Signal bei 48khz Abtastung als Daten aussieht, kann ich mir immer schlecht vorstellen dass daraus jemals wieder ein sauberer Ton werden soll. Da ist doch eigentlich nichts mehr an Infos drin.
24khz Signal bei 48khz Abtastung als Daten aussieht,
das aber ist doch die Kernaussage von Nyquist's Theorem, dass dies eben nicht geht. Es muss zwingend eine größere Frequenz sein. Diese (und nur diese) stellt sich, dass ein Signal genau so rekonstruierbar ist. Dass es in der Praxis nicht so richtig funzt, wenn Signalfrequenz und Abtastfrequenz einander nähern, steht auf einem anderen Blatt.
Aber wenn ich daran denke wie zB ein 24khz Signal
bei 48khz Abtastung als Daten aussieht, kann ich
mir immer schlecht vorstellen dass daraus jemals
wieder ein sauberer Ton werden soll. Da ist doch
eigentlich nichts mehr an Infos drin.
Natürlich nicht -- aber 2/3 vom theoretischen Limit
(--> 16kHz) ist ja auch nicht dasselbe wie 100% vom
theoretischen Limit (--> 24kHz).
Man darf sich halt nicht vom äußeren Schein blenden
lassen: Dass drei Punkte je Vollschwingung auf den
ersten Blick sehr wenig aussieht , ändert nichts
daran, dass die Theorie garantiert, dass es genügt.
Und wenn man es halbwegs richtig macht, genügt es ja
auch, wie mein Beispiel beweist.
Zwei Punkte je Vollschwingung genügen aber schon von
der Theorie her nicht -- da braucht man dann nicht
mehr weiter zu diskutieren.
Tja man kann es drehen wie man will, was an Daten weg ist kann man nur bedingt wieder her rechnen.
Bei 16 kHz mit deiner Methode sieht das sehr gut aus.
Aber das ist ein sinus, wie gut ist das bei Musik?
Also ich mit meinen Ohren und Messgeräten bekomme es nicht hin große Unterschiede zwischen vielen Methoden zu bemerken.
Bei einem sinus ist es schon was anderes da sind die Unterschiede teilweise recht groß.
Im Grunde bin ich zwar schlauer, aber was ich nun nehmen sollte weiß ich immer noch nicht.
Ich glaube es hilft wohl nur einen src Code einzubauen und hoffen das der nicht zu viel Rechenzeit braucht.
Tja man kann es drehen wie man will, was an Daten weg ist kann man nur
bedingt wieder her rechnen.
Dein Problem ist eher, dass du zu viele Daten hast (in Form von Aliasspektren).
Bei 16 kHz mit deiner Methode sieht das sehr gut aus.
Aber das ist ein sinus, wie gut ist das bei Musik?
Also ich mit meinen Ohren und Messgeräten bekomme es nicht hin große
Unterschiede zwischen vielen Methoden zu bemerken.
Bei einem sinus ist es schon was anderes da sind die Unterschiede
teilweise recht groß.
Wenn du mit deinem upgesampleten Signal eh' nix anderes mehr machen willst, als es wieder D/A zu wandeln und dann anzuhoeren, ist das alles ziemlich wurscht, denn du hast einen Tiefpass spaetestens im Ohr. Unangenehm wirds erst, wenn du das Signal noch irgendwie weiterverarbeitest, insbesondere die Samplerate (nochmal) auf irgendwas anderes umsetzen willst. Oder irgendwas damit modulieren.
Dann musst du dir klar werden, wieviel Reste der Aliasspekten du noch tolerieren kannst.
Im Grunde bin ich zwar schlauer, aber was ich nun nehmen sollte weiß ich
immer noch nicht.
Ich glaube es hilft wohl nur einen src Code einzubauen und hoffen das
der nicht zu viel Rechenzeit braucht.
Ja, klar. Je besser die Filterung (und je uncleverer die Implementierung), desto mehr Rechenzeit wird das Dingens brauchen.
Ich hab' hier so etwas den Eindruck gewonnen, dass nicht allen Eggsberden so richtig klar ist, was so Sachen wie "ich widerhole mal jedes Sample noch 3x" oder auch "ich interpoliere zwischen 2 Samples linear" fuer einen Einfluss auf's Spektrum (und damit die Energie, die die unerwuenschten Aliasspektren) haben. Das ist bei Audio doch etwas wichtiger, als die stumpfe Kurvenform.
Klaro, dass mit dem Einfuegen von Nullen und danach Tiefpassfiltern muss man nicht unbedingt tatsaechlich so machen, aber die anderen primitiven Interpolationen wirken genau so, wie wenn man das so machen wuerde. Sprich - so kann man sich leichter das entstehende Signalspektrum vorstellen.
Hab' mal n Bild hier angepappt (Achsen: Nunder: Daempfung/dB; Nueber: Signalfrequenz/kHz. Sichtbar sind nur 0..20Khz und dessen Aliasspektren, daher die Luecken in den Kurven)
Hier in dem Beispiel eben mit FIR Filtern mit diesen Koeffizienten:
a.) Blau : [1 1 1 1] Das entspricht dem "Sample widerholen"
b.) Rot : [1 2 3 4 3 2 1]/4 Das entspricht linearer Interpolation zwischen 2 Samples.
Da kann man schon sehen, dass das irgendwie schon Tiefpassfilter sind, und damit besser gegenueber dem "nur Nullen einfuegen". Die Aliasspektren werden schon etwas gedaempft, aber halt lange nicht "so richtig".
Und man kann auch schon erkennen, das dadurch auch schon etwas Daempfung im Basis(Nutzband) bei hohen Frequenzen passiert - weil das eben keine "tollen" Tiefpassfilter sind, sondern nur welche, die man (z.b. als CIC) sehr aufwandsarm realisieren kann.
Ich hab' hier so etwas den Eindruck gewonnen, dass
nicht allen Eggsberden so richtig klar ist, was so
Sachen wie "ich widerhole mal jedes Sample noch 3x"
oder auch "ich interpoliere zwischen 2 Samples linear"
fuer einen Einfluss auf's Spektrum (und damit die
Energie, die die unerwuenschten Aliasspektren) haben.
Ich habe eher den Eindruck, dass dem einen oder anderen
Theoretiker nicht ganz klar ist, dass selbst eine
gewöhnliche D/A-Wandlung (des unmanipulierten Original-
signales) bereits eine Interpolation ist -- nämlich in
der analogen Domäne.
Der DSP verarbeiten (zeit- und wertdiskrete) ZahlenFOLGEN;
die Bewegung der Lautsprechermembran ist aber zwingend
eine stetige Funktion der Zeit, und das gilt auch für die
Ausgangsspannung des Audioverstärkers.
Deswegen ist der Einwand "Ohh Gott -- stumpfsinniges
Wiederholen der Samples gibt ja NOCH SCHLECHTERE Qualität!"
sinnlos -- denn ob der DAC für 22µs eine bestimmte
Spannung ausgibt, oder ob man sich vorstellt, das derselbe
DAC viermal nacheinander für je 5.5µs dieselbe Spannung
ausgibt, ist schlicht völlig wurscht. Es kommt physikalisch
in beiden Fällen genau dieselbe Treppenspannung heraus.
Und NATÜRLICH ergibt das ungefilterte (und in der
analogen Domäne falsch interpolierte) Originalsignal
eine schlechtere Wiedergabequalität als ein korrekt
vorverarbeitetes, überabgetastetes, interpoliertes
Signal. Das ist ja wohl eine Binsenweisheit.
Erkläre das aber mal den Leuten, die sich über das
"Dazulügen" von Punkten beim DSO beschweren, wenn man
die Interpolation einschaltet...
Bild 1: Fehler = Abweichung vom Sinus als Sweep über 3 Oktaven von 500Hz bis 4kHz bei 44,1kHz sample Rate. Wieder Nullen einfügen in orange, Wert wiederholen in türkis, linear interpoliert in grün und JS-interpoliert in violett. Was fällt auf?
Bild 2: Fehler gefiltert mit einem 6dB Filter. (ja ein "sechs-De-Be-Filter" only) Was fällt auf?
In Summe sind das nun 4 verschiedene Signale, die alle denselben Sinus von 44k auf das 4-fache hochsetzen.
Mit einem statistisch interpolierenden teilinearen Filter kann man daraus vergleichsweise gute runde Sinüsse bis einige Kilo-Hertz herstellen. Für Bassfrequenzen bei einer GF 200Hz schon ausreichend. Bei den anderen eher schwierig :-)
als es wieder D/A zu wandeln und dann anzuhoeren, ist das alles
ziemlich wurscht, denn du hast einen Tiefpass spaetestens im Ohr.
Das kann ich leider nicht stehen lassen. Auf dem Weg zum Ohr gibt es AA-Filter, Lautspecher und Gehörknochen und die reagieren alle auf Oberwellen und schwingen. Außerdem sind Alias-Wellen nach der Wandlung im Nutzspektrum und unterliegen keiner weiteren Tiefpasfilterung mehr. Das wird alles gehört.
Deswegen ist der Einwand "Ohh Gott -- stumpfsinniges
Wiederholen der Samples gibt ja NOCH SCHLECHTERE Qualität!"
sinnlos -- denn ob der DAC für 22µs eine bestimmte
Spannung ausgibt, oder ob man sich vorstellt, das derselbe
DAC viermal nacheinander für je 5.5µs dieselbe Spannung
ausgibt, ist schlicht völlig wurscht.
Da ist theoretisch richtig, passiert aber so praktisch nicht. Die Wandler, die mit 192k getaktet werden, haben einen anderen AA-Filter und erwarten andere Daten. Man muss beim Upsampeln dafür sorgen, dass da möglichst kein Oberwellen entstehen, die über das vormalige Spektrum hinausgehen und nun im Nutzspektrum des Wandlers liegen. Das ist typisch irgendwo zwischen 25kHz und 75kHz, je nach Wandlertype. Es gibt Consumerwandler, die ihre 6dB GF bei 192kHz frech bis auf 60kHz dehnen. Das kann Absicht sein, allerdings auch dem Umstand geschuldet sein, dass der interne Filter teildigital gelöst ist und man die billige lösung der hohen Abtastrate nutzt, nämlich die Reduzierung der Überabattung. AD-Wandler und auch DA-Wandler arbeiten typisch mit 256-fachem Oversampling und dithering, um ihren AD-Filter passend anzusteuern / auszuwerten und die 24 Bit zu gewinnen / an den Mann zu bringen. Das reduziert man einfach auf 1/4 und hat 192kHz Eingang-Ausgang. Das digitale Filter davor verschiebt dann seine Grenzfrequenz.
die sich über das "Dazulügen" von Punkten beim DSO beschweren,
wenn man die Interpolation einschaltet...
Das ist am Ende auch ein Dazulügen, weil die Punkte allein nicht festlegen, mit welcher Grenzfrequenz das interpolierende Filter arbeiten wird. Das legt das Messgerät willkürlich fest.
Hier in dem Beispiel eben mit FIR Filtern mit diesen Koeffizienten:
a.) Blau : [1 1 1 1] Das entspricht dem "Sample widerholen"
b.) Rot : [1 2 3 4 3 2 1]/4 Das entspricht linearer Interpolation
Warum werden einmal 4 und einmal 7 Werte herangezogen?
Was spricht gegen [1 3 3 1]/2?
Warum werden einmal 4 und einmal 7 Werte herangezogen?
Ja, mei - warum sind's beim Hubschrauberquartett immer 4 Karten die zusammengehoeren und bei Zwergen, Raben, Schwaben oder toten Fliegen auf Marmeladenbroten immer 7?
Wenn du 2 FIR Filter der Laenge 4 in Kette "schaltest", dann werden ihre Impulsantworten gefaltet und die Faltung von 2 Impulsantworten mit Laenge 4 ist halt mal 7 (also 8-1) lang.
Was spricht gegen [1 3 3 1]/2?
Ist zwar auch ein Tiefpass, aber bewirkt bei Sampleratevervierfachung halt keine lineare Interpolation (So ein Filter waere eher bei Samplerateverdopplung eine quadratische Interpolation, d.h. es wuerden dann immer "Parabelstueckchen" durch 3 Originalsamples gelegt werden, keine Geraden durch 2 Originalsamples. Wenns unbedingt irgendwie graphisch auf der Zeitachse interpretiert werden soll).
Kenne ich nicht. Meinst Du vielleicht einen nichtrekursiven Tiefpass mit einer bestimmten Eckfrequenz? Welcher denn? Oder was?
statistisch interpolierenden teilinearen Filter
Hä? Nun wirds abenteuerlich ...
gute runde Sinüsse
Ja, schon klar, Du meinst vermutlich "sinusförmig"?
AA-Filter
Hm, ist das eine Windel?
Ne jetzt ist mal Schluss hier. Kein Fachmann der Welt versteht einen einzigen dieser Begriffe. Hör mal auf, so zu tun, als wüsstest Du, wovon Du redest.
Schnapp Dir ein Buch, z.B. Kammeyer/Kroschel, lerne die Begriffe und danach verstehen wir uns auch.
Wenn du 2 FIR Filter der Laenge 4 in Kette "schaltest", dann werden ihre
Impulsantworten gefaltet und die Faltung von 2 Impulsantworten mit
Laenge 4 ist halt mal 7 (also 8-1) lang.
ok, gebucht! Die 4-fach-Mittelung einfach doppelt angewendet.
Also wenn man seine eigenen Initialen nicht erkennt und diese Information passend assoziiert, hm ...
6dB Filter
Kenne ich nicht.
Dass es ein Tiefpass sein muss und die Eckfrequenz am Ende des Audiobandes liegen muss, ergibt sich aus der Anwendung und dem was zuvor geschrieben wurde.
statistisch interpolierenden teilinearen Filter
Hä? Nun wirds abenteuerlich ...
Die Teilabschnitte sind linear inter- und extrapoliert, wobei nur eine INT-Division verwendet wird, die durch Abschneiden und vorheriges Runden realisiert ist. Dabei wird ein Wert mitgezogen, der das Ganze " mittelfrisitig" -> statistisch korrigiert und eine Art dithering bewerkstelligt. Dessen Verhalten ist auf die Ausgangslast = das AA-Filter und die Amplitude angepasst. Dadurch entsteht eine Zickzack-Welle mit hohem Frequenzanteil deren niederfrequenter Verlauf an die Oberwelle in der Zieldomain = Grenzfrequenz des dortigen Filters optimiert ist.
Ausgeliehen ist die Idee bei der Methode der PDM, bzw NRZ-Codierung.
Das Spektrum ist nicht ideal - aber die Rechnung sehr einfach und im FPGA mit den Methoden des Bit-Weglassens und Umschalten von Werten durch Ausnutzen von SPiegelsymmetrie extrem effizient umzusetzen. Die Störungen verschwinden praktisch komplett, durch die nun hohe Datenrate und Abtastfrequenz. Für sehr geringe Amplituden mutiert es mehr in Richtung PDM. Beispiel 8Bit 5Bit und 2Bit.
Schnapp Dir ein Buch,
Habe ich in ausreichender Menge. Auch solche, an denen ich zu Uni-Zeiten mitgearbeitet habe. Z.B. auch Nachrichtentechnik und Signalverarbeitung. Von daher ...
Nochmals zurück zu Ausgangspunkt: Das Filter vorinterpoliert mit sehr einfachen digitalen Mitteln den Datenstrom so, dass er von einem DAC mit simplem Analogfilter ohne weitere Verarbeitung genutzt werden kann. Es hat keinen speziellen Namen. Laut meines damaligen Profs hat es Charakterzüge von CIC, aber auch von Bresenham. Ich würde es gemäß seiner oben beschriebenen Funktion "L.oad A.dapted I.nterpolation (with) I.imited A.liasing" nennen.
Mein süßes Filter, das heißt LAILA - es ist runder, cooler, geiler.
Der Frequenzgang ist einstellbar. Hier mal das Beispiel für (ich meine es waren) 2/3 Nyquist, bezogen auf die ehemalige, nicht hochgesetzte Rate.
Das Filter ist aber nicht für Rechtecke oder Impulse gedacht, da eben bandbegrenzend. Man sieht aber ein etwas rechteckförmigeres Verhalten, als einfach die lineare Interpolation. Auch die Impulsantwort zeigt das. Ob das klangtechnisch so sinnvoll ist, ist eine andere Sache.
Im Kleinsignalbetrieb bei geringer Aussteuerung kommt offenbar ein Irokese raus.
Oioioi, na - das hoert sich ja so an, als ob das so ein Filter ist, was mit sauerstoffarmen Koeffizienten noch viel musikalischer klingt...
Ja, sehr schoen - leider nicht meine Baustelle.
Sehr schön. Was haben wir hier?
15,77kHz mit Störtönen im Bereich der nicht übertragen werden kann, aber dennoch im 48kHz Datenstrom enthalten ist. Bei der Wiedergabe oder bei einer Umsetzung auf eine höhere Samplingfrequenz muss der "Mist" entfernt werden. Und dann muss der 15,77kHz Sinus wieder sauber im Signal enthalten sein.
denn ob der DAC für 22µs eine bestimmte
Spannung ausgibt, oder ob man sich vorstellt, das derselbe
DAC viermal nacheinander für je 5.5µs dieselbe Spannung
ausgibt, ist schlicht völlig wurscht.
Du ignorierst einfach, dass es sich bei den Werten um Stützstellen handelt, welche bei 48kHz natürlich anders gefiltert werden müssen, als bei 192kHz.
Ein DAC, der nur plump Spannungswerte von digital nach analog wandelt, ist für Audiozwecke unbrauchbar. Das sind keine diskreten Messwerte.
Also hat sich die Qualität doch geändert, da die Werte nun anders interpretiert werden müssen. In dem einen Signal stecken keine Nutzinformation zwischen 24 und 48kHz, in dem anderen Signal schon. Und wenn Du das Signal einfach kopierst durch Wiederholung von Samples, hast Du plötzlich den Aliasbereich von vorher nun mitten im Nutzsignalbereich. Und der wird dann -im Gegensatz zu einem anständigen 48kHz-DAC- von einem 192kHz DAC wiedergegeben. Und da hast Du dann auch Deinen Unterschied.
Wenn ich analoge Signale aufnehme, so ist es heutzutage eigentlich kaum ein Problem, bis kurz vor die halbe Samplingfrequenz zu gehen. Dies liegt daran, das ADCs heute im MHz-Bereich samplen. D.h. ein analoges Filter kann bei fs 48kHz ab z.B. 30kHz langsam mit 6dB/Okt. "zudrehen". Erst anschließend wird digital auf 24kHz begrenzt und runter gesamplet. Dann hat man natürlich auch wieder die Störungen zwischen 24 und 48kHz. Und ein 15kHz Signal sieht -nur auf die Stützstellen geschaut- gruselig aus. Nach der Übertragung werden aber diese Daten wieder hergenommen, heraufgesamplet und wieder ab 24kHz weggefiltert. Und dann kann ich wieder mit einem einfachen Filter meine Ausgangsfilterung durchführen. Denn meine Störungen liegen irgendwo oben im MHz-Bereich. Und ich erhalte dann auch wieder einen sauberen 15,..kHz Sinus.
Schaut doch mal, wie steilflankig sowas ist:
https://www.ti.com/lit/gpn/src4193
Alles oberhalb von 12kHz kommt da bei fs 48kHz nur noch als Sinus raus.
Zum hochsetzen der Samplerate: Ob ich das Signal bei der Heraufsetzung interpoliere, Werte auffülle oder Nullen einfüge ist völlig wumpe. Ich erzeuge mit allen Verfahren Störfrequenzen. Und die müssen in jedem Fall herausgefiltert werden. Alles was sich oberhalb fs/2 des Eingangssignals befindet, muss weg. Wenn ich darauf verzichte, habe ich den Störanteil von vorher fs/2 bis fs auch noch im Signal. Nun aber im Nutzsignal.
Das reduziert man einfach auf 1/4 und hat 192kHz
Eingang-Ausgang. Das digitale Filter davor verschiebt dann seine
Grenzfrequenz.
Spricht dann wieder für ein gut gebautes anti aliasing filter und zwar am Ein- und Ausgang. Als ein Beispiel hat ein 24dB-Sperr/Rekonstruktionsfilter bei der Grenzfrequenz fs/4 eine 3dB-Dämpfung und bei fs/2 eben noch 24dB. Schaltet man sie gedanklich in Reihe, verdoppelt sich die Wirkung und bei fs/2 ist praktisch alles Störende weg. Bei der Eckfrequenz sind es nun zwar 6dB, aber nur die Erhöhung der Abtastrate um einen weiteren Faktor 2 reicht, um in den linearen Bereich zu gelangen.
Es braucht demnach einen Faktor 8 zwischen Nutzfrequenz und Abtastfrequenz. Bei 192kHz Audio ist das leicht zu gewährleisten.
Als ein Beispiel hat ein
24dB-Sperr/Rekonstruktionsfilter
[...]
Wandler mit 4 oder 8-fs sind aber auch schon in die Tage gekommen.
Heute arbeiten Wandler mit einem internen Digitalfilter und Delta-Sigma-Wandler bei 6MHz oder mehr und da sieht das Filter noch entspannter aus.
Heute arbeiten Wandler mit einem internen Digitalfilter und
Delta-Sigma-Wandler bei 6MHz
Die 6MHz am Ausgang beziehen sich dann aber auch nur auf 1 Bit. Es kommt dann darauf an, wie das Signal übergeben wird. Wenn man da nur mit 48kHz drauf geht, ist auch nicht mehr drin, als 0...24k. 192kHz sind bei den üblichen 24Bit aber wirklich ausreichend.
Spricht dann wieder für ein gut gebautes anti aliasing filter und zwar
am Ein- und Ausgang. Als ein Beispiel hat ein
24dB-Sperr/Rekonstruktionsfilter bei der Grenzfrequenz fs/4 eine
3dB-Dämpfung und bei fs/2 eben noch 24dB.
24 dB für die eine Oktave ist aber nicht viel. Für die potenziellen Alias-Wellen müsste man schon zusehen, dass man 60dB Dämpfung hat. Deshalb ist mehr oversampling immer ein Vorteil. Fürs Audio funktioniert es bei 48kHz ja nur deshalb, weil der Anteil der Höhen im Gesamtmix nicht so hoch ist.
Ob ich das Signal bei der Heraufsetzung
interpoliere, Werte auffülle oder Nullen einfüge ist völlig wumpe. Ich
erzeuge mit allen Verfahren Störfrequenzen.
Die Frage ist aber, wie ausgeprägt diese Oberwellen sind und welche Aufgaben man an die analoge Elektronik weitergibt. Eine digitale Vorfilterung ist unerlässlich und die ist durchaus anspruchsvoll, wenn man nicht viel Bandbreite oder overhead hat.
Hier ist die Weiterentwicklung der LAILA, die "fast recursive interpolation (with) differential adaption", die FRIDA.
Die Interpolation wurde seinerzeit für eine schnelle Wellenformung entwickelt und lief als ausgerollte Iteration / Rekursion mit rund 50MHz in einem Cyclone II, was damals, Mitte der 2000er, schon so ziemlich die Grenze für diesen Chip war. Frida braucht keine Multiplizierer und liefert die 3 Zwischenpunkte voll parallel, um sie z.B. jenseits der FPGA-Systemfrequenz auf ASICs schieben zu können. Die Methode arbeitet sozusagen mit der 4-fachen Abtastfrequenz.
Die Grenzfrequenz der Standard-Implementierung liegt bei fs/(2*PI) und damit für eine eine Abtastung mit 96kHz im Bereich der Hörgrenze von 15kHz. Heute würde man das aufgrund der Verfügbarkeit von Massen an Multiplizierern in FPGAs sicher besser lösen. Die Abweichungen zu einem optimierten FIR-Tiefpassfilter betragen aber nur 15% und liegen vorwiegend in oberen Frequenzbereich. Frida arbeitet daher noch heute in meinem Synth- setzt allerdings nur die 192kHz auf 768kHz hoch, um wenig der o.g. Wellen zu erzeugen *)
Mit 2 bzw. 5 Fridas bekommt man einen teilsequenziellen / vollparallelen 1:16 upsampler. Mit dem Tauschen / Setzen von nur 2 speziellen Bits, bekommt man einen moduliertem Ausgang, der die untersten Bits dithern kann
Damit eignet es sich auch für sehr geringe Bitbreiten und / oder langsame Anstiege.
*) Mit Bezug auf Jobsts vorletztem Beitrag: Man erkennt, dass damit einiges (mehr) an Dreck im Nutzband vorliegt. Die späteren Effekte, die auf der quasi analogen Ebene arbeiten, z.B. nichtlineare Verzerrer, spiegeln das um 384kHz herum wieder nach unten, es erreichen aber nur theoretische Reste das später hörbare Audioband. Durch die spätere Signalverarbeitung wird aber wieder auf unter 30-60kHz limitiert, womit das Signal wieder 192k-tauglich wird.
Die 6MHz am Ausgang beziehen sich dann aber auch nur auf 1 Bit.
IdR. handelt es sich bei aktuellen Wandlern um "Multistage/-level" Wandler.
Der PCM1792 z.B. gibt 66 unterschiedliche Stromwerte aus. Entspricht also etwa 6 Bit.
Es kommt
dann darauf an, wie das Signal übergeben wird. Wenn man da nur mit 48kHz
drauf geht, ist auch nicht mehr drin, als 0...24k. 192kHz sind bei den
üblichen 24Bit aber wirklich ausreichend.
Natürlich ist in einem 48k Signal nicht mehr als 24k drin. Aber ich muss es ja in den analogen Zustand bekommen. Und dafür wird es aktuell genau wie ein 192kHz Signal heraufgesamplet (inkl. digitaler Filterung) um dann analog einfach filtern zu können.
24 dB für die eine Oktave ist aber nicht viel.
Deshalb möchte er ja auch 2x 24dB/Okt bei 8-fs benutzen.
Jobst M. schrieb:
Ob ich das Signal bei der Heraufsetzung
interpoliere, Werte auffülle oder Nullen einfüge ist völlig wumpe. Ich
erzeuge mit allen Verfahren Störfrequenzen.
Die Frage ist aber, wie ausgeprägt diese Oberwellen sind und welche
Aufgaben man an die analoge Elektronik weitergibt. Eine digitale
Vorfilterung ist unerlässlich und die ist durchaus anspruchsvoll, wenn
man nicht viel Bandbreite oder overhead hat.
Es geht NUR um die digitale Filterung, da ich in diesem Block nur von der Sampleratenumsetzung rede! (Was auch davor steht) Da ist nichts analoges dabei.
Und es ist auch egal, wie ausgeprägt die Oberwellen sind: Sie müssen weg! Das (digitale) Filter muss natürlich damit klar kommen.
Erst wenn ich hochgesetzt und digital gefiltert habe, kann ich mein analoges Filter nach einem DAC einfach gestalten.
Hochsetzen, dann (ohne digtal zu filtern) wandeln und dann zu versuchen mit einem analogen Filter alles wieder einzufangen ist zum scheitern verurteilt. Das habe ich aber auch nie anders behauptet.
Die 6MHz am Ausgang beziehen sich dann aber auch nur auf 1 Bit.
IdR. handelt es sich bei aktuellen Wandlern um "Multistage/-level"
Wandler.
Der PCM1792 z.B. gibt 66 unterschiedliche Stromwerte aus. Entspricht
also etwa 6 Bit.
Es dürfte eigentlich egal sein, wie hoch die Wandlerrate an der Stelle noch wird, dann durch das Hochsetzen kann keine weitere Qualität erzeugt werden. Es bleibt immer bei dem Spektrum, was mit der Samplefrequenz zugeführt wird.
Und es ist auch egal, wie ausgeprägt die Oberwellen sind: Sie müssen
weg!
Da man sie nie vollständig wegbekommt, schlussfolgere ich messerscharf, daß das Hochsetzen auf höhere Abtastraten keine Verbesserung bringen kann, sondern eher eine Verschlechterung.
Sicher nicht: Gib das Originalsignal mit der originalen
Sample-Rate über einen (fehlerfreien) D/A-Wandler aus,
und dann gib jeden Abtastwert viermal mit dem vierfachen
Sample-Takt über denselben Wandler aus.
(Annahme dabei: Der Wandler gibt keine -- nur in der
Phantasie existierenden -- Dirac-Stöße aus, sondern hält
den alten Abtastwert solange, bis der neue kommt, wie das
ja reale Wandler auch tun.)
Es entsteht exakt dasselbe Zeitsignal.
Also kann die Qualität sich nicht geändert haben.
Diese Annahme ist falsch, denn das dem D/A Wandler zwingend nachfolgende Rekonstruktionsfilter (Anti-Aliasing-Filter) ist auf die volle Samplerate des D/A Wandlers ausgelegt.
Wenn man die wirksame Samplerate jetzt einfach viertelt, indem man jedes Sample ungefiltert viemal ausgibt, kommen die Aliasprodukte durch den Ausgangsfilter, der für die 4-fache Frequenz ausgelegt ist!
Vor der Ausgabe muß das Signal also - unter Beibehaltung der Bandbreite! - ein Upsampling auf die 4-fache Rate erfahren.
Das geht nur durch Interpolation von 3 Zwischenwerten zwischcen den originalen Werten, damit die Bandbreite nicht zunimmt. Die Sprünge alle vier Samples im ungefilterten Datenstrom verletzen das Nyquist-Kriterium für die volle Samplerate.
Eine limeare Interpolation ist sicher besser als keine, aber zwei kaskadierte Halfbandfilter wären hier der bessere Interpolator.
Natürlich gewinnt man durch Upsampling auf die 4-fache Samplerate nichts an Signalqualität gegenüber einem korrekt mit einfacher Samplerate D/A gewandelten Signal.
Allerdings verringert sich der Aufwand für das erforderliche analoge Rekonstruktionsfilter nach dem DAC gewaltig, weil es nur ein Viertel der Flankensteilheit aufweisen muß für ein gleich gutes analoges Ausgangssignal.
Auf die Spitze getrieben wird dieses Prinzip von Delta-Sigma-DACs, die wegen des digital erfolgten vielfachen Upsamplings, nur noch einen passiven RC-Tiefpaß erster Ordnung als Rekonstruktionsfilter benötigen.
Man verlagert also durch Upsampling Schaltungsaufwand von teurer Analogtechnik in die heute preiswerter zu realisierende digitale Ebene vor dem DAC.
Es bleibt immer bei dem Spektrum, was mit der Samplefrequenz
zugeführt wird.
Ich habe nie etwas anderes behauptet, sondern genau das.
Darum geht es aber auch nicht, sondern es geht darum, wie man das vorhandene digitale Signal am besten in ein analoges umsetzt.
Und da hat sich eben gezeigt, dass
hochsetzen -> digital filteren -> wandeln -> einfaches analoges Filter
besser ist als
wandeln -> aufwändiges analoges Filter
Die Bandbreite bleibt dabei natürlich gleich. Wie kommt man auf eine andere Idee?
Da man sie nie vollständig wegbekommt, schlussfolgere ich messerscharf,
daß das Hochsetzen auf höhere Abtastraten keine Verbesserung bringen
kann, sondern eher eine Verschlechterung.
Naja, digitale Filter schaffen es diese Störsignale mit z.B. 180dB zu unterdrücken. Bei einem anschließenden 24-Bit-DAC bedeutet dies vollständig. Die Verbesserung liegt eben einfach darin, dass das digitale Filter präziser, schärfer und billiger als das analoge Filter ist.
Deine messerscharfe Schlussfolgerung ist demnach falsch.
Natürlich gewinnt man durch Upsampling auf die 4-fache Samplerate nichts
an Signalqualität gegenüber einem korrekt mit einfacher Samplerate D/A
gewandelten Signal.
Allerdings verringert sich der Aufwand für das erforderliche analoge
Rekonstruktionsfilter nach dem DAC gewaltig, weil es nur ein Viertel der
Flankensteilheit aufweisen muß für ein gleich gutes analoges
Ausgangssignal.
Hier inbegriffen steckt ein Widerspruch: Das Signal, welches noch nicht hochgesampelt wurde, hat doch gar keine Oberwellen, die ein Problem werden könnten. Das wird doch erst dadurch provoziert und dann lädt man sich die Aufgabe auf, eine perfekte Interpolation zu liefern, die selbst keinen weiteren Beitrag liefert, um am Ende dort herauszukommen, wo man eingangs war.
Naja, digitale Filter schaffen es diese Störsignale mit z.B. 180dB zu
unterdrücken.
Ein 180dB-Güte-Filter mit einer Überabtastung von nur Faktor 4? Das wären bei beispielsweise 16kHz im Passband 100% und bei spätestens 64kHz, immerhin 90dB/Oktave. Sehr sportlich.
Ein 180dB-Güte-Filter mit einer Überabtastung von nur Faktor 4? Das
wären bei beispielsweise 16kHz im Passband 100% und bei spätestens
64kHz, immerhin 90dB/Oktave.
Angehängt mal ein Bild (TI DF1706).
Bei 0,45 * fs noch bei 0dB, bei 0,55 * fs bei 120dB Dämpfung.
Also bei ~22kHz noch voll auf, bei ~26kHz voll zu.
Sind also etwa 600dB/Okt. in dem Bereich. DAS ist vielleicht sportlich.
(leider finde ich den Plot mit den beeindruckenden 180dB gerade nicht mehr wieder. Aber das hier sollte zur Veranschaulichung ausreichend sein.)
Sehr sportlich.
Nein. Informier Dich einfach mal vorher, bevor Du solche Kommentare von Dir gibst. Du hast offensichtlich überhaupt keine Ahnung und stellst dies auch noch zur Schau. Nicht nur in diesem Thread.
chefdesigner
Sicher in einem Bereich, der nichts mit Elektronik zu tun hat.
IdR. handelt es sich bei aktuellen Wandlern um "Multistage/-level"
Wandler.
Ja klar, aber mit der vollen Rate rattert nur das eine (das unterste Bit), dass die Zwischenbereiche abdeckt. Die anderen Bits werden nach Strategie langsamer geschaltet.
Trotzdem ist das natürlich deutlich besser, als ein reiner PDM-Datenstom, das ist schon richtig.
Hier inbegriffen steckt ein Widerspruch: Das Signal, welches noch nicht
hochgesampelt wurde, hat doch gar keine Oberwellen, die ein Problem
werden könnten. Das wird doch erst dadurch provoziert und dann lädt man
sich die Aufgabe auf, eine perfekte Interpolation zu liefern,
Natürlich ist es besser, das Signal in seinem Urzustand zu lassen, aber es war je die Aufgabe, es hochzusetzen. Und das muss eben oft genug sein, in Datenverarbeitungssystemen, weil die Quellen mitunter andere Abtastraten haben.
(leider finde ich den Plot mit den beeindruckenden 180dB gerade nicht
mehr wieder.
Die Dämpfung und Steilheit des Filters ist am Ende nur eine Frage der TAP-Zahl und der Genauigkeit der Koeefizienten und lässt sich bei Auslegung ja berechnen.
Ich empfehle mal die IOWA-Filter zum Rumspielen. 2 von denen im Beispiel sollte da schon hinkommen können. Nur, wer braucht 180dB?
Warum nimmt man 2 kaskadierte Halbbandfilter statt eines einzigen mit
geringerer Grenzfrequenz?
Weil man dann weniger rechnen muss, wenn man sich g'schickt anstellt.
Es wäre also nicht "besser" sondern resourcenschonender, um die Empfehlung zu präzisieren. Da gehe ich mit.
Andreas F. schrieb:
immerhin 90dB/Oktave. Sehr sportlich.
Nee, im Digitalen ist die Sportlichkeit viel weniger sportlich als im
Analogen.
Mit einem gut ausgelegten und gebauten Analogfilter kommt man aber durchaus sehr weit und das oft auch zu einem Bruchteil der Kosten, weil nur wenig "Vogelfutter" benötigt wird und OPAMPs auch nur noch Cent-Beträge fordern.
Bei diesem Bild dürfte aber auch der Analogfilter im DAC mit beteiligt sind. Wäre zu prüfen, was der leistet und wieviel von einem davor platzierten digitalen Filter bewirkt wird.
Mit einem gut ausgelegten und gebauten Analogfilter kommt man aber
durchaus sehr weit und das oft auch zu einem Bruchteil der Kosten, weil
nur wenig "Vogelfutter" benötigt wird und OPAMPs auch nur noch
Cent-Beträge fordern.
Iss richtig. Spulen kosten ja nix. Viele Spulen noch viel weniger.
In alten CD-Playern sitzen ganze Huckepack-Platinen voller Spulen im Filter, damit man halbwegs von 20kHz runter auf 80dB bei 22kHz kommt.
Bzw. nicht einmal.
Jobst M. schrieb:
Angehängt mal ein Bild (TI DF1706).
Bei diesem Bild dürfte aber auch der Analogfilter im DAC mit beteiligt
sind.
Nein.
Wäre zu prüfen, was der leistet und wieviel von einem davor
platzierten digitalen Filter bewirkt wird.
Hier das Filter aus der von Burr Brown vorgeschlagenen Referenzlösung für den DF1704 (DEM-PCM1704). Rechne Dir aus, wo das Ding ansetzt.
Hör endlich auf über Dinge zu schreiben, die Du nicht einmal ansatzweise verstanden hast.
Iss richtig. Spulen kosten ja nix. Viele Spulen noch viel weniger.
??
Wo sind denn in besagten CD-Spielern solche Gräber an Spulen verbaut? Noch nie gesehen. Das muss wohl in den 80ern gewesen sind.
Und dann wären auch analoge Lösungen mit den damaligen digitalen Lösungen zu vergleichen und das hieße sehr teuere Microcontroller und sehr teueres RAM.
Weil es Dir nicht gefällt, dass es Beispiele gibt?
Gibt noch mehr! Wenn Du ernsthaft danach suchst, findest Du noch mehr.
Onkyo ist pleite
Onkyo wurde verkauft an Foxconn/Sharp und hat jetzt erst einen neuen AV-Receiver auf den Markt gebracht: (TX-RZ70)
Viele Hersteller aus den 80ern gibt es nicht mehr oder sie wurden aufgekauft.
Dennoch ändert das nichts an der Tatsache, dass sie bedeutende Hifi-Hersteller in dieser Zeit waren.
und das andere Beispiel steht schon unter Kuriositäten.
Na, was aufgeschnappt, aber gar nicht weiter verfolgt, was die Kuriositäten sind? Tip: Es ist nicht das Filter!
Der Vergleich mit dem RAM war so gemeint, dass man Technik von vor 30
Jahren miteinander vergleicht.
Welche beiden Dinge von vor 30 Jahren vergleicht man denn?
Analogfilter und Digitalfilter?
Digitalfilter ist auch heute noch Stand der Technik. Und ganz ohne analoges Filter geht es dennoch nicht.
Heute baut das in beiden Fällen keiner mehr so.
Nicht? Wie wandelt man denn heute ein digitales Signal in ein analoges?
Onkyo wurde verkauft an Foxconn/Sharp und hat jetzt erst einen neuen
AV-Receiver auf den Markt gebracht: (TX-RZ70)
... dessen Qualität mit früheren Produkten nichts mehr zu tun haben dürfte und wohl auch nichts zu tun haben kann weil diese ja nicht mehr marktfähig war.
-- mithin
also genau die von Rolf verschmähte Methode darstellt.
Welche "Methode" habe ich wo in welcher Weise "verschmäht2?
Ich habe irgendwie den Faden verloren. Es ging um das Vervierfachen der Abtastasterate. Zunächst einmal darf da nichts eingefügt werden. Die Linearisierung ist zwar ein scheinbar guter Ansatz, erzeugt aber Fehler, die man nicht 100% wieder ausbügeln kann.
Um es noch einmal zu erklären:
Die Linearisierung zwischen 2 Punkten entspricht dem Einfügen von Oberwellen eines Dreiecks. Das ist schon besser, als die eines Rechtecks. Richtig wäre aber die Grundwelle und diese liegt bei der Hälfte der Abtastrate. Ganz korrekt wäre also ein unendlich ausgedehntes Halbbandfilter.
Ganz korrekt wäre also ein unendlich ausgedehntes
Halbbandfilter.
Das konstruiert man wie?
Das macht am Besten Chuck Norris. Denn der kann von Minus Unendlich bis Plus Unendlich zaehlen. Was bei der Konstruktion eines unendlich ausgedehnten Halbbandfilters eine Kernkompetenz ist.
Die Frage geht selbverständlich dahin, wie weit man dieses Filter ausdehen müsste, bzw an welchen Kriterien man das festmachen sollte. Eine unendliche Ausdehnung braucht es sicher nicht. Ab einem bestimmten Punkt sollte der Gewinn unerheblich werden kann ich mir vorstellen.
Wenn die Filterdaempfung am Rand deines ersten stoerenden Aliasspektrums so hoch ist, wie 's Quantisierungsrauschen tief (also z.b. 96dB bei 16Bit Samplebreite), wird eine weitere Filterverbesserung wohl nicht mehr sooo wahnsinnig viel bringen, also kann man's dann auch dabei belassen.
Es muss aber doch ein Kriterium geben, finde ich, oder? Nehme ich mir ein Halbbandfilter vor, kann ich bis zur Hälfte der Abtastfrequenz arbeiten. Alles rückt eine Oktave nach unten. Theoretisch kann man den Mittelwert zwischen den beiden zu reduzierenden Punkten nehmen. Oder man nimmt 3 Punkte (?)
Wäre in jedem Fall ein sehr schlechtes Filter, weil es nur Frequenzen von 1/3 betrachtet.
Eigentlich müsste man doch (nur ?) runtergehen, auf die niedrigste Frequenz?
Sagen wir 48kHz Abtastung, wie es der TO möchte, bräuchte so für die 16Hz Hörgrenze 4096 solcher Filterstufen. Als Halbbandfilter 12 Stufen kaskadiert.
Richtig? Wenn die Abstufung etwas bringen soll und Rechenzeit spart, dann nur wenn die Filterstufen auf jeder Kaskade < 4096 / 12 -> ~256.
Reichen 128?
Reichen 32?
Alles rückt eine Oktave nach unten. Theoretisch kann man den
Mittelwert zwischen den beiden zu reduzierenden Punkten nehmen. Oder man
nimmt 3 Punkte (?)
Da rueckt nix eine Oktave nach unten.
Was willste denn eigentlich machen? Das selbe wie der TO oder doch was ganz anderes?
Ich möchte verstehen, wie breit ein solcher Filter ausgelegt werden müsste. Was die Frage des TO anbelangt könnte man sie so erweitern, dass man fragt, wie lange der Filter aufgezogen sein muss, um auf der neuen, 4fachen Abtastfrequenz die neu eingesetzten Samples zu glätten.
Wie "lange" das Filter sein muss, haengt davon ab, wie steil es sein muss, d.h. innerhalb welcher Frequenzaenderung das Filter vom Durchlass- in den Sperrbereich geht, wie gross dann die Sperrdaempfung sein muss (wieviel Ripple du im Durchlass tolerieren kannst und ggf. wieviel Schweinskram die Gruppenlaufzeit dabei treiben darf).
Wenn ich halt mal von Sperrdaempfung von auch so groessenordnungsmaessig 96dB ausgehe, und davon ausgehe, dass im Audiosignal des TOs die hoechsten Frequenzen bei 20kHz sind, brauche ich also ein Filter, was 20kHz noch durchlaesst, also z.b. mit <0.1dB daempft, aber 48-20=28kHz, also das Aliassignal eben schon mit 96dB daempft (und dann die anderen Aliase natuerlich auch mindestens so stark).
Kannst natuerlich auch sagen: In meinem Audiosignal kommt eh nix mehr ueber 15kHz vor, und auch das ist schon im Nutzsignal/Basisband nicht mit soviel Wumms dabei, also reicht mir eine Sperrdaempfung von 60dB bei 48-15=33kHz.
Dann wird dein Tiefpass bedeutend simpler ausfallen koennen.
Und wenn du halt etwas irrsinnig bist und willst z.b. 500dB Sperrdaempfung bei 24.000001kHz, weil du bei 23.999999kHz noch "Nutzsignal" hast und gruendlich sein willst, tja - dann wird dein Filter halt etwas umfangreicher ausfallen muessen...
Warum 33? Wenn das Filter ab 20kHz noch etwas durchlässt, wird es doch
spektral wieder nach unten geklappt, wenn es > 24kHz ist (?).
Wenn ich eben sicher bin, dass in meinem Originalsignal nix ueber 15kHz drinnen ist, kann auch nix irgendwohin geklappt werden. Auch nicht, wenn das Filter da noch nicht "gscheid" sperrt.
Also ein Filter, das ab 16kHz abfällt und bis 24kHz weitgehend zu ist.
(?)
Reicht sogar, wenn es die Sperrdaempfung erst bei 33kHz erreicht - wenn ich eben davon ausgehen kann, dass im Originalsignal nix oberhalb von 15kHz drinnen ist.
Dann koennen eben auch keine Aliasspektren unterhalb von 33kHz drinnen sein.
Wenn das Signal keine störenden Oberwellen hat, wozu dann filtern?
Die Oberwellen sind doch drin, wegen der Interpolation, also meinetwegen
der Wertewiederholung.
Wenn dein Originalsignal (mit 48kHz gesampled) nur Anteile bis z.b. 15kHz hat und du dieses Signal dann auf 192kHz Samplerate interpolieren willst, kriegst du nach/durch der/die Interpolation Stoerspektren z.b um 48kHz herum rein, die eine Bandbreite von z.B. 2x15kHz haben, also z.B. von 33..63kHz. Dieses Zeugs solltest du dann rausfiltern, weil die eben nicht im Originalsignal waren. Denn auch bei 192kHz Samplerate ist's schick, wenn dein Signal nur die Originalanteile (bis z.B. 15kHz) hat und nix drueber.
Guggstu blaue Kurve: Du willst eigentlich nur das Stueckchen ganz links oben in deinem Ausgangssignal haben, den komischen Trichter in der Mitte und das Stueck rechts soll dein Tiefpass soweit abschwaechen, dass es dich nicht mehr stoert.
Zusaetzlich hast du dir durch's simple Wiederholen der Samples auch im eigentlich erwuenschten Bereich ganz links schon so ein bisschen eine Daempfung bei 20kHz eingefangen (vielleicht so 2dB. Pi x Daumen x Auge)
Also brauchst du idealerweise einen TP-Filter, der von 0..20Khz erst einen leichten (~2dB) Anstieg drinnenhat, ab da dann hurtig in den Sperrbereich geht, und ab (48-20)kHz soviel daempft, dass dich die restlichen blauen Kurvenstuecke nicht mehr kratzen.
Thats all.
Ein Signal kann digital von -1 auf 1 springen, wäre also ein Rechteck
mit 24 kHz.
Nee, waere es nicht. Maximal ein Sinus mit 24kHz. Abtasttheorem - kennste, kennste, kennste? Wie Nussloch, nur besser, weil ohne Handtasche und ohne Freundin.
Aber tu dir diesen Grenzfall von halber Abtastfrequenz nicht an.
Nimm ein Signal 2,-1, -1, 2, -1, -1, 2 ... Das entspraeche dann z.B. einem 16kHz Sinus mit 48KSamples/sec abgetastet. Und nix anderem - also kein Rechteck, oder irgendwelche Dreiecke, sonst waeren Handtasche, Freundin, Outlet und Abtasttheorem verletzt.
Ich gehe nicht davon aus, was die -1 und +1 bedeuten, sondern einfach, dass sie da sind. Und ein Sprung ist nun mal ein Rechteck, weil die Werte während der gesamten Periode gelten.
Und ein Sprung ist nun mal ein Rechteck, weil die
Werte während der gesamten Periode gelten.
Nee, isser nunmal nicht. Das ist halt der typische Fehler, zu denken, man kann da einfach irgendwelche Geraden ziehen zwischen zwei Samples.
Lerne. das. Abtasttheorem. zu. verstehen.
Streng genommen ist es ein Dreieck, weil es ein begrenzter Anstieg in einer endlichen Zeit ist. Ein Rechteck hätte einen unendlich steilen Anstieg. Die Interpretation des Dreiecks gilt aber auch nur, wenn man es als kontinuierliches Signal ansieht, so wie es sich in der Zeichnung darstellt.
Das darf man aber nicht, weil:
Werte während der gesamten Periode gelten.
Das ist leider ein Denk- oder Interpretationsfehler, den Viele machen, wie W.K schon angedeutet hat. Diskrete Samples gelten nur in einem infinisimalen Zeitraum, nämlich am unendlich kurzen Samplezeitpunkt, an dem sie gewonnen oder erzeugt wurden.
Was allerdings der Fall ist: Sie liegen beim einfachen Abspielen durch einen DAC (und auch beim einfachen draufschauen !) während der gesamten Zeit an, bis ein neues Sample kommt. Das aber macht eben die Rechtecke, die - gibt man sie ungefiltert aus - zu den besagten Fehlern führen. Deshalb der AA-Filter, weil man das eben nicht machen darf, weil man dann dem Signal Informationen hinzufügt, die in den Samples nicht enthalten waren.
Die Samples machen keine Aussage, was dazwischen passiert ist, als gesampelt wurde. Das muss hinzuinterpretiert werden. Das kann man tun, wenn man digitale Signale und Codes abspielen will, wie bei einen AWG. Ich arbeite gerade an so etwas. Dann kann man ein ideales Rechteck oder ein Dreieck oder ein bandbegrenztes Rechteck eininterpretieren und modellieren. Beim Video passiert das auch: Es wird oberhalb von Nyquist interpretiert und maximale Anstiege prozessiert, um z.B. Videomonitorsignale zu prozessieren. Nur dann gibt es einen harten Kontrast mit einer schwarzen Linie auf weißen Grund von der Breite 1.
Das sind aber Sonderfälle. Grundsätzlich gilt, dass in einem Datenstrom von N Bit/Sek maximal Frequenzen bis kurz unterhalb der halben Frequenz a) abgebildet und b) auch rekonstruiert werden können.
Beim "Rekonstruieren können" gilt übrigens auch die Betrachtung mit der Filtterbreite und "länge": Eine Frequenz nahe an Nyquist braucht einen elend langen FIR oder extrem steilen Analogfilter, um nicht zu schweben oder anderen Kram zu fabrizieren.
Ganz korrekt wäre also ein unendlich ausgedehntes
Halbbandfilter.
Es brauchte nicht nur ein unendliches HBF, sondern auch eine unendliche Auflösung, sowie ein unendliche Steilheit im Bereich der Grenzfrequenz.
Gar nicht. Gibt es eben nicht. Man benutzt eine wenigstens nochmal doppelt so hohe Abtastrate = Faktor 4, um von Nyquist und dem HBF wegzukommen. Dann ist so ein Filter auch zu bauen. Das Filter setzt oberhalb des Nutzbandes ein und macht vor Nyquist zu.
In meinem Audiosignal kommt eh nix mehr ueber 15kHz vor
Also ein Filter, das ab 16kHz abfällt und bis 24kHz weitgehend zu ist.
So ähnlich. Da auch das nicht geht, nimmt man ein Filter, das ein GF von 24kHz hat, bei 16kHz noch 100% offen ist, dann erst nach 2 Oktaven Nyquist erreicht und arbeitet mit 192kHz.
Machen wir es konkret: Wie lange muss ein Filter sein, damit er genügend gut arbeitet? Das ist doch eine reine Definitionssache und geht niemals perfekt.
Ausgehend von den 192kHz und 48kHz könnte man den Filter auf 24kHz auslegen. Von mir aus 2x Halbband. Was wäre der Vorteil es nicht in einem Rutsch zu machen? Geringerer Rechenbedarf aber dafür 2x Ungenauigkeiten des Filters?
Ist doch schon hier und in zig anderen Threads bis zum Erbrechen durchgekaut worden oder nicht?
Du kannst FIR-Halbbandfilter so auslegen, dass fast jeder 2. Koeffizient 0 ist, d.h. du sparst dir die Haelfte der Multiplikationen. etc. bla. fasel...
Wenn man die Koeffizienten ausrechnet, die sich durch das Verknüpfen ergeben, dann speist aber der erste Koeffizientensatz seine Nullen in den zweiten ein ...
Einmal die Abtastungen verdoppeln, dann nochmal verdoppeln, der
Speicherbedarf wird ja auch größer.
Das braucht aber immer noch einen Filter. Je nach Rechenaufwand und Zeitbedarf kann man das ausmultiplizieren und direkt anwenden. Bedarfsweise vereinfacht man die sich ergebenden Koeffizienzen zu Ganzzahlen und landet in der Nähe meiner Lösungen von oben:
Wenn man die Koeffizienten ausrechnet, die sich durch das Verknüpfen
ergeben, dann speist aber der erste Koeffizientensatz seine Nullen in
den zweiten ein ...
... aber mit einer anderen Zeit. Der erste Filter wirkt ja so, daß die Werte mit dessen Koeffizienten multipliziert und akkumuliert werden. Dann wird zeitlich abgetastet.
Das Einsparen müsste dann aber für einen Viertelbandfilter auch gelten
Vergleichen wir jetzt einen einzigen Filter mit f25% oder zwei mit 50%?
Fall 2: Siehe oben. Fall 1 führt zu anderen Koeffizienten und zu einer anderen Filterlänge, will man es richtig machen. Mit einem entsprechend längeren Filter, der n*n steps lang sein müsste, um in der Länge der Doppelanordnung äquivalnet wäre, erreicht man eine wesentlich höhere Genauikeit, bei eben SEHR viel größerer Länge. Das kann man z.B. optimieren, indem man 2 kaskadierte Filter der doppelten Länge nimmt. Das ergibt 2x2xN Rechnungen und eine ähnliche Qualität. Da muss man aber genau hinsehen.
24khz Signal bei 48khz Abtastung als Daten > aussieht,
Könnte irgendetwas sein, weil die Frequenz nicht mehr erfasst wird. Es wird ja immer auf demselben Punkt gesampelt. Das Ergebnis ist also nur abhängig von der Phase mit der man das Signal erwischt.
Aktuell kann man teilweise genauere Verfahren als lineare Interpolation einzusetzen. Letztlich: Klangtechnisch müsste man - egal mit welchem Verfahren - eher ein wenig herumprobieren und eventuell ein wenig mit eigener Hand optimieren.
(https://www.extrapolationcalculator.com/de/blog/interpolation-methods-compared/)
Der Thread is von 2023. Müsste IMO bei jedem Posten angezeigt werden
"Der letzte Post ist > 1 Jahr her. Wirklich wiederbeleben?"
Dann schau mal was groß und in rot über dem Texteingabefeld steht. Und der letzte Post ist auch bedeutend jünger, deiner bspw ist gerademal etwa 1,5h alt.
Naja, das sind sehr viele allgemeine Dinge ohne konkrete Vertiefung. Da muss man schon mal genauer hinsehen.
Wenn man ein Signal mit sehr geringem Abstand zur fs hochsetzen und interpolieren will, muss man einiges an Filterleistung reinstecken. Das geht aber durchaus linear - ich verweise speziell auf Beitrag "Re: Wie sauber samplerate vervierfachen"
Praktisch sind die 4 samples aus einem durch eine 4-Fach-Rekursion gewonnen, die in einer pipiline steckt. Der dort vorgestellte Filter produziert entsprechende Oberwellen und falsche Informationen, die ins niederfrequenter Sepktrum gespiegelt werden. Allerdings lässt sich das eben mit einer entsprechenden Samplerrate verschieben und mit sehr einfacher Filterung erschlagen.
Die maximale Abweichung zwischen der linearen und der echten Kurve, wenn man z.B. von einem Sinus maximaler Frequenz von 24kHz ausgeht, sind jederzeit weniger als 7 digit. Infolge der spektralen Verteilung liegen die im Wesentlichen oberhalb der Sampling-Frequenz und werden nur teilweise wieder nach unten gespiegelt. Das Nutzspektrum hier ist etwa 150kHz von markierten 192kHz. Das gleiche gilt für die Verteilung der Rundungsfehler der Rechnung, die bei max 4 digit liegt. Diese muss man sich an der Sampling Frequenz gespiegelt vorstellen.
Daraus ergibt sich die folgende statistische Kurve der maximalen Fehler.
Mit simplem 2 Bit-noise shaping kann man das Rauschen noch nach oben bringen und zusammen mit dem Frequenzgang des Systems (in grün, 10 fach vergrössert) ergibt sich ein Fehler von gut 2 digit, wobei der bei 24kHz auftritt, die ja auch noch final mit 3dB am Ausgang gefiltert werden.
Im Hörbaren ist der Fehler noch kleiner.
Das alles geht so simpel, weil man ordentlich fett übertaktet :-)