Katana VentraIP

Pure Data

Pure Data (Pd) is a visual programming language developed by Miller Puckette 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. It is released under BSD-3-Clause. It runs on Linux, MacOS, iOS, Android and Windows. Ports exist for FreeBSD and IRIX.

This article is about programming language. For storage server, see IBM PureData.

Pd is very similar in scope and design to Puckette's original Max program, developed while he was at IRCAM, 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[2] 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, Mac OS X), framestein for Windows, GridFlow (as n-dimensional matrix processing, for Linux, Mac OS X, Windows), it is possible to create and manipulate video, OpenGL 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[edit]

Pure Data and Max are both examples of dataflow programming 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 (CPU), rather than offloading the sound synthesis and signal processing to a digital signal processor (DSP) board (such as the Ariel 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.[3]


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, 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, Scheme, Lua, Tcl, 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 limitations[edit]

Though a powerful language, Pd has certain limitations in its implementation of object-oriented concepts.[5] 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[edit]

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[6] and the abandoned iPhone app RjDj 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 (EA). It has also been embedded into EA Spore.[7]


Pd has also been used for networked performance, in the Networked Resources for Collaborative Improvisation (NRCI) Library.[8]

Pure Data visual code sample patches

Patch 1: Hello world program in Pd.

Patch 1: Hello world program in Pd.

Patch 2: Reverberation in Pd.

Patch 2: Reverberation in Pd.

Patch 3: Filters and data flow in Pd.

Patch 3: Filters and data flow in Pd.

Graphics Environment for Multimedia

Max/MSP

reacTable

Puredyne

Comparison of audio synthesis environments

List of music software

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) . Proceedings, International Computer Music Conference. San Francisco: International Computer Music Association, pp. 269–272.

Pure Data

Puckette, M. S. (1997). Pure data. In: Proceedings of the International Computer Music Conference, pp. 224–227. International Computer Music Association.

(2007). The Theory and Technique of Electronic Music. World Scientific, Singapore. ISBN 978-981-270-541-9.

Puckette, Miller Smith

Kreidler, Johannes (2009). Loadbang: Programming Electronic Music in Pure Data. Wolke Verlag, . ISBN 978-3-936000-57-3.

Hofheim

Pd~graz, ed. (2006). bang Pure Data. Wolke Verlag, . ISBN 978-3-936000-37-5.

Hofheim

Farnell, Andy J (2010). Designing Sound. . ISBN 978-0-262-01441-0.

The MIT Press

Brinkmann, Peter (2012). Making Musical Apps – Real-time audio synthesis on Android and iOS. . ISBN 978-1-4493-1490-3.

O'Reilly Media

(2012). Composition: Pure Data as a Meta-Compositional Instrument. ISBN 3-8383-1647-9.

Barkl, Michael

(2018). Pure Data as a Meta-Compositional Instrument: Compositions Volume 1. ISBN 978-3-659-88634-8.

Barkl, Michael

(2018). Pure Data as a Meta-Compositional Instrument: Compositions Volume 2. ISBN 978-3-659-96899-0.

Barkl, Michael

Matsumura, Sei (2012). Pd Recipe Book ―Pure Dataではじめるサウンドプログラミング.  978-4-86100-780-4.

ISBN

Habibdoost, Mansoor (2013). .

Pd Elementary Method (in Farsi) - PDF and patches (مبانی بنیادین نرم افزار پی دی نوشته منصور حبیب دوست)

Edit this at Wikidata

Official website