Hallo, Ich muss bei einem Projekt audio daten verarbeiten. Genauer, ich komme per i2s mit 48 kHz an und muss mit 192 kHz auf einer 2. I2s wieder raus. Also mal 4. Jetzt könnte ich halt einfach jeweils die 3 fehlenden Werte Lineal ausrechnen, aber ich vermute das wird nicht sauber. Kennt jemand einen guten open-source samplerate converter der das kann? Ober geht das vielleicht recht simpel mit was anderem?
Beitrag #7340479 wurde von einem Moderator gelöscht.
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.
Moin, Peter schrieb: > 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. Peter schrieb: > 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. Du kannst "mal eben" die Samplerate ver160fachen, entsprechend tiefpassfiltern, danach wieder 147fach unterabtasten. Schon fertig :-) Gruss WK
> Ober geht das vielleicht recht simpel mit was anderem? Ja, mach einfach nullen da rein. :) https://www.wavewalkerdsp.com/2022/09/01/introduction-to-interpolation-and-upsampling/ Olaf
> aber ich vermute das wird nicht sauber.
Was bringt dich auf das schmale Brett?
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 auffüllen mit Nullen ist interessant.
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.
Moin, Peter schrieb: > 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. Gruss WK
Das klingt bei dir (WK) so einfach! Ich versuche es jetzt erstmal mit der einfachen Version und dann schauen wir mal weiter.
Moin, Peter schrieb: > Das klingt bei dir (WK) so einfach! Wenn man's erst verstanden hat, ist's das auch ;-))) Aber man kann's auch wissenschaftlich verbraemen mit Begriffen wie: "Polyphasenfilterbank". > Ich versuche es jetzt erstmal mit der einfachen Version und dann schauen > wir mal weiter. Frohes Hacken! Gruss WK
Audiphilitaet ist gut, Messtechnik ist mir da lieber. Esoterik hat hier nix zu suchen. Am Ende geht es hier aber wirklich um audio. Darum die Idee mit den 44,1. Die kann ich aber auch *4 nehmen (176,4).
Moin, 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? Gruss WK
Ich bekomme Daten also slave und sende als Master. Wobei ich einige samples (gut 10ms) im Speicher habe, kommt halt durch die dma buffer Verarbeitung.
> spielt das nicht so eine große Rolle, solange ich nur ein *4 mache.
Bei der linearen Interpolation kann man sich regelmaessig
das Filter sparen.
Gasheizer schrieb: > Bei ganzzahligen Vielfachen kannst du unbesorgt linear interpolieren. Das würde ich so unterschreiben, siehe unten zum Aufwand bei der Filterung. Gasheizer schrieb: > Bei der linearen Interpolation kann man sich regelmaessig > das Filter sparen. Das nicht! Gasheizer schrieb: > 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? Dergute W. schrieb: >> 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. Dergute W. schrieb: > 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. Dergute W. schrieb: > So dass du ggf. auch mal 47.99999kS/s -> 192.00001kS/s Conversion machen Siehe die angehängte Schaltung. Ich fürchte das ist aber schon zuviel Elektronik von den TE.
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. Danke für die guten Tipps.
> und einen Filter auf die Daten los gelassen
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.
Peter schrieb: > Genauer, ich komme per i2s mit 48 kHz an und muss mit 192 kHz auf einer > 2. I2s wieder raus. Schieb doch einfach 4x den selben Wert raus. Das ändert nichts an der Qualität und die Anforderung ist erfüllt.
Gasheizer schrieb: > Bei der linearen Interpolation kann man sich regelmaessig > das Filter sparen. Das ist leider unrichtig. Die Interpolation ist meistens unzureichend, um ohne weitere Filterung auszukommen. Gasheizer schrieb: > 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. Stefan P. schrieb: > Schieb doch einfach 4x den selben Wert raus. Das ist noch schlechter als die Interpolation, weil das so entstehende Rechteck mehr Oberwellen und Fehler hat. > Das ändert nichts an der Qualität Es ändert sich sehr wohl das Signal. Das Auffüllen ist die einfachste und schlechteste Möglichkeit der Interpolation.
Jürgen S. schrieb: > 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.
avr schrieb: > 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?
Rolf S. schrieb: > Stefan P. schrieb: >> Schieb doch einfach 4x den selben Wert raus. > > 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.
avr schrieb: > 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.
Grummler schrieb: > Nie angeben, welche Fälle man miteinander vergleicht! > Der Leser könnte eventuell folgen... Immer lesen, worum es ging, dann erübrigen sich Rückfragen: Es ging um lineare Interpolation, die der TE "lineal" nennt <-> Fortführung des Wertes durch Kopieren. Grummler schrieb: > Es entsteht exakt dasselbe Zeitsignal. Das gilt nur für die Einheit, die tatsächlich die eigentliche DA-Wandlung macht und auch nur dann, wenn man das sample & hold außer Acht lässt. Reale Wandler arbeiten aber mit Verrauschen, Oversampling, um ihr Anti-Aliasing-Filter passend anzusteuern. Alle 3 Komponenten Verrauschen, Oversampling und Antialias sind bei einem höher auflösenden Wandler anders (eingestellt). > Also kann die Qualität sich nicht geändert haben. Nein, es wird sich im Regelfall auswirken.
Grummler schrieb: > Man erkennt auch, dass selbst lineare Interpolation > die Energie der Quantisierungsverzerrungen schon > deutlich reduziert So ist es. Grummler schrieb: > Dass bessere Interpolationsmethoden zu noch besseren > Ergebnissen führen, wurde nicht bestritten. Daher mein Vergleich.
avr schrieb: > 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: 1) 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. 2) 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 3) 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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
Es ist schön und dankenswert, dass Du Dir so viel Mühe gibst. Jürgen S. schrieb: > 1) 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).
Justin S. schrieb: > Jürgen S. schrieb: >> 1) 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 :).
Peter schrieb: > 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 :-) Also nochmal langsam: Peter schrieb: > 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. Die Abweichungen sind rechen- und messbar. Justin S. schrieb: > 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. Justin S. schrieb: > 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! Justin S. schrieb: > 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.
Gasheizer schrieb: > 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? Gasheizer schrieb: > 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. Gasheizer schrieb: > 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. Gasheizer schrieb: > 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. Gasheizer schrieb: > Aber Rauschen werde ich nicht dazu tun. 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.
:
Bearbeitet durch User
Gasheizer schrieb: > Den groessten Fehler der linearen Interpolation kann man an einem > 24 kHz (Sinus-)Signal abschaetzen, dass mit 48 kHz abgetastet wurde Ist ein 23.9kHz Signal bei der Rate nicht das größere Problem?
> 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.
> Ober geht das vielleicht recht simpel mit was anderem?
Ja. Nennt sich Sample Rate Converter und gibt es preiswert bei z.B. TI.
Gasheizer schrieb: >> ein 23.9kHz Signal > > Ja, Fangfrage. Das koennte bei einem korrekt dimensionierten > Antialiasingfilter am Eingang da gar nicht auftauchen. Dann tauchen deine 24.0 aber erst recht nicht auf und dann gäbe es das Problem nicht. Ich frage also anders herum: Welche höchste Frequenz taucht auf und wie sähe die Interpolation aus, bzw. wie sollte sie deiner Meinung nach aussehen? Angenommen, es handelt sich um 15,77 kHz. Macht es das besser?
Jürgen S. schrieb: > 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.
math.h oder matlab sind dein Freund dabei.
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.
> Wobei wenn man einen sinus von > 24khz nimmt hat man ja nicht viel Informationen bei 48khz Abtastung. Ja, wenn man Pech hat, tastet man nur die Nullpunkte ab :). Aber man konnte damit sehr einfach die Interpolation abschaetzen. 15.77 kHz bei 48 kHz Samplerate wuerde man sich als Oszi nicht antun. Waere so in einer Audiodatei auch seltsam. Ein Midi/Audio-Sequenzer benutzt intern Gleitkomma und 384 kHz Samplerate.
Tja an deinen Bildern kann man schon sehen das es immer gut ist hoch abzutasten.
Gasheizer schrieb: > 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: 1) 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. 2) 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.
@Gasheizer: 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. Gasheizer schrieb: > 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. Gasheizer schrieb: > 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: Gasheizer schrieb: > 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).
Beitrag #7344513 wurde von einem Moderator gelöscht.
avr schrieb: > 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: A2 = (A0 + B0) / 2 A1 = (A0 + A2) / 2 A3 = (A2 + B0) / 2 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. avr schrieb: > 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. ----------------------------------- MGC = milk girl calculation 😄
Gasheizer schrieb: > 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.
Entwiggler schrieb im Beitrag #7344513: > 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).
Justin S. schrieb: > 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 ...
Justin S. schrieb: > 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". Justin S. schrieb: > 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.
Jürgen S. schrieb: > Gasheizer schrieb: >> 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.
Beitrag #7345882 wurde von einem Moderator gelöscht.
Beitrag #7345888 wurde von einem Moderator gelöscht.
Beitrag #7346102 wurde von einem Moderator gelöscht.
Juhu meine erste Frage wo Beiträge gelöscht werden. Schade aber auch, hätte gerne gewusst was da stand. War bestimmt interessant.
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.
Peter schrieb: > 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.
Peter schrieb: > 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.
Moin, Uiuiui, soviele Eggsberden hier mittlerweile, ich bin zutiefst impraegniert. Peter schrieb: > 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. Gruss WK
Dergute W. schrieb: > 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...
Nochmal was zum Probieren ... 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 :-)
Dergute W. schrieb: > 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. Grummler schrieb: > 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.
Jürgen S. schrieb: > JS-interpoliert in violett. Java Script? >Was fällt auf? Das grüne ist das kleinste. > Bild 2: ... Was fällt auf? Das grüne ist das wieder das kleinste. Grummler schrieb: > 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. Dergute W. schrieb: > 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?
Moin, Alf schrieb: > 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). Gruss WK
Alf schrieb: >> JS-interpoliert in violett. > Java Script? Verstehe ich auch nicht. > 6dB Filter 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.
Justin S. schrieb: > Ne jetzt ist mal Schluss hier. Kein Fachmann der Welt > versteht einen einzigen dieser Begriffe. Komisch. Ich habe einen Großteil dessen, was Jürgen schrieb, verstanden. Muss wohl daran liegen, dass ich kein Fachmann bin... > Hör mal auf, so zu tun, als wüsstest Du, wovon Du redest. Und hier eine weitere Folge der beliebten Serie "Deppen beleidigen Fachleute". Viel Spaß beim Zuschauen!
Justin S. schrieb: >> 6dB Filter > Kenne ich nicht. Meinst Du vielleicht einen nichtrekursiven Tiefpass mit Die Frage geht wohl an jemanden anderen. Bitte richtig zitieren. Jetzt mach ich es aber auch mal so: Justin S. schrieb: >> statistisch interpolierenden teilinearen Filter > Hä? Nun wirds abenteuerlich ... Dem schließe ich mich nun wiederum an. Justin S. schrieb: >> AA-Filter > Hm, ist das eine Windel? Google liefert "Ungefähr 326.000.000 Ergebnisse". Dergute W. schrieb: > 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.
Justin S. schrieb: >> Java Script? > Verstehe ich auch nicht. 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.
Moin, Jürgen S. schrieb: > ... viel Text .... Aber fuer meinen Geschmack zu wenig Butter bei die Fische. Was hat dein Filter fuer eine Impulsantwort? Wie sieht der Frequenzgang aus? Gruss WK
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.
:
Bearbeitet durch User
Moin, 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. Gruss WK
Peter schrieb: > Bei 16 kHz mit deiner Methode sieht das sehr gut aus. > Aber das ist ein sinus, wie gut ist das bei Musik? Auch Musik besteht nur aus Sinus-Signalen. Eine Oberwelle von 16kHz wird zumindest in 48kHz Material nicht mehr kodiert werden können. Gasheizer schrieb: > 15_77_48.png 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. Grummler schrieb: > Also kann die Qualität sich nicht geändert haben. Grummler schrieb: > 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. Gruß Jobst
Gut erklärt - man fragt sich, wer da negativ wertet. Nur ein Punkt: Ist das nicht widersprüchlich? Jobst M. schrieb: > Eine Oberwelle von 16kHz wird > zumindest in 48kHz Material nicht mehr kodiert werden können. Jobst M. schrieb: > Wenn ich analoge Signale aufnehme, so ist es heutzutage eigentlich kaum > ein Problem, bis kurz vor die halbe Samplingfrequenz zu gehen.
Jürgen S. schrieb: > 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.
Harald E. schrieb: > Nur ein Punkt: Ist das nicht widersprüchlich? > > Jobst M. schrieb: >> Eine Oberwelle von 16kHz wird >> zumindest in 48kHz Material nicht mehr kodiert werden können. Nein, aber dieser Satz evtl. missverständlich. Besser: "Eine Oberwelle von einem 16kHz Grundton wird zumindest in 48kHz Material nicht mehr kodiert werden können." Harald E. schrieb: > 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. Gruß Jobst
Jobst M. schrieb: > 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. Harald E. schrieb: > 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. 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.
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.
Jürgen S. schrieb: > 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. Gruß Jobst
Jobst M. schrieb: > Jürgen S. schrieb: >> 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. Jobst M. schrieb: > 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. Wozu also?
Grummler schrieb: >> 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. 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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
Andreas F. schrieb: > 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? Andreas F. schrieb: > 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. Gruß Jobst
:
Bearbeitet durch User
Thorsten S. schrieb: > zwei kaskadierte Halfbandfilter wären hier der bessere Interpolator. Warum nimmt man 2 kaskadierte Halbbandfilter statt eines einzigen mit geringerer Grenzfrequenz? Thorsten S. schrieb: > 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. Jobst M. schrieb: > 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.
Moin, Andreas F. schrieb: > Warum nimmt man 2 kaskadierte Halbbandfilter statt eines einzigen mit > geringerer Grenzfrequenz? Weil man dann weniger rechnen muss, wenn man sich g'schickt anstellt. Andreas F. schrieb: > immerhin 90dB/Oktave. Sehr sportlich. Nee, im Digitalen ist die Sportlichkeit viel weniger sportlich als im Analogen. Gruss WK
Andreas F. schrieb: > 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. Gruß Jobst
Jobst M. schrieb: > 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. Andreas F. schrieb: > 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. Jobst M. schrieb: > (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?
Dergute W. schrieb: > Andreas F. schrieb: >> 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. Jobst M. schrieb: > Angehängt mal ein Bild (TI DF1706). 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.
Andreas F. schrieb: > 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. Gruß Jobst
:
Bearbeitet durch User
Jobst M. schrieb: > 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.
Harald E. schrieb: > Wo sind denn in besagten CD-Spielern solche Gräber an Spulen verbaut? > Noch nie gesehen. Bitte - 2 Beispiele - sogar hier im Forum: Zwei Spulen je Kanal. https://www.mikrocontroller.net/attachment/569082/ONKYO_DX6640.JPG Extra Board mit je 5 Spulen pro Kanal - Denon DCD-1500 (1. Version) https://www.mikrocontroller.net/attachment/569099/Kuriositaeten_unterm_Filter.jpg Thread dazu: Beitrag "Re: Ausgangsfilter CD-player mit 8-fach oversampling" > Das muss wohl in den 80ern gewesen sind. Ja natürlich! Ende der 80er hatten Player ja schon vielfaches Oversampling. > Und dann wären auch analoge Lösungen mit den damaligen digitalen > Lösungen zu vergleichen Nein. Es war eine klangliche Revolution! > und das hieße sehr teuere Microcontroller und > sehr teueres RAM. Nein, wozu? Gruß Jobst
Ich weis nicht ob das die besten Beispie sind. Onkyo ist pleite und das andere Beispiel steht schon unter Kuriositäten. Der Vergleich mit dem RAM war so gemeint, dass man Technik von vor 30 Jahren miteinander vergleicht. Heute baut das in beiden Fällen keiner mehr so.
Harald E. schrieb: > Ich weis nicht ob das die besten Beispie sind. 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? Gruß Jobst
Jobst M. schrieb: > 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.
Grummler schrieb: > -- 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.
Beitrag #7463761 wurde vom Autor gelöscht.
Rolf S. schrieb: > Ganz korrekt wäre also ein unendlich ausgedehntes > Halbbandfilter. Das konstruiert man wie? Jobst M. schrieb: > Iss richtig. Spulen kosten ja nix. Man muss beschauen, wo man im design ist. Eine keine Drossel macht oft mehr Sinn, als ein OP, schon rein platzmäßig.
Moin, Mann Fred T. schrieb: > Rolf S. schrieb: >> 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. scnr, WK
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.
Moin, 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. Gruss WK
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?
Moin, Mir ist arg unklar worauf du rauswillst. Manni T. schrieb: > 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? Gruss WK
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.
Moin, 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... Gruss WK
Dergute W. schrieb: > 48-15=33kHz. Warum 33? Wenn das Filter ab 20kHz noch etwas durchlässt, wird es doch spektral wieder nach unten geklappt, wenn es > 24kHz ist (?). Dergute W. schrieb: > In meinem Audiosignal kommt eh nix mehr > ueber 15kHz vor, Also ein Filter, das ab 16kHz abfällt und bis 24kHz weitgehend zu ist. (?)
Moin, Manni schrieb: > 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. Manni schrieb: > 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. Gruss WK
Wenn das Signal keine störenden Oberwellen hat, wozu dann filtern? Die Oberwellen sind doch drin, wegen der Interpolation, also meinetwegen der Wertewiederholung.
Moin, Manni schrieb: > 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. Gruss WK
Eben, dann machen wir es mal konkret (und kommen wieder zum TE): Er hat einen Audio-Daten-Strom von 48kHz, der bis zu 20kHz Information hat. Er sampled es mit Faktor 4 hoch und benutzt das Sample-Wiederholen. Die Anstiege sind von Sample zu Sample am Übergang dieselben wie vorher, danach gibt es Geraden, also z.B.: 1.4.5 -> 1 1 1 1 . 4 4 4 4 . 5 5 5 5 Da es nun 192kHz sind, ist der Anstieg real 4x so steil, kann also 80kHz haben. Um es wieder stimmig zu machen, nehmen wir einen FIR mit 192kHz Samplefrequenz, aber trotzdem 20kHz Grenzfrequenz. Wie lang sollte er mindestens sein?
Moin, Manni schrieb: > Da es nun 192kHz sind, ist der Anstieg real 4x so steil, kann also 80kHz > haben. Das wuerde ich so nicht unterschreiben. Zum Rest: Ich schrub bereits vor langer Zeit hier incl. Bildunterstuetzung: Beitrag "Re: Wie sauber samplerate vervierfachen" 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. Gruss WK
Dergute W. schrieb: > Manni schrieb: >> Da es nun 192kHz sind, ist der Anstieg real 4x so steil, kann also 80kHz >> haben. > Das wuerde ich so nicht unterschreiben. Wieso nicht? Ein Signal kann digital von -1 auf 1 springen, wäre also ein Rechteck mit 24 kHz.
Manni schrieb: > 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. Gruss WK
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.
Manni schrieb: > 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. Gruss WK
Manni schrieb: > Und ein Sprung ist nun mal ein Rechteck, 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.
Ein Nachtrag hierzu wo ich das gerade lese: > Rolf schrieb: >> 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. Fred schrieb: > Das konstruiert man wie? 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. Fred schrieb: > Dergute W. schrieb: >> 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.
Peter schrieb: > Kennt jemand einen guten open-source samplerate converter der das kann? > Ober geht das vielleicht recht simpel mit was anderem? sox
Thorsten S. schrieb: > zwei kaskadierte Halfbandfilter wären hier der bessere Interpolator. Falls das noch gelesen wird: Wie würde man die auslegen?
Moin, Simon R. schrieb: > Wie würde man die auslegen? So, dass deren Vorteile voll zum Tragen kommen. Gruss WK
Dergute W. schrieb: > So, dass deren Vorteile voll zum Tragen kommen. Ja sicher dat! 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?
Moin, 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... Gruss WK
Das Einsparen müsste dann aber für einen Viertalbandfilter auch gelten ...
Wenn man die Koeffizienten ausrechnet, die sich durch das Verknüpfen ergeben, dann speist aber der erste Koeffizientensatz seine Nullen in den zweiten ein ...
Und wenn ich mir ein Loch ins Knie bohre, kann ich Milch hineingiessen.
Huuups - Spontane uservaporisierung. Da kann man mal sehen, was passsieren kann, wenn man die Samplerate zu unsauber versucht, zu vervierfachen. scnr, WK
Peter schrieb: > Jetzt könnte ich halt einfach jeweils die 3 fehlenden Werte Lineal > ausrechnen, aber ich vermute das wird nicht sauber. Einmal die Abtastungen verdoppeln, dann nochmal verdoppeln, der Speicherbedarf wird ja auch größer.
Dergute W. schrieb: > Spontane uservaporisierung User weg - dafür thread aus der Versenkung. Ich räume mal von hinten auf: Rbx schrieb: > 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: Beitrag "Re: Wie sauber samplerate vervierfachen" Beitrag "Re: Vergleich interpolations-Optionen" Simon R. schrieb: > 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. Simon R. schrieb: > 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. Dergute W. schrieb: > Du kannst FIR-Halbbandfilter so auslegen, dass fast jeder 2. Koeffizient > 0 ist Wobei aus Audio-Sicht die Frage ist, ob man wirklich mit einem HBF und hier mit 24kHz gut hinkommt. Simon R. schrieb: > Ausgehend von den 192kHz und 48kHz könnte man den Filter auf 24kHz > auslegen. Ich würde 16kHz nehmen. Das ergibt auch noch eine Anzahl Nullen, transportiert das Band korrekt genug und hat im Stoppband weniger Störungen. Simon R. schrieb: > Thorsten S. schrieb: >> zwei kaskadierte Halfbandfilter wären hier der bessere Interpolator. > Falls das noch gelesen wird: Wie würde man die auslegen? S.o.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.