![]() |
Bass.dll Spektrum zeichnen
Ich habe gerade versucht ein Spektrum zu zeichnen, ähnlich wie in Winamp bei der Wiedergabe. Mein Problem ist nur, dass die Frequenzen auf der linken seite einen viel höheren ausschlag haben als auf der rechten. Ich habe dass schon etwas mit
Code:
angepasst, aber der unterschied ist doch noch ziemlich groß. Habt ihr eine Idee wie man das am besten anstellt?
sqrt(fft[x])
|
Re: Bass.dll Spektrum zeichnen
keiner eine idee?
|
Re: Bass.dll Spektrum zeichnen
Nunja, das ist halt nunmal der Frequenzgang. Die meiste Musik hat in den niedrigen Frequenzen die größten Amplituden, das ist schon korrekt so. Wenn es dir nicht um Korrektheit sondern bloße Optik geht, kannst du die Werte im Grunde mit einer beliebigen Funktion bearbeiten mit der dir die Ausgabe am besten gefällt. Die Wurzel wäre ein Weg, logarithmische Saklen sind wohl aber recht gängig da diese Darstellung am ehesten dem Hörempfinden entspricht. Daher wäre das sogar noch eine mit mehr als nur "nett aussehen" begründbar. Für dein Beispiel also ln(fft[x]), wobei ich nicht sicher bin ob der natürliche Logarithmus die wirklich korrekte Wahl dabei ist. Im Zweifel auch hier mal mit verschiedenen Basen herumspielen :)
|
Re: Bass.dll Spektrum zeichnen
Warum ne eigene FFT dazwischen schalten ?
Das macht Bass alles selbst. Gibt genügend code hier nur mal suchen. Zitat:
Gerade dann wird alles unnatürlich dargestellt. gruss Emil |
Re: Bass.dll Spektrum zeichnen
Zitat:
Zitat:
Zitat:
|
Re: Bass.dll Spektrum zeichnen
Versuche die Daten in Dezibel anzugeben. "val" muss Normalisiert sein d.h. ein Wert zwischen 0 und 1.
Delphi-Quellcode:
Du erhälst einen Wert zwischen minus unendlich und Null.
db := 10 * log10(val);
|
Re: Bass.dll Spektrum zeichnen
Zitat:
Er will die Daten glätten so wie ich verstanden habe. Kann ja mal in Wavefade reinschauen hab da einen FFT algo der die Wavedaten glättet müßte uach mit spectrum funktionieren. gruss Emil |
Re: Bass.dll Spektrum zeichnen
Dezibel wären optimal! +1 an den Igel :)
Und ich glaube nicht dass es um Glättung geht, was auch immer du damit genau meinst. Es geht lediglich darum, dass das Spektrum normaler Alltagsgeräusche in den hohen Frequenzen deutlich schwächer ausgeprägt ist, und eine grafische Darstellung der FFT deswegen "rechts" eben viel kleinere Balken hat um es mal profan auszudrücken. Das missfällt dem TE offenbar, und eine Anzeige in db(A) lindert das grafische Ungleichgewicht etwas, wobei es sogar noch echten analytischen Mehrwert bietet. |
Re: Bass.dll Spektrum zeichnen
Zitat:
Obwohl ich es nur in verbindung mit Beat verwende. Und mir dazu den Level über
Delphi-Quellcode:
ausgeben lasse.
BASS_ChannelGetLevel(BassChannel.lngChan)
Wenn's hilft. gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz