Hallo Leute,
ich habe als Ziel mit dem Computer LED’s zum Leuchten zu bringen - abhänging von der Musik, die gerade läuft. Also z.B. bei Beats bestimmte LED’s anzusteuern usw. Sowas gibts auch kommerziell (auch wenn ich den Namen gerade nicht kenne), aber ich möchte es gerne selber versuchen.
Dazu greife ich von der Soundkarte das ausgegebene Audiosignal ab. Bei einer Samplerate von 44,1 kHz fülle ich ein Array mit 1024 Werten und lasse darüber die FFT laufen. Der Wert 1024 ist willkürlich gewählt - hat jemand von euch Erfahrung wie lange man bei sowas samplen sollte? Wenn man zuviele Werte nimmt, wird das ganze ja lahm, da die Musik schon längst weiter ist, bis das Ergebnis angezeigt wird.
Um mein Programm zu testen, habe ich mir im Internet eine Bibliothek runtergeladen, mit der ich Wave-Dateien selber erzeugen kann. Dies habe ich zuerst mit einem 10-Sekündigen Sinus-Ton gemäß:
sin(2.0*PI*f1*t);
sin(2.0*PI*f1*t);
getestet (f1 = 441 Hz). Das Ergebnis war (oberstes Bild):
http://www.mehringskoetter.de/upload/files/9ee531379…
Das gleiche habe ich dann auch nochmal mit der doppelten Frequenz getan.
Zuletzt habe ich eine Überlagerung aus den beiden Tönen getestet (unterstes Bild):
sin(2.0*PI*f1*t)+sin(2.0*PI*f1*2*t);
sin(2.0*PI*f1*t)+sin(2.0*PI*f1*2*t);
Jetzt meine Fragen:
-Warum erhalte ich bei der Überlagerung so viele Oberschwingungen? Ich hatte eigentlich erwartet, dass ich einfach zwei Peaks erhalte?
-Die FFT liefert komplexe Werte aber der Schall kann doch nur reelle Amplituden annehmen. Bisher habe ich den Betrag genommen - müsste ich statt der FFT eigentlich die diskrete Kosinustransformation nehmen? (Nur zur Versicherung - dabei handelt es sich nicht einfach nur um den Realteil der FFT, oder?)
-Ich sehe in meinem Programm zwar bei Musik ein schön rauschendes Spektrum, kann dies aber schwer mit der Musik in Verbindung bringen, die ich gerade höre. Ist die FFT (bzw. DCT) dafür nicht das richtige Werkzeug, oder was mache ich falsch? Ich habe gelesen, dass die Constant-Q-Transformation eventuell in diesem Bereich angebracht ist, aber dazu habe ich noch keine Bibliothek gefunden. Hat diesbezüglich jemand von euch Erfahrung?
-Sind Wavelets für mein Ziel geeignet?
Dies sind leider sehr viele und auch nicht rein physikalische Fragen, aber ich hoffe das vielleicht der ein oder andere mir etwas weiter helfen kann.
Vielen Dank schonmal und viele Grüße
Manfred