[Pd~] graphical dsp programming

(page under construction)

Pure Data is a graphical programming environment for real-time audio and image processing. Created by Miller Puckette, it has become an open source community project. Involvement with Pd can happen at any level: check the tutorials and learn how digital synthesis works, work out a dsp application of your own invention, or develop new Pd objects in C code.

Although Pure Data is aimed at artists without programming background, it is a programmable calculator for signals, rather than a readymade music software. Pd is easy to handle, once you get the concept. It is just that the first steps into Pd are like a steep staircase. Documentation is abundant, but it is spreaded all over the internet, as is usual with open source projects.

Pure Data's main portal is http://puredata.info. Executables for Windows, OS X and Linuxes can be downloaded from there. There is a choice between Miller Puckette's Vanilla Pd, and Pd-extended which is Vanilla plus contributions of other developers. The comprehensive Pure Data FLOSS manual is at http://en.flossmanuals.net/PureData. It includes an indispensable overview of Pd objects.

If you open Pure Data for the first time in your life, and wonder about 'now what?', read this compactest Pd crash-course ever:


Unless you start up Pd by doubleclicking an existing Pd patch, the 'post window' is your first encounter with Pure Data. Here are messages from to program to you. At start up, it tells about files that loaded. It can also tell about things that go wrong. This is not a window where you can type, or put objects. It is not a 'patch'.

However, it will let you turn on audio computation, one of those essential things if you want to hear sound from Pd.


The quickest way to see patches and understand Pd is:

- open the help browser from the help menu

- select an entry from the audio example patches

A01.sinewave.pd gives a first impression of how Pd works.

Pd's html manual is also available from the help browser, doubleclick 1.manual/index.htm. This is not the forementioned FLOSS manual.


If you want to create your own patch, open a new file from the file menu. The new file is a blank patch. Very probably, this blank patch opened in edit mode. From the 'put' menu, try to select objects, messages, and other items that will populate your patch. In run mode, you can not put items on the patch. Toggle between these modes with ctr-E, or cmd-E for OS X.


Object boxes and message boxes are the most frequently used items in a patch. They have different shapes: the message box looks like a flag, whereas the object box is a plain rectangle. A message box can tell an object box what to do. For example: tell an oscillator what frequency it must produce. To send the message, just click the message box while you are in run mode.

A Pure Data patch can be as small or big as you want to make it. A single patch can already produce or process a signal. Patches can be connected to each other, or nested, and together form a full-fledged program if you want.


This is also Pd. The 'graph on parent' (GOP) mechanism allows for patch cords and objects to be hidden in subpatches, while user interface elements are shown on the top level patch.

With the graph on parent feature, Pure Data creations can have an effective GUI and a pretty look.

In Pd's active community, there is a lot of advanced stuff shared. Go to http://puredata.info/community/patches to find some. http://puredata.hurleur.com is a forum with a patches entry. You have to create an account, and login before you can download patches from there.

However advanced a patch may be, it's operation depends on Pure Data being installed on your computer. Most shared patches will not work with Vanilla Pd, because they use one or more objects from Pd-extended. Even with Pd-extended installed, a patch may not (immediately) work for several reasons. A path is not found, an object could not be created, connections could not be made, stack overflow... the Pd window will tell you. Or you simply can not find the 'play' button. With patience and knowledge, all these things can be solved, but for Pd novices it can be discouraging. Below is a collection of links to inspiring patches which worked out of the box for me, on OSX with Pd-extended.

Tom (www.nullpointer.co.uk >> Pure Data Patches) published this pulse-grain-generator, an educative patch with surprising effect, based on work of electronic music guru Curtis Roads.


Martin Brinkman (www.martin-brinkmann.de) published intricate patches with feedback mechanisms, producing really exciting sounds. My favourite is chaosmonster1, and next cells1, fbfm1, grainstates1. Pd's post window may complain about missing [<~] objects if you are on a Unix system, but for these patches it happens to do no harm.


This compact emulation of a vintage drumbox is from diplipito, and you can find it on http://puredata.hurleur.com/sujet-3034-vintage-drum-machine. Remember you must log in to see and download the patch.


Toxonic shows how to handle that heavy knife of the chinese kitchen and cook a good chop suey of your drum loops. You can find his tool on http://www.toxonic.de (as a text). A slightly different version with the same number (3.2) is at http://puredata.hurleur.com/viewtopic.php?pid=15660 (not forget to log in). In that version, settings at load directly give an impression of the potential, while the other one has all settings neutral. When loading a soundfile in Chop_Suey, Pd's post window may give a stack overflow warning, but actually things are under control.


Here is Merijn's Pure Data hyperlist:















^top  <<home