Forum: Digitale Signalverarbeitung / DSP / Machine Learning Wie sauber samplerate vervierfachen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peter (Gast)


Lesenswert?

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.
von Peter (Gast)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von olaf (Gast)


Lesenswert?

> 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

von Gasheizer (Gast)


Lesenswert?

> 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...

von Peter (Gast)


Lesenswert?

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.

von Gasheizer (Gast)


Lesenswert?

> 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, ...

von Peter (Gast)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

Das klingt bei dir (WK) so einfach!
Ich versuche es jetzt erstmal mit der einfachen Version und dann schauen 
wir mal weiter.

von Dergute W. (derguteweka)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

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).

von Dergute W. (derguteweka)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

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.

von Gasheizer (Gast)


Lesenswert?

> 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.

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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.

von Gasheizer (Gast)


Lesenswert?

> 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.

von Stefan P. (form)


Lesenswert?

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.

von Rolf S. (audiorolf)


Lesenswert?

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.

von avr (Gast)


Lesenswert?

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.

von Audiomann (Gast)


Lesenswert?

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?

von Grummler (Gast)


Lesenswert?

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.

von Grummler (Gast)


Lesenswert?

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.

von Rolf S. (audiorolf)


Lesenswert?

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.

von Rolf S. (audiorolf)


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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
von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

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
von Justin S. (Gast)


Lesenswert?

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).

von Grummler (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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.

von Gasheizer (Gast)


Lesenswert?

> 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 :).

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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
von Dolf (Gast)


Lesenswert?

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?

von Gasheizer (Gast)


Lesenswert?

> 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.

von Gasheizer (Gast)


Lesenswert?

> 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.

von Leopold 2 (Gast)


Lesenswert?

> Ober geht das vielleicht recht simpel mit was anderem?
Ja. Nennt sich Sample Rate Converter und gibt es preiswert bei z.B. TI.

von Dolf (Gast)


Lesenswert?

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?

von avr (Gast)


Lesenswert?

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.

von Gasheizer (Gast)


Lesenswert?

> 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.

von Peter (Gast)


Lesenswert?

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.

von Gasheizer (Gast)


Angehängte Dateien:

Lesenswert?

> 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.

von Peter (Gast)


Lesenswert?

Tja an deinen Bildern kann man schon sehen das es immer gut ist hoch 
abzutasten.

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

@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.
von J. S. (engineer) Benutzerseite


Lesenswert?

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 😄

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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).

von Justin S. (Gast)


Lesenswert?

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 ...

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von Grummler (Gast)


Angehängte Dateien:

Lesenswert?

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.
von Peter (Gast)


Lesenswert?

Juhu meine erste Frage wo Beiträge gelöscht werden.

Schade aber auch, hätte gerne gewusst was da stand. War bestimmt 
interessant.

von Peter (Gast)


Lesenswert?

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.

von Rechenfreund (Gast)


Lesenswert?

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.

von Grummler (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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.

von Dergute W. (derguteweka)


Angehängte Dateien:

Lesenswert?

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

von Grummler (Gast)


Lesenswert?

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...

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

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 :-)

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von Alf (Gast)


Lesenswert?

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?

von Dergute W. (derguteweka)


Lesenswert?

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

von Justin S. (Gast)


Lesenswert?

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.

von Grummler (Gast)


Lesenswert?

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!

von Alf (Gast)


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

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
von Dergute W. (derguteweka)


Lesenswert?

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

von Jobst M. (jobstens-de)


Lesenswert?

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

von He. (Gast)


Lesenswert?

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.

von He. (Gast)


Lesenswert?

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.

von Jobst M. (jobstens-de)


Lesenswert?

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

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.

von Jobst M. (jobstens-de)


Lesenswert?

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

von Andi (chefdesigner)


Lesenswert?

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?

von Thorsten S. (thosch)


Lesenswert?

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
von Thorsten S. (thosch)


Lesenswert?

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
von Jobst M. (jobstens-de)


Lesenswert?

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
von Andi (chefdesigner)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von Jobst M. (jobstens-de)


Angehängte Dateien:

Lesenswert?

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

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

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?

von Andi (chefdesigner)


Lesenswert?

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.

von Jobst M. (jobstens-de)


Angehängte Dateien:

Lesenswert?

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
von He. (Gast)


Lesenswert?

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.

von Jobst M. (jobstens-de)


Lesenswert?

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

von He. (Gast)


Lesenswert?

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.

von Jobst M. (jobstens-de)


Lesenswert?

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

von Andi (chefdesigner)


Lesenswert?

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.

von Rolf S. (audiorolf)


Lesenswert?

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.
von Mann Fred (Gast)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von Mann Fred (Gast)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von Mann Fred (Gast)


Lesenswert?

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?

von Dergute W. (derguteweka)


Lesenswert?

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

von Mann Fred (Gast)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von Mann Fred (Gast)


Lesenswert?

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. 
(?)

von Dergute W. (derguteweka)


Lesenswert?

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

von Mann Fred (Gast)


Lesenswert?

Wenn das Signal keine störenden Oberwellen hat, wozu dann filtern?

Die Oberwellen sind doch drin, wegen der Interpolation, also meinetwegen 
der Wertewiederholung.

von Dergute W. (derguteweka)


Lesenswert?

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

von Mann Fred (Gast)


Lesenswert?

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?

von Dergute W. (derguteweka)


Lesenswert?

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

von Mann Fred (Gast)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von Mann Fred (Gast)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von G. K. (zumsel)


Lesenswert?

Peter schrieb:
> Kennt jemand einen guten open-source samplerate converter der das kann?
> Ober geht das vielleicht recht simpel mit was anderem?

sox

von Rolf S. (audiorolf)


Lesenswert?

G. K. schrieb:
> sox

Hast du schon probiert, die Sourcen zu nutzen?

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
Noch kein Account? Hier anmelden.