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
CopyMemory(@gSOP.FFT, @FFFTdata, 1024);
Sieht auch für mich logisch aus.
Nun werden diese Ausgewertet.
Delphi-Quellcode:
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;
Die Frage die da wäre warum wird aber nur ein viertel der FFT gezeichnet?
Also bei einem Spektrum von 8 Balken nur 4 ?