Live Visuals Coding @ Lange Nacht der Wissenschaften 2017

Beschreibung

Die Werkstatt für Interaktive Medien stellte für die Lange Nacht der Wissenschaften ein System zur Live Programmierung von Computergrafiken bereit. Besucher konnten sowohl Werte im Programm über eine Eingabekonsole mit Drehreglern und Schaltern ändern als auch den Code einsehen und nach eigenen Vorstellungen anpassen.

Das System übernimmt Änderungen und stellt sie sofort dar. Der Einfluss von Eingabekonsole und Programmierung ist also sofort sichtbar und erleichtert so das Verständnis des Programms. Diese Transparenz senkt die Hürde für den Einstieg in die Programmierung drastisch, so dass selbst unerfahrene Besucher in unterschiedlichster Weise auf die angezeigten Grafiken Einfluss nehmen wollten und konnten. Es entstanden rege Diskussionen über Änderungen des Codes, die Eingabekonsole wurde zum Spielen auf Musik genutzt und einzelne Besucher sowie größeren Gruppen entwickelten eigene Programme. InterAction!!

Funktionsweise

Das System verwendet das C++ Toolkit openFrameworks, das die Eingaben der Konsole entgegen nimmt und ein Fenster für die erzeugten Grafiken bereitstellt. Im Grafikfenstern wird ein fenstergroßes Rechteck angezeigt, das mit einem Fragment-Shader "eingefärbt" wird (LINK ofBook shaders). Das Shader-Programm kann zur Laufzeit geändert werden. Dafür prüft das Programm eine vorgebene Datei mit Shader-Code (GLSL) auf Änderungen, validiert den Code und lädt bei Erfolg das Shader-Programm automatisch neu.

Das Shader-Programm wurde im Texteditor Notepad++ angezeigt und konnte dort verändert werden. Zusammen mit dem Topmost Plugin für Notepad++ kann das Editorfenster transparent dargestellt werden und über dem Grafikfenster selbst im Vollbildmodus liegen.

Die Eingabekonsole beinhaltet einen Arduino Uno, dessen Eingabepins mit zwei Schaltern und drei Drehreglern verbunden sind. Auf dem Arduino läuft die Standard-Firmata Firmware, die es openFrameworks erlaubt, per USB den Zustand der Schalter und Regler am Arduino auszulesen. Die Werte -- 0 oder 1 für die Schalter, 0.0 bis 1.0 für die Regler -- werden an das Shader-Programm weitergegeben, so dass sie im Live Code verwendet werden können.

Verwendete Resourcen

openFrameworks "C++ toolkit for creative coding"
Arduino Uno Microcontroller Board für Eingabekonsole
Notepad++ Erweiterbarer Texteditor
Topmost Plugin Notepad++ Plugin, um das Editor-Fenster transparent und im Vordergrund zu halten