Es fällt schwer, zu sagen, um welche Art von Software es sich bei Pd [1] handelt. Einschlägigen Websites bezeichnen es als grafische Programmierumgebung für Musik. Der Name Pure Data ist dabei Programm: Pd verarbeitet reine Daten, ohne sich zunächst groß darum zu kümmern, was sie darstellen. Dass eine Menge Zahlen eine hörbare Wellenform repräsentiert, spielt bei der Berechnung keine Rolle. Allerdings stellt Pd viele Elemente zur Verfügung, die vor allem bei der Audioverarbeitung nützlich sind.
Spezialist für Klangerzeugung
Mit Pd lassen sich grafisch virtuelle Synthesizer bauen, die jedes Detail der Klangsynthese selbst bestimmen. Wer nicht so tief einsteigen möchte, setzt aus fertigen Elementen eigene Instrumente oder Sequencer zusammen. Pd verarbeitet und erzeugt auch Midi-Daten und macht so das Zusammenspiel mit Keyboards und anderen Midi-Geräten möglich - allerdings erst ab Version 0.39 mit Alsa-Midi. Das Programm beherrscht die LADSPA-Schnittstelle (siehe folgenden Artikel) und arbeitet auch mit den meisten anderen Soundprogrammen zusammen. Schließlich ist Pd durch C-Programmierung und diverse Skriptsprachen so erweiterbar, dass sich praktisch jede denkbare Audio-Anwendung zusammenstecken lässt.
Der Benutzer baut mit Pd visuell Signalnetze (Patches) auf, die aus vier Grundelementen bestehen, denen grafisch kleine Kästchen entsprechen: Objekte (Object), Nachrichten (Message), GUI-Elemente (GUI) und Kommentare (Comment). Beim Start von »pd«, erscheint ein schmuckloses Tk-Fenster mit einem Menü, den beiden Aussteuerungsanzeigen »IN« und »OUT« und dem Error-Button »DIO« (Abbildung 2).
Der Parameter »-alsa« startet Pd mit Alsa-Support, »-jack« für Jack. Die Konfigurationsdatei »~/.pdrc« nimmt die gleichen Parameter in jeweils einer Zeile auf. Der Menüpunkt »File | New« öffnet eine neue Arbeitsfläche für ein Patch. Pd kennt zwei Modi: zum Editieren (Edit Mode) und zum Abspielen (Run Mode). Zwischen den beiden schaltet der Benutzer über einen Menüpunkt oder die Tastenkombination [Strg]+[E] um.
Objekte verbinden
Verfügbare Elemente zum Bau der Patches finden sich im Menü »Put«. Hat der Benutzer zum Beispiel ein Objekt auf der Fläche platziert, blinkt darin ein Cursor für die Eingabe des Objektnamens. Klickt er dann auf ein anderes Objekt oder die freie Fläche, versucht Pd das passende Objekt in seiner Sammlung zu finden. Gelingt dies, zeichnet es an die Box kleine Markierungen für Signalein- und -ausgabe (Inlets und Outlets). So ist »delay« ein vorhandenes Objekt, »xyz« dagegen nicht (Abbildung 1).
Im letzten Fall stellt Pd natürlich auch keine Inlets und Outlets dar. Im Terminalfenster (oder Pd-Ausgabefenster, je nach Version) erscheint die Fehlermeldung »couldn\'t create«. Es gibt in Pd also keine Liste tatsächlich verfügbarer Objekte. Der Benutzer muss ihre Namen kennen und in die Kästchen eintippen (Abbildung 1). Bewegt er die Maus über einen Ausgang, wird der Zeiger zu einem kleinen Kreis. Durch Klicken und Ziehen lässt sich dann eine Verbindung zu einem anderen grafischen Element herstellen. Unerwünschte Verbindungen löscht die [Entf]-Taste.
Neben den nicht weiter erklärungsbedürftigen Kommentaren kennt Pd noch Message-Objekte, die beim Anklicken Nachrichten verschicken. Dabei kann es sich um Zahlen, Listen, Strings und so fort handeln. Häufig verwenden Patches Message-Objekte zur User-Interaktion. Ein Spezialfall sind Message-Objekte mit mehreren Zeilen. Sie treten in vielen Patches auf und führen in der ersten Zeile meist nur ein Semikolon. Diese Zeile löscht gewissermaßen den Default-Empfänger der Nachricht. In jeder folgenden Zeile steht zuerst der Empfänger, dann folgt die Nachricht.
Abbildung 1: Wenn Pd ein Objekt nicht kennt, zeichnet es keine In- und Outlets (Oben). Existierende Objekte lassen sich dagegen über diese Anschlüsse verbinden (Mitte). Das Beispiel-Patch (unten) addiert mit »+« zwei Zahlen und gibt das Resultat mit »print« aus.
Message-Objekte sind optisch an der Einbuchtung auf der rechten Seite zu erkennen. In der rechten unteren Ecke des oberen Fensters in Abbildung 2 steht ein solches Message-Objekt. Es schickt dem globalen Objekt »Pd« die Nachricht, »dsp« auf »0« zu setzen, also die Audioverarbeitung zu stoppen. Der Wert »1« anstelle von »0« schaltet sie ein.