also ich habe mir hier einen kleinen Player zusammengebastelt und der sieht auch ganz doll aus wie ich finde und und funktioniert sehr gut nur sind da einige ziemlich komische bugs drinne die ich einfach nicht beseitigen kann.
Bugs:
Der Player nutzt viel zu viel systemspeicher das ist sehr unpraktisch wie ich finde.
Wenn man die Maus auserhalb des Players Bewegt dann fängt die visualisierung an zu Ruckeln...
ich wollt fragen woran das liegen kann? ich habe die Bass.dll benutzt und das nötige einfach den Beispielen des InternetRadios und die der Visualisierung Entnommen.
Hier ist der player dann könnt ihr euch das ma angucken.
Okey zum besseren verständnis hier ein bischen code:
Folgendes Passiert wenn ich zum Beispiel auf den Button Drücke der den Sender ClubNation aktiviert.
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
BASS_StreamFree(channel);
image1.Picture:=CNimage.Picture;
Label7.Caption:='ClubNation';
Style;
Play;
end;
Hier ist die Procedure mit dem namen Style, diese ist dafür verantwortlich das der Entsprechende Hintergrund für den Sender eingestellt wird.....diese Procedure regeln auch die Farbe für die Visualisierung.
Delphi-Quellcode:
Procedure Style;
begin
if form1.Label7.Caption='ClubNation' then
begin
CircleScope.SetBackGround(True, Form1.Image1.Picture.Graphic);
OcilloScope.SetBackGround(True, Form1.Image1.Picture.Graphic);
Spectrum.SetBackGround(True, Form1.Image1.Picture.Graphic);
CircleScope.Pen := $00BF893C;
OcilloScope.Pen := $00BF893C;
Spectrum.Pen := $00BF893C;
end;
if form1.Label7.Caption='SoundOne' then
begin
CircleScope.SetBackGround(True, Form1.Image1.Picture.Graphic);
OcilloScope.SetBackGround(True, Form1.Image1.Picture.Graphic);
Spectrum.SetBackGround(True, Form1.Image1.Picture.Graphic);
CircleScope.Pen := $003FB3F2;
OcilloScope.Pen := $003FB3F2;
Spectrum.Pen := $003FB3F2;
end;
if form1.Label7.Caption='Rock Unity' then
begin
CircleScope.SetBackGround(True, Form1.Image1.Picture.Graphic);
OcilloScope.SetBackGround(True, Form1.Image1.Picture.Graphic);
Spectrum.SetBackGround(True, Form1.Image1.Picture.Graphic);
CircleScope.Pen := $006BC39B;
OcilloScope.Pen := $006BC39B;
Spectrum.Pen := $006BC39B;
end;
end;
Play Procedure die den sender einstellt der abgespielt werden soll:
Delphi-Quellcode:
procedure Play;
begin
if form1.Label7.Caption='ClubNation' then Channel := THandle(BASS_StreamCreateURL(PChar('http://81.169.184.56:1045'), 0, BASS_STREAM_STATUS, @StatusProc, 0));
if form1.Label7.Caption='SoundOne' then Channel := THandle(BASS_StreamCreateURL(PChar('http://81.169.184.56:8080'), 0, BASS_STREAM_STATUS, @StatusProc, 0));
if form1.Label7.Caption='Rock Unity' then Channel := THandle(BASS_StreamCreateURL(PChar('http://81.169.184.56:7070'), 0, BASS_STREAM_STATUS, @StatusProc, 0));
BASS_ChannelPlay(Channel, False);
end;
und zu guter letzt, hier ist der Timer der die Visualisierung an die Want wirft:
Delphi-Quellcode:
procedure TForm1.TimerRenderTimer(Sender: TObject);
var FFTFata : TFFTData; WaveData : TWaveData;
begin
if BASS_ChannelIsActive(Channel) <> BASS_ACTIVE_PLAYING then Exit;
begin
BASS_ChannelGetData(Channel, @FFTFata, BASS_DATA_FFT1024);
Spectrum.Draw (Form1.PaintFrame.Canvas.Handle, FFTFata, 40 - 40, 60 - 60);
end;
end;
end.