Echtzeit FFT

Gast #390177
Hi,

ich möchte für ein Studienprojekt eine Echtzeit FFT von einem Standard
Audiosignal (16bit 44,1kHz) in Form von einer Hardware umsetzen.

Jetzt habe ich aber noch wenig Ahnung von DSPs und welche Typen es da
so gibt.
Hat von Euch jemand ne Empfehlung welchen ich mir da mal anschauen
sollte?
Bzw schafft ein AVR sowas in Echtzeit?

Jan
Gast
willst du es jetzt mit einem DSP oder AVR machen. was ist fuer dich
echtzeit??!! Wenn du alle 10 sekunden ein spektrum berechnest, dann
kann das auch echtzeit sein.. wieviele punkte soll deine fft denn
berechnen? davon wird dann auch deine samplingrate und der
speicherbedarf abhaengen. oder willst du das signal auch mit 44,1 kHz
samplen? wie bekommst du die daten?

mfg,
thomas
Gast
hi Thomas,

na momentan fang ich gerade an mir zu überlegen, was ich alles
brauche.
Ich will ein monophones Audiosignal analysieren und daraus MIDI Daten
generieren.
Dazu will ich ein qualitativ hochwertiges Signal (16bit 441,kHz)
nehmen, wird wohl n externer AD Wandler liefern (keine Ahnung wie gut
die AD Wandler von DSPs sind, falls DSPs überhaupt welche haben)
Will ich dabei zB noch 1/16 Noten bei 120 bpm erfassen müsste ich schon
alle 125ms ne Analyse haben...
Jetzt halt meine Frage: was für ein DSP schafft sowas, oder kann sowas
noch ein AVR machen (der gleichzeitig dann noch andere Sachen machen
muss...)

Gruß
Jan
Gast
Hallo Jan,

1) so richtig hochwertig braucht dein Signal ja nicht sein, da du
vermutlich im Spektrum nur ein Maximum suchen willst und das als MIDI
Daten zu transcodieren.

2) um mit voller Geschwindigkeit kontinuierlich FFT's zu berechnen (du
willst vermutlich nicht immer nur einen Happen samplen und dann einige
Sekunden rechnen bevor du wieder neue Eingangsdaten verarbeiten kannst)
benötigst du vermutlich schon einen ausgewachsenen DSP (TI TMS320C67xx
benötigt für Ntaps = 256, cycles = 3696 mit einer vollwertigen
Floatingpoint DSP und single cycle Instructionsausführung). Der AVR
wird damit vermutlich nich klar kommen.

3) Die Länge deines FFT intervalls ist auch noch wichtig. Der Aufwand N
samples zu transformieren ist ~N*log(N). Andererseits schränkst du deine
Frequenzauflösung für tiefe Frequenzen durch ein kurzes Intervall stark
ein.

Vielleicht kannst Du sowas auf einem FPGA programmieren.
Für 99 Tacken bekommt man schon ein Spartan3 EVA-Board von Xilinx
und das WebPack ist eh kostenlos.
Im Internet gibt es auch SPDIF receiver codes so dass du alles in
Echtzeit und komplett alles in Software implementieren könntest.

Gruß
Michael
Gast
HI Michael,

ja als Software wäre das am einfachsten, gibts aber auch schon
(WIDI)...
ich hätte halt bock mal was "greifbares" zu haben...
deswegen danke für deinen Tip mit dem TI, mit FPGAs kenn ich mich noch
weniger aus...

Gruß
Jan
Gast
Ich erinnere mich, dass vor kurzem jemand auf einem AVR eine FFT in C
realisiert hat. Das Ergebnis war echt beeindruckend. Vielleicht hilft
es Dir. Ist in der Codesammlung.

Gruß,
Sebastian
Gast
Bei Analog-Devices bekommt man eine Vollversion (halbes Jahr Laufzeit)
für lau - ideal für Studien- bzw. Diplomarbeiten.

Das Development-Kit ist erschwinglich.

Nen FPGA halte ich für oversized.

Aber um konstruktiv zu bleiben müsste man einmal direkt Preise,
Software und Einarbeitungsaufwand vergleichen. Das kann aber der
Threadersteller erledigen :-)
Gast
Was du mit Echtzeit meinst ist vermutlich die maximale Verzoegerung vom
Zeitpunkt des Anlegens des Audio-Signals bis zur fertigen Ermittlung
des Grundtons. Im Bereich von Samplern (fuer den umgekehrten Weg : MIDI
in -> Audio out) wuerde ich nicht mehr als 5 msec, maximal 10 msec
akzeptieren. Viele Dinge kommen ja auch nicht schoen genau auf der
16tel Grenze. Oftmals ein bischen hinter dem Takt um einen schoenen
Groove zu kriegen, je nach Material auch gerne 64tel. In 5 msec kriegst
du ca. 220 Samples pro Kanal. Da wird die genaue Ermittlung tiefer
Grundtoene, wie vorhin beschrieben, schon schwieriger, aber nicht
unmoeglich.
Gast
Die Frage bleibt auch, wie die Daten mit geeigneter Geschwindigkeit aus
dem DSP zu bekommen sind ...

Dann wird das wohl eher der limitierende Faktor.
Gast
hi danke erstma für die vielen Antworten...

also wäre ein FPGA wegen der parallelen Verarbeitung direkt im
Datenstrom angesagt?
Oder is der FPGA doch nich so gut? (hab im FPGA Kochbuch gelesen dass
sie für ne FFT nich so geeignet sein sollen)

Kennt jemand ein gutes Tutorial und einen FPGA der dafür geeignet wäre?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.