Spricht hier jemand FFT?

...n lecker Bierchen trinken, relaxen und plaudern. Das kann man hier am besten!

Moderatoren: TVPstudio, kubi

olafmatt
Beiträge: 1094
Registriert: Sa Okt 07, 2006 6:56 pm
Wohnort: DE & SK

Spricht hier jemand FFT?

Beitrag von olafmatt »

Moin zusammen,

ich habe schon überlegt ob ich mit dem Lötkolben die gewünschten Kurven in meinen Computermonitor brenne... aber vielleicht hat ja hier mal jemand gelernt, wie ne FFT funktioniert und kann mir sagen, was ich falsch mache.

Versuche gerade einen FFT Plot von 1-bit DSD Signalen zu machen. Mit einer Testdatei mit einem 1kHz 0dB Testton sieht das folgendermaßen aus:

Bild

Nach allem was man so gegen dieses Audioformat hört, hatte ich ab ca. 20/30kHz rapide ansteigendes Rauschen erwartet, das bei kurz vor Nyquist dann bei grob -20dB liegen sollte. Ungefähr so wie hier:

Bild

Meine Testdatei ist selbst generiert, aber auch mit echten Dateien (per AD-Wandler aufgenommenes Analogsignal) sieht das ungefähr genauso aus. Außer den drei fetten Peaks vermisse ich da eindeutig das nach oben 'genoiseshapete' Rauschen.
Ich habe FFT Längen zwischen 2^16 und 2^22 probiert und verschiedene Fensterfunktionen. Der HF-Bereich ändert sich bei allem nur wenig.... :cry:
Also wie macht man sonen Plot richtig? Ich dachte immer magnitude wäre sqrt(real * real + imag * imag)....

Olaf

kubi
Beiträge: 2613
Registriert: So Mär 26, 2006 3:33 pm
Wohnort: NRW
Kontaktdaten:

Beitrag von kubi »

Da du Fensterlängen in Zweierpotenzen nennst, vermute ich, dass du mit Faltung arbeitest. Das wichtigste dabei ist die Genauigkeit. Mit welcher Genauigkeit arbeitest du? Bei dir scheinen die Werte ab 1Khz aufwärts fast zufällig zu sein - wie bei mangelnder Genauigkeit.
Insbesondere kann ich mir die beiden -10dB-Peaks bei ca. 500kHz nicht vorstellen, die würdest du ja ganz klar in der Datei bemerken und sogar mit dem Auge als Wellenfom sehen können.
Der Anstieg zu den tiefen Frequenzen hin kommt normalerweise vom falschen oder fehlendem Fenster, aber wenn du meinst, dass du mehrere Fenster probiert hast ...
Bist du sicher, dass sich bei der Anwendung der Fenster keine Fehler eingeschlichen haben?
Darius

olafmatt
Beiträge: 1094
Registriert: Sa Okt 07, 2006 6:56 pm
Wohnort: DE & SK

Beitrag von olafmatt »

Hi Kubi, wahrscheinich ist's nur (wie immer) eine KLeinigkeit... habe mal die komplette FFT berechnung von float auf double umgestellt, kommt immer noch das gleiche bei raus.

Allerdings sind mir so Dinge aufgefallen, das zb.

Code: Alles auswählen

frequency = (double)(i * sampleRate) / (double)windowSize;
etwas anderes ergibt als

Code: Alles auswählen

frequency = (double)((double)i * sampleRate) / (double)windowSize;
Irgendwie 'kann' ich zu viele verschiedene Programmiersprachen (und komme immer mehr durcheinander...), oder Objective-C ist so eigen und meint, mein Ergebnis aus (i * sampleRate) temporär in einen 16-bit Integer stecken zu müssen. :evil:
Ich schätze mal sowas ähnliches gibt's woanders nochmal und wenn ich das gefunden habe sieht alles prächtig aus.

Olaf

kubi
Beiträge: 2613
Registriert: So Mär 26, 2006 3:33 pm
Wohnort: NRW
Kontaktdaten:

Beitrag von kubi »

olafmatt hat geschrieben:...oder Objective-C ist so eigen und meint, mein Ergebnis aus (i * sampleRate) temporär in einen 16-bit Integer stecken zu müssen. :evil:
Ich schätze mal sowas ähnliches gibt's woanders nochmal und wenn ich das gefunden habe sieht alles prächtig aus.
Das könnte das Genauigkeitsproblem sein, von dem ich gesprochen habe.
Würde mich aber wundern, normalerweise wird bei zwei ungleichen Typen zum mächtigerem hin gecastet, das sollte in dem Fall "double" sein.
Darius

olafmatt
Beiträge: 1094
Registriert: Sa Okt 07, 2006 6:56 pm
Wohnort: DE & SK

Beitrag von olafmatt »

Ach nein wie peinlich, Bitshiften sollte man schon können.... jetzt isses richtig:

Bild

Kann man sogar die beiden Frequenzen (10k und 20k) im Sigma-Delta Modulator erkennen, wo der mit seinem Noiseshaping ansetzt.

Olaf

[silent:arts]
Beiträge: 3520
Registriert: Sa Jun 10, 2006 5:54 pm
Wohnort: BLN
Kontaktdaten:

Beitrag von [silent:arts] »

Bahnhof.

Aber schön Euch beide mal wieder hier zu sehen, auch wenn ich mal wieder nichts verstehe :roll:

Aber nun gut, die Bits sind geshiftet, die Mächtigen gecastet - so soll es sein :D

Darf ich sagen: willkommen zurück?
volker
olafmatt hat geschrieben:Strom kann tot machen

olafmatt
Beiträge: 1094
Registriert: Sa Okt 07, 2006 6:56 pm
Wohnort: DE & SK

Beitrag von olafmatt »

Danke für den großen Bahnhof! - Aber der Lötkolben ist noch in einer Kiste außerhalb der spontanen Reichweite verstaut... wollte allerdings demnächst mal wieder ne Platine ordern um endlich den PLL für den DA-Wandler fertig zu bauen.
Ach dabei fällt mir ein Volker, ich hab hier noch 'Dein' PCM-1610 Handbuch rumliegen, soll ich das mal zur Post tragen?

Olaf

olafmatt
Beiträge: 1094
Registriert: Sa Okt 07, 2006 6:56 pm
Wohnort: DE & SK

Beitrag von olafmatt »

Volker, Entwarnung (oder Warnung?!), der Lötkolben läuft wieder frei rum! Heute hat er endlich die PLL Platine für den DA-Wandler fertig gelötet:

Bild

Und das sagt das Oszi dazu:

Bild

Unten Wordclock (44.1kHz) aus dem CD-Player, oben die Frequenz des Quarzes um den Faktor 256 runtergeteilt.

Olaf

olafmatt
Beiträge: 1094
Registriert: Sa Okt 07, 2006 6:56 pm
Wohnort: DE & SK

Beitrag von olafmatt »

Der Monolog geht weiter.. oder: "200 Transistoren später"

Der D/A-Wandler ist fertig. Naja, zumindest kommt jetzt Musike mit nur noch wenig DC Anteil raus, ohne dass die Opamps umkippen und LEDs Rauchzeichen geben.

Bild

Ist wieder ein guter Handwärmer geworden (wenn man die Asbesthandschuhe an hat, um sich nicht zu verbrennen).

Ich bastel dann mal weiter... :twisted:

Achso, eh mich jemand berechtigter Weise einen Verrückten schimpft, erst hier gucken was andere so machen: http://www.audioasylum.com/cgi/t.mpl?f=pcaudio&m=80732

Olaf

[silent:arts]
Beiträge: 3520
Registriert: Sa Jun 10, 2006 5:54 pm
Wohnort: BLN
Kontaktdaten:

Beitrag von [silent:arts] »

Olaf, das ist eindeutig KRANK :thumbright:
volker
olafmatt hat geschrieben:Strom kann tot machen

olafmatt
Beiträge: 1094
Registriert: Sa Okt 07, 2006 6:56 pm
Wohnort: DE & SK

Beitrag von olafmatt »

[silent:arts] hat geschrieben:KRANK
Oh Danke für das Kompliment! :D

Ich hatte schon befürchtet Du würdest das so nicht durchgehen lassen, weil ich ein paar Logik-ICs von der Stange verwendet habe, die hätte man ja auch noch mit einer Tüte voll Transistoren nachbauen können.

Olaf

living sounds
Beiträge: 180
Registriert: Di Dez 19, 2006 11:08 pm

Beitrag von living sounds »

Sollte man das hochfrequente Rauschen nicht besser mit einem passiven Tiefpassfilter entfernen? Auch wenn man's nicht hört, das nimmt ja Bandbreite weg und kann u.U. Hochtöner zerschießen...

hugoderwolf
Beiträge: 248
Registriert: Mo Jul 02, 2007 12:20 am
Wohnort: Bochum

Beitrag von hugoderwolf »

living sounds hat geschrieben:Sollte man das hochfrequente Rauschen nicht besser mit einem passiven Tiefpassfilter entfernen? Auch wenn man's nicht hört, das nimmt ja Bandbreite weg und kann u.U. Hochtöner zerschießen...
Es ist davon auszugehen, dass er genau das macht. Das Spektrum oben zeigt ja noch die digitale Domäne.

olafmatt
Beiträge: 1094
Registriert: Sa Okt 07, 2006 6:56 pm
Wohnort: DE & SK

Beitrag von olafmatt »

Genau, der D/A-Wandler ist kar kein Wandler wie man ihn sich vorstellt, weil ich den statt mit PCM mit 1-bit Signalen fütter (entweder aus einem SACD- Player oder per USB-Interface, wobei da dann die PCM nach 1-bit Wandlung im Rechner stattfindet).
Das Spektrum des reinen 1-bit Signals sieht in der Tat wegen des Noisechapings so aus wie in dem FFT Plot. Gewandelt wird mit einem Flip-Flop, danach folgt ein Tiefpaßfilter 4. Ordnung (Eckfrequenz 28kHz), der mit zwei Opamps aufgebaut ist.

Probehalber hatte ich mal einen Kopfhörer direkt an ein Flip-Flop geklemmt, das klang auch schon ganz ordentlich. Ein passives Filter würde also gehen, aber der Pegel am Flip-Flop ist eh nur 3.75Vpp (ca. +4.5 dBu), davon wäre nach der Filterung dann nicht mehr viel übrig. Aber stimmt schon, für dieses Forum hier fehlen da irgendwie die Trafos und Röhren... :roll:

Olaf

kubi
Beiträge: 2613
Registriert: So Mär 26, 2006 3:33 pm
Wohnort: NRW
Kontaktdaten:

Beitrag von kubi »

olafmatt hat geschrieben:Aber stimmt schon, für dieses Forum hier fehlen da irgendwie die Trafos und Röhren... :roll:
Wir sind hier doch nicht bei Mikrocontroller.net :wink:
Darius

Antworten