• ComputerBase erhält eine Provision für Käufe über eBay-Links.

Audioanalyse

asdfman

Commander
Registriert
März 2008
Beiträge
2.315
Schönen Abend,

ich habe in den letzten Monaten in meiner Freizeit an einem Projekt gearbeitet, das das Ziel hat, eine RGB-Leiste zur Audiovisualisierung zu benutzen. Ein simples Beispiel für das, was ich möchte, wäre ein zufälliger Farbwechsel im Takt der laufenden Musik. Der elektrische Teil des Projektes ist weitgehend fertig und ich habe einen simplen Server geschrieben, der Farbdaten aus dem Netzwerk entgegennimmt und das an die RGB-Leiste weiter gibt. Alles, was fehlt ist der wichtigste Teil, in dem ich dann noch am wenigsten Erfahrung habe: Die Analyse der Audiodaten und erzeugen von Farbwerten.

Mir wurde dafür einmal die Bibliothek aubio empfohlen. Die bietet die von mir am Anfang genannte Beaterkennung, aber wirkt mir insgesamt zu spezialisiert auf einige wenige Features. Eine Bibliothek (möglichst als freie Software), die mir möglichst viel Arbeit abnimmt, aber trotzdem ein breites Angebot an Features hat, wäre großartig und ich bin dankbar für jede Empfehlung die auf guter persönlicher Erfahrung basiert.

Andererseits mache ich auch gern Dinge selbst, sofern ich dabei etwas lernen kann und sich der Aufwand in einem vernünftigen Rahmen bewegt. Artikel zum Thema Visualisierung von Audiodaten wären für mich sehr wertvoll und weil ich relativ wenig Vorwissen habe wäre der "vernünftige Rahmen" in diesem Fall auch etwas größer, als ich normalerweise aufzuwenden bereit wäre. Daher auch hier: Wenn bekannt, bitte bescheid sagen :3

Gruß und Kuss, euer Asdfman.
 
Octave (freier Matlab-Klon) hat einige integrierte Funktionen (z.B. Signal-Package) in der Richtung. Kann man dann auch in C/C++ einbinden.
 
Zuletzt bearbeitet:
Hast du dir schon konkretere Gedanken für die Hardware gemacht? Audio-Analyse dürfte echtzeithardware wie einen µC mit DSP erfordern.
Ich hab in letzter Zeit Erfahrung mit dem CortexM4 gesammelt, welcher auf Developer-Boards nicht nur einen Audio-In sondern auch direkt einen DSP zur Verfügung stellt.
Evtl interessiert es dich ja:
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419
http://www.ebay.de/itm/STM32F4-DISC...77040?pt=Mess_Prüftechnik&hash=item233992cb90

Lässt sich auch sehr komfortabel mit C++ und aktuellem GCC programmieren:
http://istarc.wordpress.com/2014/07/01/stm32f4-hello-world/
Bzw von unten nach oben: http://istarc.wordpress.com/category/embedded-systems/stm32f4/

Je nach Auflösung/Frequenz deines equalizer brauchst du aber evtl auch einen FPGA und VHDL.
 
Zuletzt bearbeitet:
kuddlmuddl schrieb:
Hast du dir schon konkretere Gedanken für die Hardware gemacht?

Ich schrieb doch in meinem Startpost:
Der elektrische Teil des Projektes ist weitgehend fertig

Und er ist sehr sehr simpel. Besteht im Grunde aus drei Leistungstransistoren an den GPIO-Ports meines Raspberry. Die Software, die darauf läuft ist auch minimal gehalten. Nimmt per TCP je ein Byte für Rot, Grün und Blau entgegen und leitet das mit etwas PWM an die Ports durch. Die eigentliche Arbeit soll mein Rechner hier machen, der Leistung im Überfluss hat. So brauche ich mir keine Sorgen machen, dass der Raspberry irgendwann vielleicht doch zu schwach ist und vor Allem schränke ich mich dadurch nicht ein, wie ich die Leiste verwenden kann. Es läuft ja nicht ununterbrochen Musik hier und (ggf. sogar bunte) Beleuchtung kann ja dann trotzdem ihre Daseinsberechtigung haben.

Elektrotechnik allgemein ist etwas, mit dem ich mich liebend gern mehr beschäftigen würde, deshalb kommt dein Post hier auf jeden Fall auf meine Warteliste für Dinge, die ich lernen will. Möchte den Aufwand da aber zumindest im Moment überschaubar halten und nur wenn unbedingt nötig die Komplexität der Elektronik erhöhen.

Das Video hier zeigt den aktuell stagnierenden Stand der Dinge:
https://www.youtube.com/watch?v=m5vYTy-Gnlo
 
Der elektrische Teil des Projektes ist weitgehend fertig
"elektrisch" hatte ich für mich mit Verdrahtung, Led Vorwiderstände etc übersetzt aber nicht als die HW welche die Berechnung durchführt - vor allem weil du noch nach SoftwareLibs gefragt hast. Ich hatte nämlich neulich mit nem E-Techniker über ein ähnliches Projekt geredet und er sagte, dass µCs ohne DSP dafür idR zu langsam sind wenn man auch den hochfrequenteren Teil korrekt durch einen EQ darstellen will. Außerdem halte ich die Idee für den Rechenteil den PC zu verwenden für schwierig wegen der Latenz. Wie tauscht du denn zwischen Raspberry und PC die Daten schnell genug aus? RS232?
Klar, wenn du nur grob ne DFT machst um zu erkennen mit welcher phase und frequenz um 120hz rum die haupt-bpm deines Tracks liegt könnte das gehen, weil der Mensch die Latenz bei so niedrigen Frequenzen kaum erkennen kann. Bei meinem Gespräch mit dem E-Techniker gings um nen real-time equalizer der eben zB 32 Frequengruppen je einer eigenen LED zuweißt und das wäre wohl wegen Latenz für den hochfrequenten Teil der Musik nicht an den PC auslagerbar.
 
Zuletzt bearbeitet:
Mir fehlt die Erfahrung, das realistisch einschätzen zu können. Die Verbindung zwischen PC und Raspberry ist Ethernet. Dass dabei eine Verzögerung vorhanden ist, ist klar. Ob sie groß genug ist, damit sie stört: Absolut keine Ahnung. Nichtmal eine Vorstellung, ab welcher Größenordnung Latenz da auffallen würde.

Missverstehe meinen Post oben auch nicht als "Danke für deinen Beitrag, er wird mit der Aufmerksamkeit bedacht, die er verdient. Der nächste bitte". Ich bin dir dankbar und werde mich damit beschäftigen, egal ob der aktuelle Aufbau für mein Anliegen ausreichend ist oder nicht. Ich habe nur leider wirklich wenig Zeit, die ich meinem Privatvergnügen widmen kann und deshalb möchte ich das möglichst so machen, dass ein akzeptables Ergebnis herauskommt, ohne dass der Aufwand in einem unangemessenen Verhältnis dazu steht. Als Maßstab: Das Video oben ist das Ergebnis von ungefähr einem halben Jahr geopferter Freizeit. Nicht, weil es so viel Arbeit war, sondern weil ich so verdammt wenig Zeit habe, die ich für die Arbeit überhaupt nutzen kann. :/
 
Da wird doch nur das Video mit Aalib gerendert. Wüsste nicht, wie ich da Information über den Ton rausholen soll.

Simples Gegenbeispiel: (entfernt, weil eigentlich überflüssig)
 
Zuletzt bearbeitet:
Ich habe so etwas mal mit einem http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF260000 gemacht.

War zwar nur mit einer RGB LED und keine komplexe Analyse, aber das Ergebnis war trotzdem nicht schlecht.

Im Grunde habe ich einfach nur die Lautstärke benutzt um die Helligkeit zu regeln sowie eine (sich anpassende) Erkennung des Beates über die Amplitude genutzt, um die Farbe zu ändern.

Sowas ist recht schnell implementiert und wäre für den Anfang schon mal was.

Leider habe ich das Video davon nicht mehr :rolleyes:
 
Zurück
Oben