Hallo, mein Ziel ist es, aus einer Audio Datei in Echtzeit die Daten auszulesen und diese in ein "aussagekräftiges" Frequenzspektrum zu transformieren. Diese Daten sollen letztendlich durch einen LED-Cube(8x8x8) dargestellt werden. Im Moment bin ich allerdings an einem Punkt angelangt, an dem ich einfach nicht mehr weiter weiß. Weder wo nach ich suchen muss, noch wie ich mein bisheriges Ergebnis näher an meine Wunschvorstellung heran bekomme. Mein Wunsch wäre es, so nahe wie möglich an das Ergebnis von Adobe After Effects' Visualizer heranzukommen, wie es bei vielen YouTube Videos zu sehen ist. Bisher habe ich folgendes gemacht: 1. Audio Daten einlesen (2^n Samples) 2. Daten aufbereiten (PCM_Signed, 16bit, stereo/mono Channel, etc) 3. Fenster-Funktion anwenden (Blackman) 4. Daten mit der FFT in das gesamte Frequenzspektrum zerlegen 5. Reellen und imaginären Teil verrechnen (sqrt(real^2 + imag^2) 6. Von linearer Skala in Dezibel-Skala umrechnen (10*log10(i)) 7. Daten glätten 8. Daten graphisch anzeigen lassen 9. Audio Daten ausgeben Das Ergebnis finde ich bis dahin akzeptabel wenn ich 2048 Samples verwende und mir lediglich die ersten 64 Balken anzeigen lasse (und weitgehend Synchron mit der Musik Ausgabe). (Dabei stört mich noch die Tatsache, dass das Frequenzspektrum vom unteren Hz bereich bis hin zur Nyquist-Frequenz kontinuierlich flacher wird.) Da ich allerdings das gesamte Frequenzspektrum in 64 Balken darstellen möchte, hat es sich mir angeboten, zwischen Punkt 5 und 6 noch zusätzlich einen "1/6 Octave Band Filter" mit der Mittelfrequenz von 1000Hz einzufügen. Das Ergebnis durch diesen Filter kommt zwar ansatzweise an meinen Wunsch heran, nur dass die Frequenzen schon ab ca. 400Hz zu stark zusammen gefasst werden und somit gehen die "Details" von dem was man hört (wie das Klavier oder Gesang) verloren. Nun stehe ich wie gesagt vor dem Problem, dass ich einfach nicht heraus finde, welcher Teil mir noch fehlt zu meinem Wunsch, einen Visualizer wie in den YouTube Musik-Videos nachzuahmen (sofern machbar). Könnt ihr mir da auf die Sprünge helfen? Und eine weitere Frage hat sich mir die Tage aufgestellt: In wie fern macht es Sinn, hier einen Windowed-Sinc Filter einzubauen? Bzw. was bewirkt dieser? Ich bin dankbar für jeden Hinweis :-)
Wie tief ist denn Deine FFT? Wenn Du wirklich "aussagefähige Visualisierung" betrieben willst, brauchst Du wenigstens eine Auflösung im Bereich der Variation der Musiknoten und das ist im unteren Frequenzbereich schon sehr eng. Gehen wir mal grob von 1-2Hz aus, brauchst Du eine 16k/32k-FFT. Blackman-(Harris) wäre schon mal das richtige Fenster für Deine Zwecke. >glätten Was genau möchtest Du "glätten"? Ich gehe davon aus, dass Du die oberen Frequenzen zusammenfassen möchtest um eine der musikalichen Repräsentation entsprechende relative Genauigkeit erzielen willst? >In wie fern macht es Sinn, hier einen Windowed-Sinc Filter einzubauen? Wo soll der hin? >Youtube-Musik Audiodaten, die bereits mit MPG-ähnlichen Algorithmen reduziert wurden, sind in dem Informationsgehalt der Oberwellen reduziert - um nicht zu sagen deformiert. Von derher stellt sich die grundsätzliche Frage nach dem Sinn einer FFT. Das ist in etwa so, als würde man künstlich mit Vitaminen angereicherten, auf den Durchschnitssgeschmack hingemixten Orangensaft aus Konzentrat dahingehend untersuchen will, was in natürlichen Orangen denn so alles an Inhaltstoffen enthalten ist :-) > LED-Cube Mein Problem mit den käuflich erworbenen Spektrumanalyzern - egal ob in Digitalmischpulten, PC-DAWs oder Software war stest der, dass man nichts erkennen konnte, weil das Display zu kein ist. Beim Mastern von Audiomaterial muss man auf ein halbes dB genau arbeiten und die Erfahrenen der Branche tun dies auch. Sie verlassen sich dabei aber hauptsächlich auf das Gehör. Will man das mit objektiven Messungen unterstützen, oder gar toppen, muss man auf 0,1 ... 0,2 dB auflösen, sonst habe ich keine Messung sondern doch nur wieder eine grobe Spass-Visualisierung, die allenfalls für die Optik und die Disco taugt. Daher sehe ich als Display für eine Audio FFT mindestens einen 24-Zöller mit ausreichender Punktauflösung und entsprechender Ansteuerung: http://www.96khz.org/htm/spectrumanalyzer2
Was meinst Du mit "Wie tief ist denn Deine FFT?" Ich nutze meist eine Auflösung von 4096 Samples und habe dann eine Auflösung von knapp 11Hz. Bevor ich mein Spektrum graphisch darstelle, "glätte" ich dies, damit die Ausgabe nicht so abgehackt aussieht. Dabei werden für jeden Balken die benachbarten Balken mit einberechnet. Das Glätten, wie Du es beschrieben hast, meine ich durch den 1/n-Octave-Band-Filter zu realisieren. Wo der Windowed-Sinc Filter hin soll? Das kann ich Dir nicht beantworten :D Bei den ganzen Recherchen wird mir dieser Begriff ständig an den Kopf geworfen. Aber egal, wie viel ich darüber lese, er bleibt mir unverständlich. Mit "aussagekräftig" habe ich wohl den falschen Begriff gewählt. Ich habe nicht vor, durch den Visualizer irgendwelche Werte für Messungen oder Ähnlichem abzulesen. Das ist bei dem LED-Cube unmöglich, da dieser aus gerade mal 512 (8x8x8) LEDs besteht und somit 64 verschiedene Frequenzbereiche mit 8 verschiedenen Werten abgedeckt werden könnten :D Mein Ziel ist es eben diese 4096 Werte, die aus der FFT berechnet werden, so zusammen zu fassen, dass ich diese in 64 Frequenzbereiche unterteile. So dass man sieht, dass gerade zum Beispiel das Klavier spielt oder die Kickdrum benutzt wurde. Also nichts wissenschaftliches ;)
Die FFT vollzieht bereits eine Art von Glättung indem jede der ermittelten Intensitätswerte ihren Bereich abdeckt, inklusive einer Überlappung mit dem Nachbarfrequenzbereich. In Deinem Falf wären das +/-11 Hz, also relativ grob, was die niedrigen Frequenzen angeht. Der Sinn, da nochmals Pegelwerte zu verschleifen und damit Information zu verlieren, erschließt sich mir nicht. Insbesondere, wenn Du eine Bass Drum von einer akzentuiert, gedämpft angeschlagenen Basssaite am Flügel unterscheiden möchtest, ist es nötig, die beim Kick anders verlaufenden Oberwellen zu beobachten. Wenn Du da unnötig glättest, sieht am Ende alles gleich aus. Was ich wie schon angedeutet empfehle, ist die Reduktion des linearen Spektrums auf ein Logarithmisches. Dabei wären dann nach oben hin zunehmend mehr Frequenzen zusammenzufassen. Alternativ prozessiert man gleich "dodekaphonisch". Ausgestreckt auf die volle Tonleiter wäre das 12er Görtzel, der 5 bis 6 mal verschachtelt über HBF angewendet wird.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.