Bezug nimmt dieser Thread auf den Thread "Die Vision eines intelligenten Mediaplayers...". Damit es dort nicht drunter und drüber geht, kümmere ich mich hier um den Teil der Audioanalyse.
Sodila, weiter gehts.
Ich habe mich jetzt die letzten Tage mal hingesetzt und eine Klasse geschrieben, die die PCM-Daten aus Audiodateien auslesen kann, diese einer Fourier-Analyse unterzieht und anschließend ein (logarithmisches) Spektogramm ausgibt. Meine Idee ist, die spektografische Analyse einer Musikdatei zu untersuchen.
Derzeit bin ich am experimentieren, was ich mit den Werten anfangen kann. So addiere ich bspw die (logarithmierten) Werte aller Samples zusammen und teile diesen Wert dann durch die Anzahl der Samples * 10000. So bekomme ich einen Wert, der mir (meiner Meinung nach) etwas über die subjektive Lautheit eines Tracks sagt. So hat bspw "American Idiot" von "Green Day" einen sechs mal höheren Wert als "Hallelujah" von "Jeff Buckley". Das kann aber auch kompletter Zufall sein. Allerdings hat der Sound einer Bombenexplosion einen zehnmal höheren Wert als "Hallelujah".
Was mir noch fehlt, sind Möglichkeiten, die Geschwindigkeit eines Liedes zu bestimmen. Kann ich mich da nur auf die Beats Per Minute verlassen? Eher nicht, denn "Der Hummelflug" hat, auf der Geige gespielt, vermutlich recht wenig messbare Beats Per Minute - trotzdem ist das Ding verdammt schnell.
Was könnte man also tun? Man könnte bspw. in den höheren Frequenzen nach mehreren Samples hintereinander suchen, die ungefähr einen ähnlichen Wert haben. Dies würde bedeuten (
imho), das hier ein Ton recht lange gehalten wird, was ja meist ein Indiz für ein langsames, trauriges Lied ist (
imho).
Ich habe euch mal ein paar Spektogramme vorbereitet:
Clueso - Gewinner
Dire Straits - Brothers in Arms
Eminem feat. Rihanna - Love The Way You Lie
Hurts - Wonderful Life
Jeff Buckley - Hallelujah
Alles in allem - was meint ihr dazu?