AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi mp3 Player mit Waveform
Thema durchsuchen
Ansicht
Themen-Optionen

mp3 Player mit Waveform

Ein Thema von microhome · begonnen am 25. Jun 2007 · letzter Beitrag vom 6. Aug 2007
Antwort Antwort
microhome

Registriert seit: 16. Okt 2005
8 Beiträge
 
#1

mp3 Player mit Waveform

  Alt 25. Jun 2007, 23:42
Einen schönen guten Abend euch allen!
Auch wenn das Thema schon des öfteren in diesem Forum versucht wurde zu erörtern, so bin ich da leider noch immer nicht ganz durchgestiegen bzw. habe nicht das gefunden was ich suche. Folgendes Vorhaben: Ich möchte eigentlich nur einen ganz einfachen MP3-Player bauen (Button mp3 laden, start und stop) und dazu eine Waveform der gesamten Datei haben. Nichts was sich bewegt o.Ä. sondern einfach nur die Waveform. Während die Datei abspielt soll sich ein Balken auf dieser Waveform bewegen, damit man sieht an welcher Stelle man sich befindet. Zusätzlich möchte ich einen Button und eine Art "LED" einbinden. Wenn man nun auf den Button klickt, wird die aktuelle Position in einer Text-Datei gespeichert (in Millisekunden), wenn man wieder klickt in einer neuen Zeile diese Stelle und so weiter. Im Nachhinein soll der User nun noch per Feinabstimmung die Positionen im 1/10 Sekunden Bereich (fein)einstellen können, sprich jeweils 1/10 Sekunde vor oder zurück springen und diese Position wird dann in der Textdatei gespeichert. Zusätzlich soll einfach nur die "LED blinken", wenn eine gespeicherte Zeitposition durchlaufen wird.

Das hört sich irgendwie ganz schön kompliziert und komplex an, oder? Ist es das auch? Ich denke dass das Speichern etc. nicht wirklich ein Problem darstellen. Was ich absolut nicht hinbekomme ist die Wellenform. Wie mach ich das am besten? Über bass.dll? Hab davon zugegebenermaßen echt Null Ahnung und würd mich freuen wenn ihr mir helfen würdet. Habe den MP3-Player via TMediaPlayer Komponente von Delphi realisiert. Jedoch ist darüber leider keine Wellenformberechnung möglich. Was meint ihr dazu?


Beste Grüße und gute Nacht!
Rene
  Mit Zitat antworten Zitat
Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
119 Beiträge
 
Delphi XE2 Professional
 
#2

Re: mp3 Player mit Waveform

  Alt 26. Jun 2007, 10:15
Hallo

Mit dieser Thematik habe ich mich ca. 2 Monate beschäftigt. Ziel war bei mir einen Audioplayer zu programmieren, der an bestimmten Liedpositionen bestimmte Ereignisse ausführt.

Das Ganze habe ich mit der Bass.dll realisiert. Diese spielt die Audiodatei ab, erzeugt die Wellenformanzeige und liefert die genaue aktuelle Abspielposition.


Da meine Software OpenSource ist, kann der Code (Delphi 7) ohne Probleme eingesehen werden: Sourcecode

Die relevante Funktion zum Scannen der Wavedatei ist ScanPeaks2 in der Datei pcdimmer.pas. Dabei liefert die Bass.dll FFT-Daten, die in ein kleines Array gespeichert werden. Dieses Array wird zur Zeichnung der Waveform in einer normalen PaintBox verwendet. Das Zeichnen wird über die Funktion DrawSpectrum ausgeführt.

Das Abspeichern der aktuellen Position ist relativ einfach. Man fragt beim Speichern mit der Bass.dll-Funktion BASS_ChannelGetPosition die aktuelle Position ab und speichert sie. Möchte man beim Abspielen nun wissen, ob dieser Punkt durchlaufen wurde, fragt man zyklisch über einen Timer oder in einem Thread ab, ob die Position +/- eines angemessenen "Safe-Frames" gerade durchlaufen wird. Es empfiehlt sich, ein Array zusätzlich einzubinden, welches speichert, ob das Ereignis schon einmal abgespielt wurde, um Mehrfachausführungen zu vermeiden.

Der Sourcecode ist nicht sonderlich schön strukturiert, aber ich hoffe du kannst dir die relevanten Informationen da herauslesen. Wenn du Teile des Codes in deiner Software verwenden möchtest und diese auch veröffentlichst bitte ich dich, diese Codezeilen ebenfalls öffentlich zugänglich zu machen und einen kurzen Hinweis auf die Herkunft hinzuzufügen.


Viel Erfolg,
Christian
Christian Nöding
  Mit Zitat antworten Zitat
microhome

Registriert seit: 16. Okt 2005
8 Beiträge
 
#3

Re: mp3 Player mit Waveform

  Alt 26. Jun 2007, 20:55
Hi Christian,
ich hab eben mal reingeschaut in dein Projekt. Aber ich seh da echt absolut nicht durch. Ist es denn extrem kompliziert das ganze zu machen? Ich denke mal das Speichern etc. krieg ich hin aber wie kann ich die bass.dll einbinden und zur Darstellung der Wellenform benutzen bzw. die Datei öffnen und widergeben?


Beste Grüße
Rene
  Mit Zitat antworten Zitat
Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
119 Beiträge
 
Delphi XE2 Professional
 
#4

Re: mp3 Player mit Waveform

  Alt 26. Jun 2007, 22:43
Ich such dir morgen mal die nötigen Codezeilen raus

Bis morgen


ciao!
Christian Nöding
  Mit Zitat antworten Zitat
microhome

Registriert seit: 16. Okt 2005
8 Beiträge
 
#5

Re: mp3 Player mit Waveform

  Alt 6. Aug 2007, 12:56
Ich bin wieder dabei an meinem Projekt weiterzuarbeiten, aber habe leider noch immer nicht das hinbekommen was ich gern wollte. Die Waveform von http://www.delphipraxis.net/internal...ct.php?t=30232 ist richtig gut, was ich nun noch hinbekommen muss ist ein Balken der automatisch mitläuft sowie die Speicherung der einzelnen Positionen z.B. beim Drücken einer Taste. Habt ihr eine Idee?


Beste Grüße
Rene
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz