Ich habe hier schon öfters über verschiedene Programmierumgebungen zum Erstellen von Synths, Effekten oder Sequenzern geschrieben, ob es nun Max/MSP, SuperCollider, JUCE/C++ oder auch VCV Rack (obwohl das Rack keine wirkliche Programmierumgebung ist … naja) war. Eine Programmiersprache habe ich aber noch nie aufgegriffen, und das ist Pure Data.

Pure Data oder Pd wurde Anfang der 90er Jahre von Miller Puckette entwickelt und sollte zur Erzeugung von interaktiver Computermusik dienen. Puckette hat ebenfalls Max entwickelt, dass später dann zu MSP und kommerziell wurde. Pd ist immer ein freies Open Source Projekt geblieben und wurde seitdem stets erweitert.

Pure Data – Beispielpatch (Quelle: YouTube)

Visuelle Programmierumgebungen machen es dem kreativen Musiker etwas einfacher als reine textbasierte Systeme wie z.B. SuperCollider oder komplexe Programmiersprachen wie C++ oder Java. Dennoch stellt Pd eine gewisse Herausforderung dar. Digitale Audio Workstations, wie Bitwig, Ableton oder Studio One liefern einen abgesteckten Rahmen und leiten den Musiker recht zielgenau in der Arbeitsweise mit den einzelnen Werkzeugen. Pd hingegen startet mit einem leeren Blatt (Patch) und der Künstler muss zunächst einmal wissen, wo er überhaupt hin will.

Auch wenn es sehr viele Parallelen zu Max/MSP gibt, sieht Pd verglichen zu Max doch noch etwas spartanischer aus, dafür darf man es komplett kostenlos nutzen und wenn man dazu fähig ist, den Quellcode sogar verändern und erweitern, denn dieser ist Open Source.

Der primäre Anwendungsbereich von Pd ist und war das Verarbeiten von Audio, aber es ist über die Jahre zu einem allgemeinen Signal-verarbeitenden Monster herangewachsen, dass vielfältig eingesetzt werden kann. Es gibt Collections zur Video- und Bildverarbeitung, man hat die Möglichkeit allerlei Joysticks, Controller, Sensoren und Motoren zum Steuern von Robotern oder für spezielle Media-Installationen einzusetzen und es ist natürlich auch ein hervorragendes System für das Lernen von Audiosignal-Verarbeitung.

Ist Pure Data eine Programmiersprache? Ja, es ist eine Turing-komplette Sprache, mit der man alles machen kann, was man auch in einem Algorithmus ausdrücken kann. Natürlich ist Pd nicht für alle Zwecke geeignet, z.B. würde ich eine Website nicht mithilfe von Pure Data bauen wollen. Es ist nunmal eine spezielle Sprache, die für das Verarbeiten von Signalen entwickelt wurde.

Hinter den Kulissen ist Pd äußerst komplex. Um Signalverarbeitung einfach einsetzbar zu machen, werden dem Nutzer hochkomplexe Vorgänge wie die Speicherfreigabe von gelöschten Objekten oder ähnliches verborgen bleiben.

Pure Data Guitar Pedal (Quelle: YouTube)

Pure Data gibt es für den Mac, für Linux und für Windows Rechner. Die aktuellste Version kann man hier downloaden. Ich empfehle allerdings Pd-Extended. Diese Version beinhaltet bereits viele nützliche Erweiterungen und Collections, die durchaus nützlich sind. Den aktuellsten Download gibt es hier. Leider wird die Extended Version seit 2017 nicht weiterentwickelt. Deshalb wäre es vielleicht ratsamer Pd-l2ork zu benutzen. Das ist ein Fork von Pd-Extended, den es anfangs nur für Linux gab, mittlerweile aber unter dem Namen Purr-Data für alle Plattformen verfügbar ist.

Purr-Data, das aktuelle Pd-Extended

Das erste, was man in Pure Data machen sollte, nachdem man es installiert hat, ist das Testen der Audio-Umgebung. Unter dem Menüpunkt BEARBEITEN / EINSTELLUNGEN kann man alles Wichtige zur Soundkarte einstellen und mit dem Patch MEDIEN / TESTE AUDIO UND MIDI öffnet man ein Testpatch, um zu Schauen bzw. Hören, ob alles richtig funktioniert.

Teste Audio und Midi…

Hier klickt man unter TEST TONES zunächst auf 60 und dann auf 80 und man sollte einen Testton erst leiser, dann lauter hören. Außerdem kann man die Audio-Eingänge unter AUDIO INPUTS testen. Dort sollten sich dementsprechend die Werte unter den jeweiligen Eingängen ändern (je nachdem wieviele Eingänge aktiv sind. Bei dem internen Mikrofon eines Macbooks sind es nur 1 und 2)

Das Konzept hinter der Pd Programmierung ist eine Art Datenfluss. Die Daten fließen anhand von Verbindungen und Anschlüssen durch diverse Objekte, die diese Daten dann verarbeiten oder bearbeiten. Der Ausgang eines Objekts führt zu dem Eingang eines anderen, dazwischen könnten noch einige weitere Objekte durchlaufen werden.

Über die einzelnen Objekte würde ich gerne im nächsten Teil etwas genauer eingehen, außerdem baue ich dann das obligatorische „Hello World“ und ich erzeuge mal einen ersten einfachen Sound…