![]() |
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 |
Re: BPM auslesen
Hi!
Meinst du mit auslesen, bestimmen? Dann schau mal hier - vllt. findest du da Anregungen: ![]() Grüße, Frederic |
Re: BPM auslesen
Zitat:
Na klar, das Einzige was Delphi nicht kann, ist Materie erstellen :mrgreen: |
Re: BPM auslesen
Zitat:
Delphi-Quellcode:
Uses Matter {, Antimatter}; //Matter and Antimatter don't mix well, crash :( var MyAtom: TAtom; MyAtom:=TAtom.Create(nil); |
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). |
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? |
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...
|
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.
|
Re: BPM auslesen
Zitat:
Den Tag kannst Du dann mit deinem Programm auslesen. Hier ist eine Liste mit BPM-Software ![]() |
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 22:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz