![]() |
FFT Berechnung fails
Nein es macht nicht wirklich Probleme aber es ist unverständlich für mich weil irgendwie unlogisch.
Ich habe 2 Kanäle jedem ist ein Array 0..511 zugewiesen. 0..511 = 512 Samples pro Kanal = 1024 Jetzt hole ich mir über Bass_ChannelGetdata die entsprechenden Samples um das Array zu füttern BASS_DATA_FFT1024 Nach meinem Verständnis sollte das eigentlich ausreichen um das Array zu befüllen. Die Daten werden jetzt verschickt
Delphi-Quellcode:
CopyMemory(@gSOP.FFT, @FFFTdata, 1024);
Sieht auch für mich logisch aus. Nun werden diese Ausgewertet.
Delphi-Quellcode:
Die Frage die da wäre warum wird aber nur ein viertel der FFT gezeichnet?
for I := 0 to 255 do
begin VisData.Spectrum[0, I] := Max(0, Min(255, (Trunc(Power(Data32Pos^, FFTSAmplification * IfThen(VisInfo^.UltraPlayerVis, 0.5, 1)) * 255)))); inc(Data32Pos, FFT_SkipCount); VisData.Spectrum[1, I] := Max(0, Min(255, (Trunc(Power(Data32Pos^, FFTSAmplification * IfThen(VisInfo^.UltraPlayerVis, 0.5, 1)) * 255)))); inc(Data32Pos); end; Also bei einem Spektrum von 8 Balken nur 4 ? |
AW: FFT Berechnung fails
Hallo,
viel, viel zu wenig Informationen. Der Fehler kann doch überall liegen, vielleicht sogar schon beim Abholen der Daten über die BASS-Dll. oder hier: 0..511 und in der Schleife geht es bis 255? |
AW: FFT Berechnung fails
Zitat:
Ja was ist an dem wert 255 falsch? Der ist so definiert und kann nicht höher sein.
Delphi-Quellcode:
ist auch logisch oder?
Waveform : array[0..1, 0..511] of shortint;
Spectrum : array[0..1, 0..255] of byte; 0..255 = 256 Samples pro Kanal = 512 und 0.. 511 = 512 |
AW: FFT Berechnung fails
Hallo,
Zitat:
Du wirst hier wohl vielleicht keinen finden, der die FFT in Delphi schon mal gemacht hat. Also poste doch bitte mal Delphi-Code hier so rein, dass man damit was anfangen kann. geg.: Arrays gefüllt oder nicht? Aufgabe: Werte "irgendwie" füllen ges.: ??? Was ist denn konkret (in Delphi-Worten) dein Problem? |
AW: FFT Berechnung fails
Zitat:
Zitat:
Also ich kann im ersten Post lesen das für den rechten und linken Kanal 2 werte eingelesen werden und zwar jeweils 256 Samples. Würde das Array also so nicht definiert sein.. Ja dann wäre es unlogisch. Normalerweise sollte man das doch so voraussetzen oder? Zitat:
Zitat:
Nun wie ich schon sagte es ist kein eigentliches Problem denn ich habe es so gelöst. Ich hole ich mir jetzt über Bass_ChannelGetdata BASS_DATA_FFT2048 Samples und übergebe
Delphi-Quellcode:
CopyMemory(@gSOP.FFT, @FFFTdata, 2048);
Jetzt werden alle 8 Balken der Visualisierung gerendert so wie es sein soll! Also nochmal die Frage warum muß ich ein 4 Faches an Samples übergeben obwohl doch nur 512 davon ausgewertet werden. Das ist das Unverständnis das ich habe. Ich hoffe du verstehst warum es mir geht. Ich verstehe nicht warum BASS_DATA_FFT1024 Samples nicht ausreichend sind um ein Array von 512 Samples auszuwerten. (letztendlich nur 256 Samples pro Kanal) |
AW: FFT Berechnung fails
Ich hätte ja testhalber einfach mal meine Zwischen-Datenquelle mit Testdaten gefüllt und dann geschaut, ob meine Malroutine richtig ist.
Bspw. so hier:
Delphi-Quellcode:
Da müssten dann ja zwei Rampen bei raus kommen.
for I := 0 to 255 do
begin VisData.Spectrum[0, I] := I; VisData.Spectrum[1, I] := 255 - I; end; |
AW: FFT Berechnung fails
Zitat:
Das ist was mir unverständlich ist. Ansonsten funktioniert es ja. Wie man an den Bildern erkennen kann alle 8 Balken sind gefüllt. |
AW: FFT Berechnung fails
Es fehlt uns allen hier wieder essentielle Informationen über dein Programm und vollständiger Quelltext und die Bitte um ein kompaktes Demoprojekt sind wie immer vergebens (Starrsinn gepaart mit Unfähigkeit Probleme zu abstrahieren und auf das Wesentliche zu reduzieren), daher können wir nur raten.
Übrigens: Außer dir programmieren hier ganz ganz ganz wenige Leute Visualisierungen für Musikabspielsoftware, von daher kannst du nicht erwarten, dass wir immer so im Thema drinstecken. Glaskugel sagt: 1024 Samples / 256 = nur 4 Balken (linke/untere vier) 2048 Samples / 256 = alle 8 Balken |
AW: FFT Berechnung fails
(Englische) Doku (nicht) lesen ist auch noch so ein Punkt, der dir oft auf die Füße fällt:
![]() Zitat:
|
AW: FFT Berechnung fails
Zitat:
512 sollten doch reichen oder nicht? Für jeden Kanal die Hälfte. Er rendert dann zumindest nur 4 Balken. Erst mit BASS_DATA_FFT2048 (1024 Samples) und das ist nun mal ein vierfaches von 256. Unverständlich. Zitat:
Hat sich dann erledigt. Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 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