Pure Data (Pd) is a
visual programming language
In computing, a visual programming language (visual programming system, VPL, or, VPS), also known as diagrammatic programming, graphical programming or block coding, is a programming language that lets users create computer program, programs by ...
developed by
Miller Puckette in the 1990s for creating interactive
computer music
Computer music is the application of computing technology in music composition, to help human composers create new music or to have computers independently create music, such as with algorithmic composition programs. It includes the theory and ...
and
multimedia
Multimedia is a form of communication that uses a combination of different content forms, such as Text (literary theory), writing, Sound, audio, images, animations, or video, into a single presentation. T ...
works. While Puckette is the main author of the program, Pd is an
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use and view the source code, design documents, or content of the product. The open source model is a decentrali ...
project with a large developer base working on new extensions. It is released under
BSD-3-Clause. It runs on
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
,
MacOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
,
iOS
Ios, Io or Nio (, ; ; locally Nios, Νιός) is a Greek island in the Cyclades group in the Aegean Sea. Ios is a hilly island with cliffs down to the sea on most sides. It is situated halfway between Naxos and Santorini. It is about long an ...
,
Android and
Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
. Ports exist for
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
and
IRIX
IRIX (, ) is a discontinued operating system developed by Silicon Graphics (SGI) to run on the company's proprietary MIPS architecture, MIPS workstations and servers. It is based on UNIX System V with Berkeley Software Distribution, BSD extensio ...
.
Pd is very similar in scope and design to Puckette's original
Max
Max or MAX may refer to:
Animals
* Max (American dog) (1983–2013), at one time purported to be the world's oldest living dog
* Max (British dog), the first pet dog to win the PDSA Order of Merit (animal equivalent of the OBE)
* Max (gorilla) ...
program, developed while he was at
IRCAM
IRCAM (French: ''Ircam, '', English: Institute for Research and Coordination in Acoustics/Music) is a French institute dedicated to the research of music and sound, especially in the fields of Avant-garde music, avant garde and Electroacoustic ...
, and is to some degree interoperable with Max/MSP, the commercial predecessor to the Max language. They may be collectively discussed as members of the Patcher family of languages.
With the addition of the
Graphics Environment for Multimedia (GEM) external, and externals designed to work with it (like
Pure Data Packet /
PiDiP for Linux, ),
framestein for Windows,
GridFlow (as n-dimensional matrix processing, for Linux, , Windows), it is possible to create and manipulate video,
OpenGL
OpenGL (Open Graphics Library) is a Language-independent specification, cross-language, cross-platform application programming interface (API) for rendering 2D computer graphics, 2D and 3D computer graphics, 3D vector graphics. The API is typic ...
graphics, images, etc., in realtime with extensive possibilities for interactivity with audio, external sensors, etc.
Pd is natively designed to enable live collaboration across networks or the Internet, allowing musicians connected via LAN or even in disparate parts of the globe to create music together in real time. Pd uses
FUDI as a networking protocol.
Similarities to Max
Pure Data and
Max
Max or MAX may refer to:
Animals
* Max (American dog) (1983–2013), at one time purported to be the world's oldest living dog
* Max (British dog), the first pet dog to win the PDSA Order of Merit (animal equivalent of the OBE)
* Max (gorilla) ...
are both examples of
dataflow programming
In computer programming, dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations, thus implementing dataflow principles and architecture. Dataflow programming languages share ...
languages. Dataflow languages model a program as a
directed graph of the data flowing between operations. In Pure Data and Max, functions or "objects" are linked or "patched" together in a graphical environment which models the flow of the control and audio. Unlike the original version of Max, however, Pd was always designed to do control-rate and audio processing on the host
central processing unit
A central processing unit (CPU), also called a central processor, main processor, or just processor, is the primary Processor (computing), processor in a given computer. Its electronic circuitry executes Instruction (computing), instructions ...
(CPU), rather than offloading the
sound synthesis
A synthesizer (also synthesiser or synth) is an electronic musical instrument that generates audio signals. Synthesizers typically create sounds by generating waveforms through methods including subtractive synthesis, additive synthesis an ...
and
signal processing
Signal processing is an electrical engineering subfield that focuses on analyzing, modifying and synthesizing ''signals'', such as audio signal processing, sound, image processing, images, Scalar potential, potential fields, Seismic tomograph ...
to a
digital signal processor
A digital signal processor (DSP) is a specialized microprocessor chip, with its architecture optimized for the operational needs of digital signal processing. DSPs are fabricated on metal–oxide–semiconductor (MOS) integrated circuit chips. ...
(DSP) board (such as the
Ariel
Ariel may refer to:
Film and television
*Ariel Award, a Mexican Academy of Film award
* ''Ariel'' (film), a 1988 Finnish film by Aki Kaurismäki
*, a Russian film directed by Yevgeni Kotov
* ''ARIEL Visual'' and ''ARIEL Deluxe'', a 1989 and 1991 ...
ISPW which was used for Max/FTS). Pd code forms the basis of
David Zicarelli's MSP extensions to the Max language to do software audio processing.
Like Max, 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 through a public
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
, and encourages developers to add their own control and audio routines in the
C programming language, or with the help of other externals, in
Python
Python may refer to:
Snakes
* Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia
** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia
* Python (mythology), a mythical serpent
Computing
* Python (prog ...
,
Scheme,
Lua,
Tcl
TCL or Tcl or TCLs may refer to:
Business
* TCL Technology, a Chinese consumer electronics and appliance company
** TCL Electronics, a subsidiary of TCL Technology
* Texas Collegiate League, a collegiate baseball league
* Trade Centre Limited ...
, 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.
Language features

Like Max, Pd is a dataflow programming language. As with most
DSP software
Software consists of computer programs that instruct the Execution (computing), execution of a computer. Software also includes design documents and specifications.
The history of software is closely tied to the development of digital comput ...
, there are two primary rates at which data is passed:
sample (audio) rate, usually at 44,100 samples per second, and control rate, at 1 block per 64 samples. Control messages and audio signals generally flow from the top of the screen to the bottom between "objects" connected via inlets and outlets.
Pd supports four 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 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
Mathematics is a field of study that discovers and organizes methods, Mathematical theory, theories and theorems that are developed and Mathematical proof, proved for the needs of empirical sciences and mathematics itself. There are many ar ...
,
logical
Logic is the study of correct reasoning. It includes both formal and informal logic. Formal logic is the study of deductively valid inferences or logical truths. It examines how conclusions follow from premises based on the structure of arg ...
, and
bitwise
In computer programming, a bitwise operation operates on a bit string, a bit array or a binary numeral (considered as a bit string) at the level of its individual bits. It is a fast and simple action, basic to the higher-level arithmetic operat ...
operators, found in many programming languages, to general and specialized audio-rate DSP functions (designated by a tilde (~) symbol), such as
wavetable oscillators, the
Fast Fourier transform
A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT). A Fourier transform converts a signal from its original domain (often time or space) to a representation in ...
(fft~), and a range of standard
filters
Filtration is a physical process that separates solid matter and fluid from a mixture.
Filter, filtering, filters or filtration may also refer to:
Science and technology
Computing
* Filter (higher-order function), in functional programming
* Fil ...
. Data can be loaded from file, read in from an audio board,
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
, via
Open Sound Control
Open Sound Control (OSC) is a protocol for networking sound synthesizers, computers, and other multimedia devices for purposes such as musical performance or show control. OSC's advantages include interoperability, accuracy, flexibility and en ...
(OSC) through a
FireWire
IEEE 1394 is an interface standard for a serial bus for high-speed communications and isochronous real-time data transfer. It was developed in the late 1980s and early 1990s by Apple in cooperation with a number of companies, primarily Sony a ...
,
USB
Universal Serial Bus (USB) is an industry standard, developed by USB Implementers Forum (USB-IF), for digital data transmission and power delivery between many types of electronics. It specifies the architecture, in particular the physical ...
, or network connection, or generated on the fly, and stored in tables, which can then be read back and used as audio signals or control data.
Data structures
One of the key innovations in Pd over its predecessors has been the introduction of graphical
data structure
In computer science, a data structure is a data organization and storage format that is usually chosen for Efficiency, efficient Data access, access to data. More precisely, a data structure is a collection of data values, the relationships amo ...
s. These can be used in a large variety of ways, from composing musical scores, sequencing events, to creating visuals to accompany Pd patches or even extending Pd's
GUI.
Living up to Pd's name, data structures enable Pd users to create arbitrarily complex static as well as dynamic or animated graphical representations of musical data. Much like
C structs, Pd's structs are composed of any combination of floats, symbols, and array data that can be used as parameters to describe the visual appearance of the data structure or, conversely, to control messages and audio signals in a Pd patch. In Puckette's words:
Language limitations
Though a powerful language, Pd has certain limitations in its implementation of object-oriented concepts. For example, it is very difficult to create massively parallel processes because instantiating and manipulating large lists of objects (spawning, etc.) is impossible due to a lack of a constructor function. Further, Pd arrays and other entities are susceptible to namespace collisions because passing the patch instance ID is an extra step and is sometimes difficult to accomplish.
Projects using 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
The Reactable is an electronic musical instrument with a tabletop tangible user interface that was developed within the Music Technology Group at the Universitat Pompeu Fabra in Barcelona, Spain by Sergi Jordà, Marcos Alonso, Martin Kalten ...
and the abandoned iPhone app
RjDj
RjDj (Reality Jockey Ltd.) was a startup founded in late 2008 by last.fm co-founder Michael Breidenbruecker. The company was based in London and was run by a small team of four employees. Its mission was to create sonic experiences specifically ...
both embed 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
Electronic Arts Inc. (EA) is an American video game company headquartered in Redwood City, California. Founded in May 1982 by former Apple Inc., Apple employee Trip Hawkins, the company was a pioneer of the early home computer game industry ...
(EA). It has also been embedded into EA
Spore
In biology, a spore is a unit of sexual reproduction, sexual (in fungi) or asexual reproduction that may be adapted for biological dispersal, dispersal and for survival, often for extended periods of time, in unfavourable conditions. Spores fo ...
.
Pd has also been used for networked performance, in the Networked Resources for Collaborative Improvisation (NRCI) Library.
Code examples
File:Pd-helloworld.svg, Patch 1: Hello world program
Hello is a salutation or greeting in the English language. It is first attested in writing from 1826.
Early uses
''Hello'', with that spelling, was used in publications in the U.S. as early as the 18 October 1826 edition of the '' Norwich Cou ...
in Pd.
File:Pd example 2.png, Patch 2: Reverberation in Pd.
File:Pd example 3.svg, Patch 3: Filters and data flow in Pd.
# The first patch prints "hello world" to the display.
# The second patch applies reverberation to the incoming signal from channel 1, then emits it on channels 1 and 2.
# The last, more complex patch filters white noise at 9000
Hz (with a Q of 20), then fades it in and out each second over the course of a half second. In Pd, time is measured in milliseconds, thus the '1000' is one second and the '500' is a half second.
See also
*
Graphics Environment for Multimedia
*
Max/MSP
Max, also known as Max/MSP/Jitter, is a visual programming language for music and multimedia developed and maintained by San Francisco-based software company Cycling '74. Over its more than thirty-year history, it has been used by composers, pe ...
*
reacTable
The Reactable is an electronic musical instrument with a tabletop tangible user interface that was developed within the Music Technology Group at the Universitat Pompeu Fabra in Barcelona, Spain by Sergi Jordà, Marcos Alonso, Martin Kalten ...
*
Puredyne
puredyne is a discontinued Live CD, live Linux distribution based on Ubuntu and Debian Live and dedicated to live audio-and-visual processing and streaming.
*
Comparison of audio synthesis environments
Software audio synthesis environments typically consist of an audio programming language (which may be graphical) and a user environment to design/run the language in. Although many of these environments are comparable in their abilities to pro ...
*
List of music software
This is a list of software for creating, performing, learning, analyzing, researching, broadcasting and editing music. This article only includes software, not services.
For streaming services such as iHeartRadio, Pandora (service), Pandora, Prime ...
Notes
References
* Danks, M. (1996). The graphics environment for max. In: Proceedings of the International Computer Music Conference, pp. 67–70. International Computer Music Association.
* Danks, M. (1997). Real-time image and video processing in Gem. In: Proceedings of the International Computer Music Conference, pp. 220–223. International Computer Music Association.
* Puckette, M. S. (1996
Pure Data Proceedings, International Computer Music Conference. San Francisco: International Computer Music Association, pp. 269–272.
* Puckette, M. S. (1997). Pure data. In: Proceedings of the International Computer Music Conference, pp. 224–227. International Computer Music Association.
Further reading
*
*
*
*
*
*
*
*
*
*
External links
*
{{Authority control
Audio programming languages
Electronic music software
Free audio software
Software synthesizers
Visual programming languages
Software using the BSD license
Free software programmed in C
Software that uses Tk (software)