Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi BPM auslesen (https://www.delphipraxis.net/142284-bpm-auslesen.html)

Crosaider 25. Okt 2009 11:09


BPM auslesen
 
Hallo @ all

Ich würde gerne ein Programm schreiben, welches die DPM von MP3 Dateien ausließt und in einem Label ausgiebt. Geht das über mit Delphi? Hoffe ihr könnt mir helfen.

Viele Grüße
Crosaider

fkerber 25. Okt 2009 11:11

Re: BPM auslesen
 
Hi!

Meinst du mit auslesen, bestimmen?
Dann schau mal hier - vllt. findest du da Anregungen:
http://www.delphipraxis.net/internal...t.php?t=164505


Grüße, Frederic

lbccaleb 25. Okt 2009 11:44

Re: BPM auslesen
 
Zitat:

Zitat von Crosaider

Geht das über mit Delphi? Hoffe ihr könnt mir helfen.


Na klar, das Einzige was Delphi nicht kann, ist Materie erstellen :mrgreen:

OldGrumpy 25. Okt 2009 11:58

Re: BPM auslesen
 
Zitat:

Zitat von lbccaleb

Na klar, das Einzige was Delphi nicht kann, ist Materie erstellen :mrgreen:

Klar geht das:

Delphi-Quellcode:

Uses Matter {, Antimatter}; //Matter and Antimatter don't mix well, crash :(
var MyAtom: TAtom;

MyAtom:=TAtom.Create(nil);

Medium 25. Okt 2009 13:01

Re: BPM auslesen
 
"Auslesen" ist dezent ausgedrückt "naiv angesetzt" ;). Die BMP stehen nicht einfach in der Datei (möglich dass es da sogar Tags für gibt, aber oft werden die wohl dann nicht benutzt), sondern du musst schon eine dann nicht mehr so triviale Analyse der Datei machen.
Diese beinhaltet bei BPM-Detection grob:
1) Dekodieren in einen Wavestream
2) Stückchenweise FF-Transformieren (alternativ Lowpass filtern)
3) Geeigneten Grenzwert für "Kick"-Frequenz schätzen
4) Abgrenzung von ziemlich sicheren Kick-Events zu anderen Peaks
5) Bestimmung der Zeitabstände zwischen Kicks -> Kehrwert = BPM

Abhängig von der Güte der Analyse, der Art der Musik und der Musik an und für sich(*), kommt dann am Ende eine mehr oder weniger passende Schätzung heraus, die aber durchaus an verschiedenen Stellen im Lied auch mal unterschiedlich sein kann.

* Bei Techno z.B. ist es recht wahrscheinlich einen realistischen und stabilen Wert zu bekommen. Bei Rock wird's z.T. schon schwieriger, bei Ambient oder Klassik oftmals fast schon unmöglich.

Ein anderer Ansatz geht über eine Form von Dichtefunktion, bei der grob gesagt ermittelt wird wie viel "Energie" in einem Zeitabschnitt steckt. Das ist jedoch höchst mathematisch und abstrakt, sowie recht aufwendig.

Einfach mal "auslesen" ist also fern ab von dem was man tun müsste.

Am Rande: Warum sollte das mit Delphi nicht gehen? Delphi(32) kann genau das gleiche was auch C++ kann, mit Ausnahme der Treiberentwicklung (wobei auch das geht, ist aber ne Mordsverrenkung).

Crosaider 25. Okt 2009 15:52

Re: BPM auslesen
 
Es gibt ja im Inet genug Programme die das können. Könnte man so ein Programm im Hintergrund starten (also ohne zu sehen das es überhaupt offen ist) die BPM Zahl herausfinden lassen und dann in mein Programm übertragen?

Oder es gibt ja auch noch die BASS.dll. Könnte man damit vielleicht irgendwas machen?

Fussel9 25. Okt 2009 16:23

Re: BPM auslesen
 
Hi ich kenn mich zwar überhaupt nicht mit dem aus, was du da gerade redest also was BPM ist , aber ich meine mit ShellExecute kann man externe Programme ausführen und wenn deine Form nicht transparent ist kannst du ja den Windowstate auf Maximised stellen und einstellen Allways stay on Top dann sieh man das andere Programm nicht...

DeddyH 25. Okt 2009 16:25

Re: BPM auslesen
 
BPM = Beats Per Minute, also die Angabe, wieviele *UMTZ* pro Minute im Lied vorkommen. Ich bin aber derselben Meinung wie Medium, dass das wohl nur bei Techno einigermaßen zuverlässig berechenbar ist.

Sir Rufo 25. Okt 2009 16:29

Re: BPM auslesen
 
Zitat:

Zitat von Crosaider
Es gibt ja im Inet genug Programme die das können. Könnte man so ein Programm im Hintergrund starten (also ohne zu sehen das es überhaupt offen ist) die BPM Zahl herausfinden lassen und dann in mein Programm übertragen?

Oder es gibt ja auch noch die BASS.dll. Könnte man damit vielleicht irgendwas machen?

Such dir doch ein Programm raus, welches die ermittelten BPM-Werte in ein MP3-Tag schreibt.
Den Tag kannst Du dann mit deinem Programm auslesen.

Hier ist eine Liste mit BPM-Software http://www.mmartins.com/mmartins/bpm...mdetection.asp (englisch)

Gausi 25. Okt 2009 16:34

Re: BPM auslesen
 
Bei dem Addon bass_fx.dll zur bass.dll gibt es in der Hilfe einen Abschnitt "BPM/Beat detection". Das könnte das sein, was du suchst. Inwiefern das gut Ergebnisse liefert, weiß ich nicht, und auch nicht, wie man das genau benutzt. Aber einen Blick wäre das bestimmt wert. ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 Uhr.
Seite 1 von 2  1 2      

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