Ein Player der auf der bass.dll basiert (Lizens der bass.dll beachten) und eine Visualisierungs Komponente.
Bei der Visualisierungs Komponente ist wichtig, dass die Felder Bassdllplayer und VisualisierungsEinstellungen zugeordnet sind.
Für die VIsualierung kann man dlls als Plugin laden.
Ein Beispiel für solch eine
Dll:
Delphi-Quellcode:
library Project1;
{keine normalen strings übergeben sonder nur PChar}
uses
Windows, Classes, Graphics,
math, Controls, Messages, ExtCtrls, mmsystem, Dialogs, Contnrs, SysUtils;
{$R *.res}
type
TFFTData= array[0..256] of Extended;
TWaveData = array [ 0..2048] of DWORD;
TFFTandWaveData = record
FFTdata: TFFTdata; //zwischen 0 und 1
waveData: TwaveData;
leftpeak,rightpeak: dword; {von 0 bis 32768}
end;
function getVersion: integer; stdcall;
begin
result := 1;
end;
procedure draw(CanvasHandle: HDC; Backgroundcolor,Bordercolor,BalkenColor: Graphics.TColor; width,height: integer; var FFTData: TFFTandWaveData); stdcall;
var
data: TFFTdata;
i: integer;
TempBitmap: TBitmap;
begin
IF CanvasHandle=0 then exit;
data := FFTData.FFTdata;
TempBitmap := TBitmap.create;
TempBitmap.Width := width;
TempBitmap.height := height;
for i := 1 to 256 do
begin
Data[i] := Data[i]*ln(i)*4*((height));
if Data[i] > (height) then Data[i] := (height);
end;
TempBitmap.canvas.pen.color := Bordercolor;
TempBitmap.canvas.brush.color := Backgroundcolor;
TempBitmap.canvas.Rectangle(0,0,width,height);
TempBitmap.canvas.pen.color := BalkenColor;
for i := 1 to 256 do
begin
TempBitmap.Canvas.MoveTo(i,height);
TempBitmap.canvas.lineTo(i,(height)-round(Data[i]));
end;
BitBlt(CanvasHandle, 0, 0, TempBitmap.width, TempBitmap.height, TempBitmap.canvas.Handle , 0, 0 , SRCCOPY);
TempBitmap.free;
end;
exports
draw;
getVersion;
begin
end.
Edit: Die Procedure für die VersionsKontrolle wurde irgendwie gelöscht. Ich hab sie jetzt hinzugefügt.
Dann die
dll noch in xyz.bvis umbenen und danach kann kann sie über das popup Menüe geladen werden.
Wäre nett wenn sich Leute finden würden, die Plugins programmieren würden.
mfg