Pure Data Overview

Pure Data (Pd) is a visual programming language developed by Miller Puckette, the same person responsible for Max/MSP, in the 1990s for creating interactive computer music and multimedia works. While Puckette is the main author of the program, Pd is an open source project with a large developer base working on new extensions.

With the addition of the Graphics Environment for Multimedia (GEM) external, and externals designed to work with it, it is possible to create and manipulate video, graphics, images, etc., in realtime with extensive possibilities for interactivity with audio, external sensors, etc.

Pd has a modular code base of externals or objects which are used as building blocks for programs written in the software. This makes the program arbitrarily extensible and encourages developers to add their own control and audio routines, in the programming languages C and many others. However, Pd is also a programming language. Modular, reusable units of code written natively in Pd, called "patches" or "abstractions", are used as standalone programs and freely shared among the Pd user community, and no other programming skill is required to use Pd effectively.

Pd supports 4 basic types of text entities: messages, objects, atoms, and comments. Atoms are the most basic unit of data in Pd, and they consist of either a float, a symbol, or a pointer to a data structure (in Pd, all numbers are stored as 32-bit floats). Messages are composed of one or more atoms and provide instructions to objects. A special type of message with null content is called a bang is used to initiate events and push data into flow, much like pushing a button.

Pd's native objects range from the basic mathematical, logical  and bitwise operators found in every programming language to general and specialized audio-rate DSP functions (designated by a tilde (~) symbol), such as wavetable oscillators, the Fast Fourier Transform (fft~), and a range of standard filters. Data can be loaded from file, read in from an audio board, MIDI, via Open Sound Control (OSC) through a Firewire, USB, or network connection, or generated on the fly.


Projects Utilizing Pure Data

Pure Data has been used as the basis of a number of projects, as a prototyping language and a sound engine. The table interface called the Reactable embeds Pd as a sound engine.

Pd has been used for prototyping audio for video games by a number of audio designers. For example, EAPd is the internal version of Pd that is used at Electronic Arts (EA). It has also been embedded into EA Spore