Air Guitar Hero

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche
Gitarre mit farbigen Markern

Wer kennt das nicht - irgendwo auf einer Party oder einem Konzert dröhnt laute Rockmusik und plötzlich fängt einer an, irre Bewegungen zu machen, so als wäre er der Gitarrist höchst persönlich. Luftgitarre spielen. Diese Idee wird in unserem Projekt noch etwas weiter geführt.

Der "Air Guitar Hero" agiert nicht nur so stumm vor sich hin, sondern kann mit seinen Bewegungen scheinbar echte Musik machen. Außerdem soll er das Gefühl bekommen, auch auf einer realen Bühne zu stehen.

Konzept

Der Spieler bekommt eine echte (oder auch unechte) Gitarre in die Hand. Auf deren Bünden sind farbige Markierungen angebracht. Um einen Ton zu erzeugen, greift er einen Bund und bedeckt ihn mit seinen Finger. Dadurch ist nun eine bestimmte Farbe nicht mehr sichtbar. Dies wird erkannt und ein vorher aufgenommener Akkord abgespielt. Es können auf mehrere Akkorde gleichzeitig abgespielt werden. Außerdem erklingt der Ton nur so lange, wie die Hand die Farbe verdeckt. Somit kann die Spielgeschwindigkeit gesteuert werden.

Umsetzung

Das Projekt wurde mit Hilfe von EyesWeb realisiert. Dabei kamen zwei wichtige Techniken zum Einsatz:

  • Das Farbsegmentierungsverfahren
  • Das Keyingverfahren

Farbsegmentierung

Die Farbsegmentierung ist nötig, um die Sichtbarkeit der einzelnen farbigigen Markierungen auf dem Gitarrenhals erkennen zu können. Im folgenden ist der EyesWeb Subpatch abgebildet. Dieser wird jeweils einmal für eine Farbe angelegt und mit den entsprechenden Parametern für Helligkeit und Sättigung der gesuchten Farbe durch den Hauptpatch versorgt.

Farbsegmentierung.png


  • Die einzelnen Abläufe sind wie folgt:
    • ankommendes Bild in HSV Format wandeln
    • Binarisierung über oberen und unteren Helligkeitswert
    • Binarisierung über oberen und unteren Sättigungswert
    • Multiplikation beider Masken - jetzt ist nur noch die gesuchte Farbe übrig
    • Zählen aller Pixel jeweils einer Farbe und Ablage in Blobs (wir haben nur eine Farbe)
    • Auswahl des Blobs und Ausgabe der Fläche als Zahlenwert
    • Vergleich mit einem Treshold und erzeugen von Triggern
    • Rückgabe der Triggersignale an den aufrufenden Patch
    • dieser startet oder stoppt die Wiedergabe entsprechend


Weitere Informationen zur Farbsegmentierung gibt es auch hier.

Keying

Das Keying-Verfahren wird dazu genutzt, den Hintergrund des Spielers zu entfernen und ihn scheinbar auf eine Bühne zu stellen. Netter Nebeneffekt ist, dass dies auch der Erkennung der farbigen Marker hilft, da gleiche Farben im Hintergrund nicht stören, wenn nur der maskierte Spieler und seine Gitarre ausgewertet werden.

Keying.png
  • Die einzelnen Abläufe sind hierbei wie folgt:
    • ankommendes Bild in HSV wandeln
    • mit Hilfe eines Triggers vom aufrufenden Patch ein Bild abspeichern (dies ist idealerweise der Hintergrund ohne Spieler)
    • alle weiteren Bilder vom gespeicherten Bild subtrahieren
    • Ergebnis binarisieren (da wir hier nur eine Maske erzeugen wollen)
    • mittels Median-, Blur- und Opening-Operatoren Lücken in der Maske schließen und kleinere Störungen entfernen
    • Maske und neues Hintergrundbild, sowie originales Kamerabild in den Picture-In-Picture Block geben
    • über weitere X-, Y- und Scale-Parameter kann die Position und Größe des Spielers auf der Bühne angepasst werden
    • der zweite PiP-Block dient der Ausgabe des Spielers vor einem schwarzen Hintergrund (für eine stabilere Auswertung der Farbmarkierungen auf der Gitarre)


Weitere Informationen zum Keying-Verfahren gibt es auch hier.

Ergebnis

Hier am Ende noch ein Bild, wie es durch EyesWeb im Idealfall ausgegeben werden sollte.

Air Guitar Hero

Herausforderungen

Okay. Ganz so toll sieht das in der Praxis dann doch nicht aus. Da haben wir leicht nachgeholfen. Tatsächlich hatten wir uns die Umsetzung deutlich einfacher vorgestellt, aber es gibt Stolperfallen:

  • EyesWeb XMI läuft nicht immer stabil und braucht recht viel Ressourcen
  • man benötigt eine gute Kamera - WebCams sind nur bedingt geeignet, vor allem wenn man die Belichtungsautomatik nicht ausschalten kann
  • man benötigt eine einfarbige Wand und eine gleichmäßige, schattenfreie Ausleuchtung
  • die Kameraeinstellungen für Farbsegmentierung und Keying unterschieden sich bei uns sehr stark, sodass wir zum Schluss zwei Kameras parallel genutzt haben, die jeweils für ihre Aufgabe optimal eingestellt waren

Downloads

Patch für Farbsegmentierung und Tonausgabe: farbsegmentierung.eywx

Die aufgenommenen Akkorde: akkorde_mp3.zip

Patch für das Keying: keying.eywx

Hintergrund für Keying: hintergrund_buehne.jpg

Schlusssatz

Das Projekt war eine spannende Erfahrung. Wir hatten viel Spaß beim Ausprobieren. Wer die Idee genauso toll findet wie wir, sei herzlich eingeladen, an dieser Sache weiter zu arbeiten.