Thema: Delphi Visualisierungsfehler

Einzelnen Beitrag anzeigen

Peter.K

Registriert seit: 24. Dez 2005
53 Beiträge
 
#1

Visualisierungsfehler

  Alt 4. Jan 2007, 13:35
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='ClubNationthen
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='SoundOnethen
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 Unitythen
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='ClubNationthen Channel := THandle(BASS_StreamCreateURL(PChar('http://81.169.184.56:1045'), 0, BASS_STREAM_STATUS, @StatusProc, 0));
if form1.Label7.Caption='SoundOnethen Channel := THandle(BASS_StreamCreateURL(PChar('http://81.169.184.56:8080'), 0, BASS_STREAM_STATUS, @StatusProc, 0));
if form1.Label7.Caption='Rock Unitythen 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.
Angehängte Dateien
Dateityp: rar player_777.rar (535,2 KB, 27x aufgerufen)
  Mit Zitat antworten Zitat