Es setzt sich so zusammen.
In Create erstelle ich einen Temporären
DC
TempBufferDC := gSprVizC.GI_Create32bitDC(255, 60, $00000000);
Delphi-Quellcode:
procedure TBassPlayer.DrawData;
var
k: integer;
TRA: array[1..512] of single;
TIA: array[1..512] of single;
begin
// Fülle das Array mit den Wave Daten
for k := 0 to 511 do
TRA[k + 1] := WaveData[k] / 1.50;
XFFT(TRA, TIA, -1, 1, 512); // Wave Daten glätten
for k := 1 to 512 do // PicFlame auf den TempBufferDC Blitten
begin
if TRA[k] < 0 then
TRA[k] := 0;
BitBlt(TempBufferDC, k - 1, trunc(Abs(FHeight - TRA[k])), 1, FHeight,
PicFlame[FCurentFlame].Canvas.Handle, 0, 0, SRCCOPY);
end;
FadeBackBuffer(TempBufferDC); // Inhalt vom TempBufferDC Faden
BitBlt(PaintDC, 0, 0, FWidth, FHeight, TempBufferDC, 0, 0, SRCCOPY);
procedure TBassPlayer.XFFT(FR, FI: array of single; Sign, Sample, SampleCount: Integer);
Zitat:
also die Indizes 0..SampleCount-1.
for Q := Sample to (SampleCount) do
Zitat:
Weiß nicht, ab das das Problem ist.
Wenn die Schleifen nicht korrekt wären dürfte es auch unter 32Bit nicht laufen.
Wenn es jemand testen möchte schicke ich ihm gern den Quelltext zu.