1.2 Processing

Processing wurde speziell für die Anwendung im audiovisuellen Medienbereich entworfen. Es wird seit 2001 am MIT (Boston/USA) unter der Leitung von Ben Fry und Casey Reas (später auch Daniel Shiffman) entwickelt. Processing eine vereinfachte Form der Programmiersprache Java dar, die speziell entwickelt wurde, visuelle Elemente und Interaktion zu programmieren. Dementsprechend setzt sich die Zielgruppe von Processing vor allem aus Gestaltern und Künstlern zusammen, die eben zuallererst dies und erst in zweiter Linie Programmierer sind. In den letzten Jahren sind einige weitere Projekte aus Processing hervorgegangen von denen sicherlich das Hardware-Projekt Arduino, dessen Programmierumgebung auf Processing basiert, das bekannteste ist. Neuste Updates in Processing selbst stellen spezielle Modi der Entwicklungsumgebung dar, die es ermöglichen für Web-Browser im JavaScript-Modus ,für → Android-Geräte oder in → Python zu entwickeln.

Fig. – Entwicklungslinie von Processing

Neben Processing existieren einige andere Umgebungen, die mit jeweils variierenden Schwerpunkten für die Entwicklung von audiovisuellen Systemen entwickelt wurden:

Teilweise existieren Schnittstellen für den Datenaustausch zwischen Processing und diesen Tools und sie lassen sich nutzen, um in Projekten mit Processing zusammenzuwirken. Die modulare Sound-Software MAX von Cycling `74 ( → MAX) beispielsweise kann durch Processing-Programme angesteuert werden bzw. Processing kann Daten von MAX empfangen. Beispiel: → MAX/Ableton LIVE/Processing-Projekt

2.1 Die Programmoberfläche von Processing

2.1.1 Das Sketch-Fenster

Da die Software für den Kurs vorinstalliert ist wird nicht näher auf die Installation eingegangen, alle notwendigen Informationen finden sich jedoch im → entsprechenden Bereich der Processing Website.

Fig. – Sketchfenster

Eine Übersicht über die grundlegenden Funktionen findet sich auch hier auf der Website von Processing: → Anleitung

2.1.2 Das Ausgabfenster

Neben dem Sketch-Fenster verfügt Processing über das Ausgabefenster, das sich automatisch öffnet, wenn man den Ausführen-Button drückt. Es zeigt das Programm, dass zuvor im Sketch-Fenster erstellt wurde, im unteren Beispiel sind dies lediglich zwei einfache Linien:

Fig. – Ausgabefenster. Seine Größe wird mit dem Befehl size() festgelegt.

2.2 Aufbau eines Sketches

Processing-Programme werden als „Sketch“ bezeichnet. Jeder Sketch liegt im Dateisystem in einem eigenen Ordner. Dieser Ordner wird von Processing automatisch angelegt und erhält den gleichen Namen, der beim speichern für den Sketch definiert wurde.
Ein typisches Programm besteht in Processing aus den beiden Funktionen setup() und draw() (eine Erklärung, was Funktionen genau sind, folgt weiter unten):


void setup() 
{
   println(„start“);
}

void draw()
{
   println(„loop“);
}

setup() wird am Begin des Programmablaufs einmal ausgeführt. Hier wird bspw. die Größe des Ausgabefensters definiert. Die Funktion draw() hingegen wird als Schleife immer wieder ausgeführt, jeder Durchlauf zeichnet einen Frame in das Ausgabefenster. Das geht so lange, bis man den Stop-Knopf drückt. So lassen sich Bewegung und Interaktion realisieren, was bei einem statischen Programm nicht möglich wäre. Wenn man beispielsweise eine Form von links nach rechts durch das Ausgabefenster wandern lassen möchte, so kann man seine x-Koordinate bei jedem Durchlauf von draw() um den Wert 1 erhöhen, den Inhalt des Ausgabefensters löschen und dann das Objekt an neuer Position zeichnen:


void draw(){
    x = x +1;
    backgound(255);
    point(x, 500);
}

Die Anweisungen, die durch die geschweiften Klammern zusammengefasst sind, werden als Code-Block bezeichnet. Code-Blöcke treten später auch bei Schleifen oder Verzweigungen auf (siehe unten).

2.3 Verwendung von Koordinaten

Um Positionen von Linien, Bezierkurvenpunkten, Objekten, Vektoren etc. zu definieren werden Koordinaten verwendet. Wie etwa auch bei Zeichenflächen in Adobe Illustrator liegt dabei der Ursprung links oben. Beachtenswert ist, dass Koordinaten Nachkommastellen aufweisen können und nicht auf ganze (Pixel-)Werte beschränkt sind.
Wie es etwa in Illustrator Werkzeuge gibt, um Grundformen wie Linien, Rechtecke oder Ellipsen zu erstellen, so exisiteren in Processing dafür Befehle. line(), rect(), ellipse(). Sie haben Parameter, mit denen Position und Größe der jeweiligen Form festgelegt werden: ellipse(100,100, 200, 200);