Oszilloskop hätte ich gern, Spectrum klappt ja bereits einwandfrei mit FFTData.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
OpenDialog1.Filter := BassDLLPlayerFileFilter;
bkBitmap := TBitmap.Create;
bkBitmap.Width := 30;
bkBitmap.Height := 30;
bkBitmap.Canvas.Brush.Color := clBlack;
bkBitmap.Canvas.FillRect(Rect(0, 0, 30, 30));
BitmapRect := Rect(0, 0, bkBitmap.Width, bkBitmap.Height);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin // Open File & Play
if Opendialog1.Execute
then
begin
if BassdllPlayer1.LoadFromFile(Opendialog1.FileName)
then
begin
BassdllPlayer1.Play;
end;
end;
(* um nur eine "Probe zu holen" *)
procedure TForm1.Button2Click(Sender: TObject);
var Data1: Twavedata;
i: integer;
begin
data1 := BassdllPlayer1.GetwaveData;
Paintbox1.Canvas.CopyRect(Paintbox1.ClientRect, bkBitmap.Canvas, BitmapRect);
Paintbox1.Canvas.MoveTo(0, Paintbox1.height
div 2);
for i := 0
to 2048
do begin
Paintbox1.Canvas.pen.color :=
RGB(255 - i, i, 0);
if i
mod 2 = 0
then
Paintbox1.Canvas.LineTo(i,Paintbox1.height
div 2 - Data1[i]
div trackbar3.position);
// test für rechten Kanal
// Paintbox1.Canvas.pen.color := clyellow;
// if i mod 2 = 1 then
// Paintbox1.Canvas.LineTo(i,Paintbox1.height div 2 - Data1[i] div trackbar3.position);
end;
end;
Das war´s, erst mal auf´s wesentliche runtergebrochen.
hier das für´s Spectrum, was wiegesagt aber schon funzt...
Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
// Draw Vis.
var
data: TFFTData;
i: integer;
tmpBitmap: TBitmap;
begin
data := BassdllPlayer1.GetfftData;
for i := 0
to 255
do
Data[i] := Data[i] * ln(i + 1) * Trackbar1.Position * Paintbox1.ClientHeight;
Paintbox1.Canvas.CopyRect(Paintbox1.ClientRect, bkBitmap.Canvas, BitmapRect);
Paintbox1.Canvas.MoveTo(0, Paintbox1.height
div 2);
for i := 0
to 255
do begin
Paintbox1.Canvas.pen.color :=
RGB(255 - i, i, 0);
Paintbox1.Canvas.LineTo(i, Paintbox1.height
div 2 - round(Data[i]));
end;
end;
PS: Also um´s auf den Punkt zu bringen:
Die Frequenz des Lieder wird richtig dargestellt, nur die Spannungshöhe/ der Pegel ist irgendwie falsch,
da es wiegesagt mehr an eine Pulsweitenmodulation ausschaut, aber irgendwie gar nicht wie Musik eben.