Ein Programm in Pure Data

Pure Data (Abkürzung: Pd) ist eine datenstromorientierte Programmiersprache und Entwicklungsumgebung, die visuelle Programmierung benutzt. Sie wird vor allem zur Erstellung von interaktiver Multimedia-Software eingesetzt, etwa für Software-Synthesizer in der elektronischen Musik.

Programmstruktur

Bearbeiten

Ein Programm wird in Pd als Patch bezeichnet und besteht aus Objekten und den Datenströmen zwischen ihnen. Die Patches werden in einer graphischen Benutzeroberfläche erstellt und sehen Datenflussdiagrammen sehr ähnlich.

Objekte

Bearbeiten

Beim Anlegen eines Patches greift man auf die in Pd vorhandenen und vordefinierten Objekttypen zurück. Das geschieht, indem man ein neues Objekt erstellt und diesem den entsprechenden Namen gibt. Grundsätzlich lassen sich die Objekttypen in drei Gruppen einteilen:

Quellen
wie etwa Mikrofon, Kamera, Netzwerk, Sinus-Generator
Knoten
manipulieren Datenströme, beispielsweise durch Invertieren; Addition von mehreren Datenströmen oder andere mathematische Operationen wie z. B. Verzerrung durch Wurzelziehen der Lautstärkewerte
Senken
das sind Ausgabegeräte wie Lautsprecher und Bildschirm

Datenstrom

Bearbeiten

Die Ein- und Ausgänge der Objekte werden mit der Maus durch gezeichnete Linien verbunden, die den Weg angeben, den der Datenstrom geht.

Messages

Bearbeiten

Messages sind Botschaften die an ein Pure-Data-Objekt gesendet werden, um eine Änderung der Arbeitsweise des Objektes zu bewirken. Die Message count down, an ein Zähler-Objekt gesendet, könnte dieses vom Aufwärtszählen zum Abwärtszählen veranlassen.

Abstraktionen

Bearbeiten

Es gibt in Pd die Möglichkeit, einen ganzen Patch als Objekt innerhalb eines anderen Patches zu verwenden: Jede Patch-Datei, die Pd in seinem Suchpfad auffinden kann, ist automatisch auch als Objekt verfügbar. Im Pd-Jargon heißen solche Patches auch Abstraktionen („abstractions“). Sie entsprechen grob den Funktionen in textbasierten Sprachen wie C oder Python und können wie diese durch die Übergabe von Argumenten unterschiedlich initialisiert werden. Änderungen an der originalen Abstraktions-Datei werden automatisch an alle Vorkommen des Objekts weitergegeben.

Subpatches

Bearbeiten

Im Unterschied zu Abstraktionen werden Subpatches als Teil ihres Elternpatches gespeichert. Subpatches dienen im Allgemeinen dazu, die Objekte eines Patches sinnvoll zu gruppieren und den begrenzten Bildschirmplatz effektiv zu nutzen. Subpatches können außerdem durch Nachrichten modifiziert werden und spielen eine wichtige Rolle bei der Arbeit mit „Data Structures“ in Pd.

Array

Bearbeiten

Die Daten in einem Array werden als Graph dargestellt, können durch das Verändern des Graphen manipuliert werden und durch andere Objekte ausgelesen werden.

Verarbeitung von Audiosignalen

Bearbeiten

Die meisten Operationen sind nicht nur auf einem Strom von Zahlen, sondern auch auf Audiosignalen möglich. Deren Verarbeitung erfolgt innerhalb von Pure Data in (üblicherweise 32 bit breiter) Gleitkomma-Darstellung, die verwendete Abtastrate ist frei wählbar, der Defaultwert ist 44.100 Hz. Wie bei Max/MSP tragen die Objekte für Audiosignale per Übereinkunft den gleichen Namen wie für Operationen auf Zahlen, nur mit einer angehängten Tilde ~.

Geschichte

Bearbeiten

Pure Data wurde in den 1990ern von Miller Puckette entwickelt, um damit interaktive Computermusik zu erzeugen. In seinem Umfang und seinen Zielen ist Pure Data dem ursprünglichen Max sehr ähnlich, das ebenfalls von Puckette entwickelt wurde und der Vorgänger des kommerziellen MSP ist. Im Gegensatz zu Max/MSP handelt es sich bei Pd um freie/Open-Source-Software. Pd besitzt eine aktive Entwickler-Community. Diese traf sich im Herbst 2004 zur ersten internationalen pd~convention in Graz, auf der Workshops, Performances und Vorträgen für Entwickler und Anwender angeboten wurden. Weitere Conventions fanden 2007 in Montreal, 2009 in São Paulo und 2011 in Weimar/Berlin statt.

Erweiterungen

Bearbeiten

Das Standard-Paket von Pd enthält nur die notwendigen Objekte für das Bearbeiten von seriellen Zahlenströmen (z. B. MIDI-Daten) und Audiosignalen, es gibt jedoch zahlreiche Erweiterungen (Plug-ins, Bibliotheken), z. B. für Videodaten (PDP (Pure Data Packet), PiDiP (PiDiP Is Definitely In Pieces)), Grafikdaten (Gem (Graphics Environment for Multimedia)) etc.

Erweiterungen können sowohl in Pd selbst als auch in einer allgemeinen höheren Programmiersprache wie z. B. C, C++, Python, Ruby geschrieben sein. Die für Echtzeitverarbeitung von Audiosignalen entwickelte Programmiersprache Faust bietet neben anderen Plug-in-Formaten auch das Erstellen von Pd-Erweiterungen an.

Grafikbibliotheken für Pd

Bearbeiten

Anwendungsgebiete

Bearbeiten

Pure Data findet zurzeit vielfache Anwendung in Kunst, Wissenschaft und Lehre, vor allem für interaktive Multimedia-Projekte. Die Möglichkeit, über ein Netzwerk verteilt zu arbeiten und zu interagieren, ist häufig für Künstler interessant.

Literatur

Bearbeiten
Bearbeiten
Commons: Pure Data – Sammlung von Bildern, Videos und Audiodateien

📚 Artikel Terkait di Wikipedia

Bloomfilter

enthalten, was er abweist. Ein Bloomfilter besteht aus einem m-stelligen Bit-Array (welches zu Beginn mit Nullen gefüllt ist) und aus k unterschiedlichen Hashfunktionen

Datenstruktur

enthaltenen Elemente, oft Datenfeld genannt. → Hauptartikel: Array (Datentyp) Das Array (auch Feld) ist die einfachste verwendete Datenstruktur. Es werden

NumPy

Stéfan van der Walt, S. Chris Colbert und Gaël Varoquaux: The NumPy array: a structure for efficient numerical computation. In: Computing in Science and

B-Baum

1972, S. 173–189. R. Bayer, E. McCreight: Symmetric binary B-Trees: data structure and maintenance algorithms. In: Acta Informatica, Band 1, 1972, S. 290–306

Trie

Dictionary of Algorithms and Data Structures: Trie (englisch) Lloyd Allison: Tries (englisch) An Implementation of Double-Array Trie (englisch) Paul E. Black:

Bucketsort

{\displaystyle k} „Buckets“, die in einem Array angeordnet sind. Die Verteilung der Elemente geschieht über dieses Array, indem jedes Element e {\displaystyle

Union-Find-Struktur

compression. In: algorithms.tutorialhorizon.com (englisch) Disjoint-set data structure (Memento des Originals vom 2. Dezember 2016 im Internet Archive)  Info:

Fractional Cascading

jeweils höchstdimensionale assoziierte Baum nicht als Baum, sondern als Array gespeichert. Von jedem Element des Arrays gehen Verweise auf gleich große