Music Reactive Arduino

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche
Das Arduinoboard

Die Idee des Projektes war im Prinzip eine Zusammensetzung aus zwei Ideen:

1. Musik grafisch darzustellen durch Verknüpfung von Tönen mit Farben, sprich: Malen mit Musik
2. Ein Kleidungsstück, zB einen Handschuh mit LED-Leuchten zu versehen und im Rythmus eines Musikstücks aufleuchten zu lassen.

Somit enstand das Konzept, durch Input des Users Töne und Rythmen anhand von LED-Leuchten darstellen zu lassen.


Konzept

Der User verwendet ein Instrument (zB Keyboard oder Gitarre) und spielt einen Akkord. Je nach Tonhöhe oder Dur/Moll wird dieser Akkord vom Programm interpretiert und auf dem Handschuh die jeweilige verknüpfte Farbe aufleuchten. Dies kann sich als nützlich erweisen wenn man beispielsweise auf dem Pausenhof seine Klassenkameraden beeindrucken oder in der Disko zum absoluten Blickfänger werden möchte.


Umsetzung

Konzept2.jpg

Für die Realisierung des Projektes verwendeten wir die Programme Open Frameworks für Visual Studio zur Eingabe und Interpretierung des Audiosignals und Arduino, mit dem wir das E/A-Board programmierten so, dass wir über Steckplantinen die LED-Lichter aufleuchten lassen konnten.


Musikvisualisierung

Audiobsp.jpg

Vor dem eigentlichen Arduinospaß mussten wir erstmal dafür sorgen, dass die Musikvisualisierung so schon mal funktioniert. Dafür programmierten wir einen Kreis dessen Größe je nach Lautstärke des eingehenden Signals einer Musikdatei anschwellt oder abflaut. Als nächstes schrieben wir das Programm so um, dass es uns auch möglich war mittels des eingebauten Mikrofons eines Laptops die Größe des Kreises zu steuern.

Da der Kreis sich aber anfangs nur am linken Kanal orientierte, wandelten wir das Stereo Signal zu einem Mono Signal um, so dass beide Kanäle nutzbar waren. Zusätzlich haben wir den Betrag des Amplitudenwertes gebildet, da die Auslenkung der Wellenform auch ins Negative geht, allerdings ja totzdem eine Lautstärke besteht. Und damit der Kreis nicht bei jedem Pusten anspringt mussten wir einen Schwellenwert festlegen, der letztendlich dafür sorgt dass der Kreis den Rythmus darstellen soll (oder zumindestens sehr laute Töne).

Als letztes wurde der Wert noch binarisiert. Das heißt sobald die Amplitude über den Schwellenwert springt wird der Wert auf 1 gesetzt, sonst auf 0.


Arduino Board

Der erste Schritt hier war das Arduinoboard zunächst dazu zu bringen die eingebaute LED aufleuchten zu lassen. Nachdem das durch gezielte Ansteuerung des richtigen Pins geschafft war folgte der nächste Schritt:
Das Triggern von externen LEDs.

Glücklicherweise enthielt das Arduino Handbuch ein paar Beispielschaltpläne für die Verwendung von LEDs. So folgten wir den Schaltplänen dort und änderten die Codebeispiele der offiziellen Arduinowebsite so ab, dass wir auch die ersten LEDs auf der seperaten Schaltplatine zum Leuchten bringen konnte. Von da aus haben wir uns weitergehangelt bis zum ersten funktionierenden Lauflicht.

Der nächste Schritt war dann das einprogrammierte Lauflicht erst zu starten, sobald ein bestimmtes Signal gegeben war.
Das nahe liegendste dafür war eine einfache if-Bedingung zu nutzen, die nachsieht ob ein bestimmter Pin auf "HIGH" gesetzt ist und sobald das der Fall ist, das Lauflicht startet.


Die Zusammenführung beider Projekte

Schaltplan.png

Zuletzt mussten noch beide Bestandteile zu einem Projekt zusammengeführt werden. Anhand des Kommunikationsbeispiels in Open Frameworks wurde das Arduino eingebunden und erkannt vom Rechner. Damit dies allerdings funktioniert musste vorher das Firmwareprogramm auf das Board geladen werden. Mit unserem Lauflichtprogramm ging dies nicht. Deshalb implementierten wir das Lauflicht in den Firmwareprogrammcode und luden es auf das Board. Nun wurde es nach längerem Austesten und einigen Resets des Boards erkannt und wir konnten den finalen Schritt machen. In Open Frameworks haben wir nun unser Audioerkennungsprojekt eingebunden und als letzte Verknüpfung gesagt, sobald unser vorher definierter Wert auf 1 gesetzt wurde (durch ein lautes Audiosignal) setze unseren bestimmten Pin auf "HIGH". Dies wiederum löste dann das Lauflicht aus. Unsere Visualisierung war geschafft.

Hard- und Software

Software:
openFrameworks (0.9.8) für Microsoft Visual Studio 2015
Arduino IDE (1.8.1)

Hardware:
Arduino Uno Rev 3
Arduino Steckplatine

Download

Hier kann man die Dateien herunterladen.