Achso!
Jetzt verstehe ich das genau!
Hört sich gut an.
Ich habe nur momentan das Problem, das der Minimale und der Maximale wert eines Samples komischerweise immer gleich ist, dazu habe ich die Werte mal in einer TIntegerList Gespeichert
TIntederlist:
Delphi-Quellcode:
function TForm1.GeneratePeaks(height,width:integer;stream:HStream):TBitmap;
var i,len,r,l,ypos,xpos,ymax,ymin:integer;
var WaveData : TWaveData;
liste :TIntegerList;
begin
liste := TIntegerlist.Create;
result := TBitmap.Create;
result.Height := height;
result.Width := width;
for len := 0 to bass.BASS_StreamGetLength(stream) div 5000 do //div 5000 weil es sonst zu lange dauert
begin
BASS_ChannelSetPosition(stream,len*5000);
BASS_ChannelGetData(stream, @WaveData, 2048);
ymax := 0;
ymin := 0;
for i := 1 to 255 do
begin
Ypos := SmallInt(Loword(WaveData[i]));
if Ypos > YMax then
YMax := Ypos
else if Ypos < YMin then
YMin := Ypos;
end;
liste.Add(ymax div 100); //werte etwas kleiner machen
liste.Add(ymin div 100); //werte etwas kleiner machen
end;
for i := 0 to liste.Count -1 do
listbox1.Items.Add(inttostr(liste.Item[i]));
end;
Bass.dll hat geschrieben:
Zitat:
.
.
.
307
-276
307
-276
307
-276
307
-276
307
-277
307
-276
307
-276
307
-276
307
-276
.
.
.