Personal tools
You are here: Home documentation FAQ for Pd
Document Actions

FAQ for Pd

View entire FAQ in full Up to Table of Contents
Frequently Asked Questions regarding Pd (now with answers) If you have something to contribute to this page, log into and you will have edit access.


What is Pd?

Pd stands for Pure Data.

Pd is a real-time software system for live musical and multimedia performances. It is in active development by Miller Puckette, and perhaps others. The system is unfinished, but quite usable for sophisticated projects. It has been ported to GNU/Linux, MacOS X, IRIX, BSD, and many flavors of Windows.

What is

Pure Data Dot Info is a highly content-managed source of information for the Pd user community.

It is running on Plone It is run by a number of volunteers and hosted at IEM in Graz, Austria.

It was previously known as pure-data dot org, but that domain was grabbed from us by nasty people.

What do I need to run Pd?

Pd will compile and run on any machine capable of running GNU/Linux, MacOS X, IRIX, BSD or Windows. If you want to do simple MIDI processing, any old 486 will probably be sufficient. If you want to do real time audio synthesis or other fancy multimedia, you will need a big fast computer. The bigger and faster, the better.

To do MIDI and audio you will need appropriate MIDI and audio hardware, as well as the appropriate driver software for your operating system to utilize that hardware. Some Pd extensions may need or be enhanced by other special hardware. For example, the GEM library needs a good GL library and the 3D hardware to make it worthwhile. Since Pd is primarily for real-time performance, you will probably also be interested in using special input devices. Joysticks, 3D mice, and MIDI controllers of all kinds can make your Pd experience much more rewarding.

Be forewarned that Pd is still in development. To use Pd at this stage you will need some patience and a sense of adventure.

How do I get better quality audio out of my computer?

Be sure the Pd audio processing thread is treated specially by the Operating System. On GNU/Linux, do this by running pd with the -rt command line option.

If you are using Linux and the OSS driver, you might try adjusting the size and number of audio fragments Pd uses to talk to the driver. Do this with the -frags and -fragsize command line arguments.

If you are using Linux, you might also have a look at the Linux Audio Quality HOWTO.

But then, all the above does not help you to make the sounds "better". You will probably have to buy expansive hardware to get high-quality audio

Can I run Pd on GNU/Linux?

Yes. Pd works very well on any reasonably modern version of Linux. OSS and ALSA drivers are fully supported. For best results, patch your kernel for low latency operation.

More Info:

Where can i get get answers to all my questions?

If you use Pure Data you should definitely subscribe to the Pd mailing lists . If you post a question on the list, it will most likely be answered or at least discussed.

Otherwise the answer is 42.

How much does Pd cost?

Pd is free software. The specific license under which the Pd source code is released is similar to the BSD license. What this means is Pd is available free of charge. You are also free to modify and share the source code so long as you do not deny others these same freedoms.

Happily, you will find most (if not all) of the software associated with Pd is similarly liberated, mostly being released under the GNU GPL

That being said, developers need to eat, so anything that you contribute towards free software will make it better, and make things happen faster.

How can I lower latency?

and what is this 'latency' everybody keeps talking about?

Latency is a measure of how long it takes for a system to react. In Pd, we are primarily concerned with the time it takes for audio, MIDI, or other input to cause audio output. This is "audio latency".

For reference, the audio latency between your speakers and your ears is approximately 1 ms per foot. (for people outside the UK and US, this is approximately 30cm per ms)

So how can you lower it?

  • Under Windows, use the ASIO driver. You're out of luck otherwise.
  • Under Linux, with a recent version of the stable kernel (2.4.x), special low latency patches, some hard drive tuning, and ALSA drivers, average audio latencies is 1.5 ms. If you really load your system, a maximum audio latency of 3 ms can be reached. Pathological bad cases have been known to cause 8 ms latencies this seems like the upper bound. More information on low latency under Linux can be found at Benno's site on the subject.

TODO (tell the people that Pd has 3 blocks buffer, which gives you 4.5ms at least on 44.1kHz)

How do i compile a Pd-patch to run as a stand-alone application?

This is currently not possible to compile a patch into a binary program. Pd patch files are always plain text and need the Pd program to run.

However, the main reason why Max/MSP and similar allow you to create a standalone application is to distribute a patch without having to pay license fees to the distributor. Since Pure Data is Free Software, you can just distribute your patch along with the needed Pd binary.

On Mac OS X, Pd-extended 0.41.4 makes it easy to make such a distribution. You can make a standalone .app using the "Make app from" menu options in the File menu.

What are Pd's command line options?

Use pd -help to find out.

As of Pd version 0.46-1:

 audio configuration flags:
  -r <n>           -- specify sample rate
  -audioindev ...  -- audio in devices; e.g., "1,3" for first and third
  -audiooutdev ... -- audio out devices (same)
  -audiodev ...    -- specify input and output together
  -audioaddindev   -- add an audio input device by name
  -audioaddoutdev  -- add an audio output device by name
  -audioadddev     -- add an audio input and output device by name
  -inchannels ...  -- audio input channels (by device, like "2" or "16,8")
  -outchannels ... -- number of audio out channels (same)
  -channels ...    -- specify both input and output channels
  -audiobuf <n>    -- specify size of audio buffer in msec
  -blocksize <n>   -- specify audio I/O block size in sample frames
  -sleepgrain <n>  -- specify number of milliseconds to sleep when idle
  -nodac           -- suppress audio output
  -noadc           -- suppress audio input
  -noaudio         -- suppress audio input and output (-nosound is synonym) 
  -callback        -- use callbacks if possible
  -nocallback      -- use polling-mode (true by default)
  -listdev         -- list audio and MIDI devices
  -oss             -- use OSS audio API
  -alsa            -- use ALSA audio API
  -alsaadd <name>  -- add an ALSA device name to list
  -jack            -- use JACK audio API
  -pa              -- use Portaudio API

 MIDI configuration flags:
  -midiindev ...   -- midi in device list; e.g., "1,3" for first and third
  -midioutdev ...  -- midi out device list, same format
  -mididev ...     -- specify -midioutdev and -midiindev together
  -midiaddindev    -- add a MIDI input device by name
  -midiaddoutdev   -- add a MIDI output device by name
  -midiadddev      -- add a MIDI input and output device by name
  -nomidiin        -- suppress MIDI input
  -nomidiout       -- suppress MIDI output
  -nomidi          -- suppress MIDI input and output
  -ossmidi         -- use OSS midi API
  -alsamidi        -- use ALSA midi API

 other flags:
  -path <path>     -- add to file search path
  -nostdpath       -- don't search standard ("extra") directory
  -stdpath         -- search standard directory (true by default)
  -helppath <path> -- add to help file search path
  -open <file>     -- open file(s) on startup
  -lib <file>      -- load object library(s)
  -font-size <n>     -- specify default font size in points
  -font-face <name>  -- specify default font
  -font-weight <name>-- specify default font weight (normal or bold)
  -verbose         -- extra printout on startup and when searching for files
  -noverbose       -- no extra printout
  -version         -- don't run Pd; just print out which version it is 
  -d <n>           -- specify debug level
  -loadbang        -- do not suppress all loadbangs (true by default)
  -noloadbang      -- suppress all loadbangs
  -stderr          -- send printout to standard error instead of GUI
  -nostderr        -- send printout to GUI instead of standard error (true by default)
  -gui             -- start GUI (true by default)
  -nogui           -- suppress starting the GUI
  -guiport <n>     -- connect to pre-existing GUI over port <n>
  -guicmd "cmd..." -- start alternatve GUI program (e.g., remote via ssh)
  -send "msg..."   -- send a message at startup, after patches are loaded
  -prefs           -- load preferences on startup (true by default)
  -noprefs         -- suppress loading preferences on startup
  -rt or -realtime -- use real-time priority
  -nrt             -- don't use real-time priority
  -sleep           -- sleep when idle, don't spin (true by default)
  -nosleep         -- spin, don't sleep (may lower latency on multi-CPUs)
  -schedlib <file> -- plug in external scheduler
  -extraflags <s>  -- string argument to send schedlib
  -batch           -- run off-line as a batch process
  -nobatch         -- run interactively (true by default)
  -autopatch       -- enable auto-connecting new from selected objects (true by default)
  -noautopatch     -- defeat auto-patching new from selected objects
  -compatibility <f> -- set back-compatibility to version <f>

For more informations, check :

-guiport, -guicmd :

-d :

-verbose : increase log level by one, add as many as you need to reach the your log level, then switch log level in the UI to "4 all" to see them all and more by searching yourself :-)

What are the various Pd distros?


this is sources that Miller maintains. It includes a basic set of objects


This is Pd-core with some minor patches and "externals", docs, etc. from CVS


a fork with major changes, esp. to the gui

Windows doesn't use a .pdrc, what do I use on Windows?

For a Windows, .bat file is generally used in the place of a .pdrc. You use the same command line options as the .pdrc file, except you start the file with pd.exe and all of the options needs to be on that same line. Therefore the file will only be one line, though its often a very long line.


  "c:\pd\bin\pd.exe" -font 10 -path "c:\pd\doc\vasp" -lib cyclone -lib iem_t3_lib -lib iem_mp3 -lib mjLib -lib OSC -lib percolate -lib vasp -lib xeq -lib xsample -lib zexy -lib iemlib1 -lib iemlib2 -listdev %1 %2 %3 %4 %5 %6 %7 %8 %9

How can I store startup options so that they are loaded every time I start Pd?

You will find that there are several startup options that you will need every time you start pd. You can store these options via the pdsettings system, so that they are automatically used on startup (note: this has been introduced with pd 0.38)

note: as of pd-extended 0.43 saving library paths is not supported, the recommended way to include libraries is to use the import object(OBSOLETE)

The pdsettings can be configured via pd's menus.

Unfortunately these settings are spread over several different menus:

  • To change the audio-settings (settings for your audio- and MIDI-hardware) go to Media->Audio Settings... (resp. Media->MIDI Settings...) and change the values to something appropriate (if at all). (To save these changes for future sessions read on.)
  • To change the search-paths for pd, go to File->Path... and add additional search-paths one per line (or delete unwanted ones); here you can also specify, whether you want pd to be started in "verbose" mode. When you hit the Save all settings button, your modification will be stored to your system.
  • To change the libraries/externals that are loaded on startup, go to File->Startup... and add additional libraries/externals one per line (or delete unwanted ones); here you can also enforce that pd must not be started in realtime mode (there are some scenarios where using realtime-mode is not an entirely good idea); additionally you can specify custom startup-flags.

When you hit the Save all settings button, your modification will be stored to your system. The pdsettings are stored in a platform-dependent way as key/value-pairs.



On Windows the preferences are stored in the registry. For Pd-vanilla, they are in HKEY_LOCAL_MACHINE -> SOFTWARE -> Pd. For Pd-extended, they are in: HKEY_LOCAL_MACHINE -> SOFTWARE -> Pd-extended

Mac OS X

On Mac OS X the settings are stored via the native defaults system which stores things in plist files. (i.e. ~/Library/Preferences/org.puredata.pd.plist). You can edit them with the command line util defaults, like defaults read org.puredata.pd. For Pd-vanilla, they are stored in org.puredata.pd. For Pd-extended, they are stored in org.puredata.pdextended.

GNU/Linux, Debian, Ubuntu, Fedora, UNIX, ...

On other UNIX-like systems (like GNU/Linux), a hidden file in the home directory is used. For Pd-vanilla, the file is called ~/.pdsettings. For Pd-extended, the file is called ~/.pdextended

What is the difference between Pd, Max/MSP, and jMax?

Pd is ultimately a redesign of an earlier system that is still in commercial development: Max/MSP. In fact, the real time audio synthesis portions of MAX/MSP incubated in the Pd project. jMax then is a version of Max released as open source by IRCAM a while ago. It seems to be unmaintained, at least not a lot of people still use jMax. Pd and Max projects were masterminded by Miller Puckette and others at IRCAM in France.

If you know Max and want to get started with Pd, there is a Tutorial Pd for Max Users

What is the .pdrc file and how do I use it?

(deprecated, see: How can I store startup options so that they are loaded every time I start Pd )

With older versions of pd (pd<=0.37), the .pdrc file was the standard way of specifying startup options for Pd.

The new (platform-dependent) systems for storing startup-options is pdsettings.

In the .pdrc, you put all of the command line options that you want Pd to start with in the file. The format is one option per line, for as many lines as you need. Example:

 -r 48000
 -lib iem_mp3
 -lib iem_t3_lib
 -lib zexy
 -path /Users/hans/cvs/pure-data/externals/hcs/rawhid/
 -helppath /Users/hans/cvs/pure-data/externals/hcs/rawhid/

The .pdrc goes in your home directory, also known as ~. So a standard UNIX way of writing it would be ~/.pdrc.

For me on MacOS X, that would be equivalent to /Users/hans/.pdrc, on GNU/Linux it would be /home/hans/.pdrc.

Usually any file that starts with a "." like .pdrc will be hidden by default.

What platforms does Pd run on?

Pd has been successfully run on MacOS X, many flavors of GNU/Linux, Windows 9x, Windows 2000/XP, SGI IRIX, and FreeBSD.

Any UNIX-like OS should be able to run Pd as long as Tcl/Tk runs on that platform.
Pd will probably never run on MacOS 9 or earlier.

When I run Pd, the 'Network is unreachable' ?

If you see the error message "connecting stream socket: Network is unreachable" when you start Pd, it means your machine cannot make a network connection to itself.

You must configure your loopback network device.

In many Linux distributions, you can do this by answering "yes" when the system configuration tools ask if the machine will be "network" (even if it won't).

Where can I download Pd and related software?

There are many places Pd and related software can be obtained. Check the downloads section of this web site for a somewhat comprehensive list.

Where can I get Pd documentation?

The best documentation can only be viewed by running Pd. Click on the "Browser..." menu item on the "Help" menu when you run Pd, and you will get an interface for navigating through the included documentation.

You can browse the Pd documentation online on this site by going to the Documentation section.

You can also see Miller Puckette's manual on his site.

And for a Wikipedia-style collection of information, check out the Pdpedia

How is Pd spelled?

I'm confused: I've seen people write "Pd", "PD", "pd", "Pure Data", "pure data", "PureData" and then some. Is there an official way to spell Pd?

Short answer:

"Pd" and "Pure Data".

Longer answer:

On the mailing list or on your personal pages, feel free to use whatever you like best. Most of the time people will understand what you mean. That is, don't use something like "pD", which is not common at all.

But if you are writing about Pd in some kind of offical document, e.g. in a conference paper for ICMC, you may want to use the name, Pd's inventor, Miller Puckette uses consistently in all his publications on the topic: "Pd" and "Pure Data"

These publications include the very first appearance of Pd in: Puckette, M. 1996. Pure Data: another integrated computer music environment., all the other papers on Miller's site as well as his book Theory and Techniques of Electronic Music

What about GEM?

Where can I get answers for GEM related questions?

GEM has a seaparate FAQ that can be accessed via

What is Pd-extended?

Pd-extended has two main goals: provide a standard collection of libraries and distribute core modifications to Pd itself. Providing a package that includes many libraries no only means that they are easy to use. More importantly, it means that you can make a patch that uses those libraries, and expect them to be installed on any computer with the same version of Pd-extended.

In terms of modifications to the core, Pd-extended aims to feel like a native app on GNOME GNU/Linux, Mac OS X, and Windows. It also includes a number of community-added features like experimental string support and a visual design meant to improve readability.

How is Pd-extended different from Pure Data by Miller Puckette (aka Pd-vanilla)?

The core of Pd-extended has been modified to fit in better with the major desktop environments (GNOME, Mac OS X, and Windows). The look and feel has also been changed with the aim of making things more readable.

Is Pd-extended compatible with Pd-vanilla (by Miller Puckette)?

The aim is to keep it completely compatible with Pd-vanilla. That said, it is possible that incompatibilities will be introduced during the development process, these should be reported as bugs. Pd-vanilla is not always compatible with Pd-extended, though, since Pd-extended has some extra features with Pd-vanilla does not have.

Is Pd-Extended dead? What are the alternatives?

Yes, long time beloved Pd Extended is dead! :(

Pd‐extended started as a fork of Pd Vanilla, including some extra features and many included external libraries. It still works and you can still download and use it, but it's outdated, abandoned and there's no support! Therefore, it's not a good idea to keep relying on it. Luckily, there are alternatives.

Pd‐l2ork =>

‐ Pd-l2ork started as a Fork of Pd-Extended. It has all of what Extended used to have and more, but it’s only for Linux (Link to Pd-l2ork)

Purr Data =>

‐ This is actually "Pd‐l2ork 2.0" and for all platforms (mac, windows, linux). It is being ported to a new interface based in web technology. Though a first release is already available, it still needs to port a few more GUI objects to the new web format. Link to Purr Data

Pd Vanilla with external libraries installed

‐ You can just use Pd vanilla - the main version of Pure Data - and install the external libraries. Vanilla is a little different than Pd‐ extended, but aside from cosmetic differences, you can do everything you could with Pd‐extended if you install the proper libraries.

The major difference between Pd Vanilla and Pd‐extended is that Pd‐Extended came with several libraries already installed, and it automatically loaded many of them. If you need a guide on how to install libraries in Pd Vanilla (with 'deken'), please check <>.

Note that the libraries that were available in Pd extended 0.43 are availkable in 'deken' as “v00-extended”

by Frank Barknecht last modified 2009-05-18 09:44 PM

Powered by IEM Powered by Plone Section 508 WCAG Valid XHTML Valid CSS Usable in any browser