Meine Ausgangsposition..
Delphi-Quellcode:
function TBassPlayer.BassChannelGetWavData: PSmallInt;
var
fft: array [0 .. 511] of single;
begin
FillChar(fft[0], sizeof(single) * 256, 0);
if (gnAudioChannel <> 0) then
BASS_ChannelGetData(gnAudioChannel, @fft[0], 1024);
result := @fft[0];
end;
Delphi-Quellcode:
var
pInt: PSmallInt;
begin
pInt := BassPlayer.BassChannelWaveData;
for x := 0 to (Width - 1) do
begin
if (x mod 8) <> 0 then
continue;
end;
inc(pInt, 9);
end;
Ich hole die WaveDaten über BassChannelWaveData
Danach zeichne ich das Bitmap auf dem Screen
Anschließend möchte ich den Pointer um den Faktor 9 verschieben.
Mein Problem! Es wird aber jeweils immer nur der erste Ausschlag visualisiert das verschieben des Pointer funktioniert irgendwie nicht richtig.
Was mach ich falsch?
Es müsste sich eigentlich die Y Position des nächsten Balken verändern abhängig vom verschobenen Pointer und den Inhalt der Wave Daten an dieser Position.
Wie man sehen kann werden alle Bars korrekt gezeichnet Blau unten aber nur die erste wird visualisiert.
PS:
Auch wenn ich den Pointer entferne also den wert von SmallInt verschiebe ändert es nichts.
inc(pInt^, 9);
gruss