Programmierung für Auftritt

Screenshot Programmierung 01©Studioproduktion Event Media

Geschicklichkeitsspiele, wie unseres, fordern eine durchdachte Programmierung mit vielen Komponenten und Ebenen. Darum bauen wir unsere Logik anfangend vom Basisspielprinzip immer weiter aus. Mit dem node-basierten Programm Touchdesigner entstehen so immer größere Codenetzwerke, die den Spielablauf in sich tragen. Dabei sind einige Dinge zu beachten.

Der erste Schritt liegt darin, Touchdesigner mit der Audio-Software Ableton zu verbinden. Da das passende Plugin dazu bereits in Touchdesigner installiert ist, gelingt die Einbindung ohne große Schwierigkeiten. Geht es allerdings darum, sich in Ableton zurecht zu finden, ist die Hilfe von unseren Ton-Spezialisten gefragt.

Regelmäßig kommen neue Versionen der Tracks, bei denen die zu spielenden Noten auf vier MIDI-Spuren für die vier Spieler*innen aufgeteilt sind. In Touchdesigner muss jede MIDI-Datei in fünf Tasten aufgegliedert werden. Diese Einteilung jedes Mal per Hand durchzuführen, wäre sehr umständlich. Darum benutzen wir das von uns geschriebene Skript, mit dem man per Buttondruck die MIDI-Noten automatisch auf die fünf Tasten verteilt. Jedoch kann dabei der Fall eintreten, dass Noten, die direkt hintereinander kommen, auf dieselbe Taste gelegt werden. Das ist unvorteilhaft, da die Spieler*innen während dem Spiel für die ganze Länge der Note auf der Taste bleiben müssen. Für die folgende Note müssten sie erst wieder ihr Gewicht von der Taste nehmen und dann wieder darauf verlagern. In der nötigen Geschwindigkeit für die perfekte Punktzahl ist das allerdings nicht möglich. Dazu kommt, dass die LED-Streifen-Impulse, die die Noten symbolisieren und den Trittzeitpunkt angeben, direkt nacheinander laufen und somit wie ein einzelner Impuls aussehen würden. Dieses Problem ist im aktuellen Skript behoben.

Screenshot Programmierung 02©Studioproduktion Event Media

Wie bereits angesprochen, können mehrere LED-Impulse zur gleichen Zeit auf einem LED-Streifen laufen. Damit das funktioniert müssen mehrere Elemente passen.

Um es erklären zu können, muss man am Anfang des Spiels beginnen. Startet das Spiel, wird die MIDI-Datei ausgelesen und das Programm gibt zu den passenden Zeitpunkten an, wann welche Note gespielt wird. Diese Signale werden als Startsignale für die Impulse auf den LED-Streifen verwendet. Erst nach der Zeit, die ein Impuls braucht um vom Anfang des LED-Streifens, bis zu seiner jeweiligen Taste zu kommen, wird der Backtrack des Lieds gestartet. So wird sichergestellt, dass die nächste zu spielende Note klar ist, bevor sie zeitmäßig gespielt werden soll. Denn wird ein LED-Impuls gestartet, trägt er in Touchdesigner auch die Information in sich, welche Note gespielt werden soll.

In dem Bereich in Touchdesigner, wo herausgefunden wird, welche Note bei einem Tastendruck gespielt werden soll, kommen auch diese Informationen der LED-Impulse an. Die Impulse werden dort laufen gelassen, indem man einen Timer startet, wenn der Impuls startet und ihn stoppt, wenn er am Ende angekommen ist. Das wird für jeden Impuls gemacht, der sich gerade auf dem LED-Streifen befindet. Eine Logik findet heraus, welcher der laufenden Impulse gerade der ist, der als nächstes an der Taste ankommt. Wird die Taste gedrückt, findet man diesen Impuls und lässt seine jeweilige Note ertönen. Diese Herangehensweise stellt sicher, dass logiktechnisch mehrere Impulse gleichzeitig laufen können und bei einem Tastendruck der richtige Ton gespielt wird. Das war bei den ersten Versionen unserer Logik noch nicht so. Doch nicht nur sie muss stimmen, sondern auch die tatsächliche Anzeige der Impulse auf den LED-Streifen. Unser erster Ansatz, das mit Arduino IDE und über OSC umzusetzen, wird nicht weiter verfolgt.

Für unseren Anwendungszweck ist diese Methode zu unflexibel und dauert zu lang. Stattdessen verwenden wir ein ähnliches Prinzip, wie das gerade angesprochene bei den Tastendrücken. Dabei kommt uns WLED, DMX und ArtNet zu Gute. Kommt ein Startsignal für einen Impuls eines LED-Streifens an, so wird derjenige Touchdesinger-Impuls gestartet, der gerade noch nicht oder nicht mehr läuft. Mehrere Nodes rechnen daraufhin die Eigenschaften eines Rechtecks aus, das dadurch erst wächst und dann von der einen Seite des Screens zur anderen wandert. Dieses Bild benutzen wir, um es auf die LED-Streifen zu mappen. So entstehen die LED-Impulse, die die Spieler*innen sehen.

Tastenprototyp 01©Studioproduktion Event Media

Durch das Bühnendepartment haben wir eine Prototyptaste mit einem Schalter, der auslöst, wenn die Taste gedrückt wird. Um den Tastendruck an Touchdesigner senden zu können, verwenden wir OSC. Der Code dazu befindet sich auf einem ESP32, an den der Schalter angeschlossen ist. Die entsprechende Emfang-Node ist in Touchdesigner. Bekommt sie ein Signal, wird über eine Logik die zu spielende Note herausgefunden und per MIDI an Ableton geschickt.

Der Schwierigkeitsgrad unserer Installation für die Spieler*innen wird zu einem großen Teil über die Definition des Punktesystems geregelt. Wie genau die Punkte zusammengezählt werden und ab wann ein Multiplikator greift, entscheidet, wie gut die Spieler*innen sein müssen, um eine bestimmte Punktzahl zu erreichen. Die Logik dafür muss mit mehreren Iterationen verfeinert werden. Zurzeit greift ein Multiplikator auf die Punkte, wenn der Durchschnitt der letzten 8-10 gesammelten Punkte über einem bestimmten Schwellenwert liegt. Wie genau die Werte dafür sein müssen, ergibt sich aus folgenden Tests.

Damit das Spiel programmiertechnisch so einfach änderbar ist, muss die Logik entsprechend aufgebaut sein. Ein großer Teil der Programmierung fokussiert sich darum, alles so zu strukturieren, dass spätere Änderungen von maßgeblichen Variablen keine Probleme verursachen.

Tastenprototyp 02©Studioproduktion Event Media

Wir haben einen Prototyp, mit dem man das Spiel für einen Spieler testen kann. Dieser Prototyp hilft uns nicht nur dabei, Besucher*innen einen greifbaren Einblick in unser Projekt zu geben, sondern auch, unseren Code zu verbessern. Anhand von mehreren Testspieldurchläufen werden Unstimmigkeiten erkannt und in unseren Nodes beseitigt.

Beitrag von Alina Wahl.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert