Mein einfacher Mp3-Player
Visualisierung
Fast jeder Player hat sie, und auch wir wollen das bei unserem nicht auslassen. Glücklicherweise geht das hier auch ganz einfach. Zunächst durchforsten wir das Archiv, das wir mit der bass.dll heruntergeladen haben, nach dem Ordner mit den Beispielprojekten für Delphi. Dort finden wir einen Ordner SampleVis, in dem sich ein Beispiel-Projekt zur Visualisierung befindet. Wir wollen uns auf die klassische Balkenansicht beschränken und fügen die beiden Units spectrum_vis.pas und CommonTypes.pas in unser Projekt ein. Die beiden benötigen wir nun für unsere Player-Klasse.
Hinweis: Ja, das bauen wir in die Player-Klasse ein, nicht in die Playlist-Klasse. Das ist etwas, was mit dem Player zu tun hat, nicht mit der ganzen Liste. Da unsere Playlistklasse von der Player-Klasse abgeleitet ist, wird diese damit auch erweitert.
Wir fügen dort zunächst eine weitere Initialisierungsmethode hinzu
procedure TMeMPPlayer.InitSpectrum(Width, Height: Integer); begin Spectrum := TSpectrum.Create(Width, Height); Spectrum.Mode := 1; Spectrum.BackColor := clBtnFace; Spectrum.Pen := clActiveCaption; Spectrum.Peak := clWindowText; end;
erweitern den Destruktor der Klasse um die Zeile
if assigned(Spectrum) then Spectrum.Free;
und implementieren zuletzt noch eine Methode, die das Zeichnen übernimmt, bzw. die entsprechende Methode in der gerade kopierten Unit aufruft.
procedure TMeMPPlayer.DrawSpectrum(aHandle: THandle); var FFTFata : TFFTData; begin if BASS_ChannelIsActive(fMainStream) = BASS_ACTIVE_PLAYING then begin BASS_ChannelGetData(fMainStream, @FFTFata, BASS_DATA_FFT1024); Spectrum.Draw (aHandle, FFTFata, 0, 0); end; end;
Ich gebe zu, das ist jetzt sehr billig gewesen. Aber jetzt noch auf die FFT-Daten eingehen, und wie man die schnell und einfach darstellt…nö. Irgendwann muss auch mal gut sein. So, wie wir am Anfang das Auslesen der ID3-Tags anderen Klassen überlassen haben, schieben wir jetzt nochmal etwas Arbeit von uns.
Außerdem wollen wir ja jetzt langsam zum Ende kommen, oder? Und das sind wir jetzt auch. Wir müssen nur noch die Visualisierung in den Player einbauen, was mit ein paar Klicks und zwei Zeilen Code erledigt ist.
2 Gedanken zu „Mein einfacher Mp3-Player“
Kommentare sind geschlossen.
Ist es mit Delphi auch möglich von einer mp3-Aufname über Start- und Stop-Zeit-Parameter nur einen Ausschnitt abzuspielen? Ich suche für eine blinde Person die Möglichkeit sich Audioaufnahmen ab einem bestimmten Abschnitt vorlesen zu lassen. Vielen Dank für die geschätzte Antwort.
Generell sollte dies möglich sein.
Am Besten dazu einmal einen Thread im Forum aufmachen, da tummeln sich einige Leute, die schon mit MP3s gearbeitet haben.
Gruß
Thomas