Thema: Delphi BPM auslesen

Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: BPM auslesen

  Alt 25. Okt 2009, 13:01
"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).
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)