home changes contents help options

Pure Data Dot Org FAQ (Frequently Asked Questions) ==================================================

This is the OLD FAQ from the old pure-data.org. In many places it is obsolete.

Category: Main -> General

Question What is Pd? What is Pure Data Dot Org? What do I need to run Pd? Where can I download Pd and related software? How much does Pd cost? Where can I get Pd documentation? Can I run Pd on a Mac? Can I run Pd on Windows? Can I run Pd on Linux? Can I use Pd to run patches written in Max/MSP? Can I use Pd to run Max/MSP externals? Can I use Pd with plugins? What is the difference between Pd, MAX/MSP, and jMax? Where can I find a list of all the native objects in pd? Where can i get get answers to all my questions? How do I un/subscribe from the mailing list?

Answer

"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 useable for sophisticated projects. It has been ported to Linux, IRIX, and many flavors of Windows.

Pure Data Dot Org is a "highly content-managed" source of information for the Pd user community. It is run solely by the efforts of jfm3 and his extra thin walet, so be gentle.

Pd will compile and run on any machine capable of running Linux, IRIX, or Windows NT. 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. You might also need to be comfortable compiling and debugging software written for C and UNIX.

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

Pd is Open Source 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.

You can browse the Pd documentation online at on Miller Puckette's site. However, the best documentation can only be viewed by running Pd. Click on the "Pure Documentation" menu item on the "Help" menu when you run Pd.

Pd has not been ported to MacOS?. Pd will, however, compile and run on a PowerPC? Mac running Linux.

Yes. Pd runs on any win32 platform, including Windows NT, Windows 2000, Windows 98, Windows 95, and Windows ME. ASIO drivers are supported.

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.

The short answer is no. If you have the guts, you can try it. Save the Max patch as a .pat file. Rename it to end in .pd, then try to load it into Pd. In this way we got the metro help page from Max to run in Pd. Although the syntax of the .pd and .pat files is extremely similar, Pd is missing a lot of objects (in Max "externals") that come with Max.

Max/MSP externals run only on Macs running Max/MSP. However, if you have the source code, it is notoriously easy to port a Max/MSP external into a Pd object.

Yes. Pd works well with LADSPA and VST plugins (not DirectX? plugins, however). You'll need to download and install a separate plugin~ object. Also, it is impossible to use Pd as a plugin itself, at this time.

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. Pd also has a younger, prettier sister: jMax. All of these projects were masterminded by Miller Puckette and others at IRCAM in France.

There is an abstract for a paper describing the differences available on the the web.

There is such a list at http://www.lomechanik.net/pd/pd-objects.html

but you might also check /doc/5.reference/0.INTRO.txt in the documentation that comes with pd.

While you are there, get the directory listing of the /doc/5.reference/ folder and look for objects not already mentioned in 0.INTRO.txt

If you use pure data you should definitely subscribe to the PD mailing list hosted at http://iem.kug.ac.at/mailinglists/pd-list/ . If you post a question on the list, it will most likely be answered or at least discussed.

See http://www.iem.at/mailinglists/pd-list.

--------------------------------------

Category: Main -> Troubleshooting

Question How do I get more accurate timing from metro? When I run Pd, the "Network is unreachable"?

Answer * How do I get more accurate timing from metro?

If you run pd -nosound, you will find that the timer error becomes much less, but of course then Pd will not generate audio. There is a discussion on lowering latency in the release notes for version 0.33 that may be helpful. Try reducing the block size, the sleep grain, or try running in stream mode.

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).

Category: Main -> How To

Question How do I make a local variable? How do I make a local array? How do I accumulate (or sum) audio outlets of several modules without so many connections? How do I write my own Pd externals (or "objects")? How do I get better quality audio out of my computer? How can I lower latency? How do I record and playback from hard disk? Can I send data to Pd from other aplication using MIDI? or is it only possible with OSC? * How do i compile a PD-patch to run as a stand-alone application?

Answer * How do I make a local variable?

All variable names in Pd are global. There is only one name space for all patches.

One way to hack around this is to use $0 in variable names. For example, "$0-foo". $0 expands to a unique value for each subpatch and abstraction. If you need to share a variable name between two subpatches, but no others, you could pass a "group identifier" into each of those subpatches, and then use $n in variable names where n is the argument number of the group identifier. For example, "$1-foo". Variable names with $n in them work well with send and receive, but it is difficult (if not impossible) to get them into qlists. This solution is discussed in the documentation.

Use the table object to create arrays with names that begin with $0.

Use throw~ and catch~. See the help patches for those objects.

There is some documentation for writing new Pd objects in a paper by Theo Stojanov. Also, the API for Max/MSP and Pd is almost identical, so if you find documentation on writing MSP externals, it may be of use.

The usual GNU development environment can be used for writing new Pd objects on Linux or IRIX systems. It is unclear which is the preferred commercial developement environment for win32 systems. Some success has been reported using cygwin.

Be sure the Pd audio processing thread is treated specially by the Operating System. 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 <n> and -fragsize <n> command line arguments.

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

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.

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.

The sfwrite~ object in the zexy library works quite well for this.

Yes, you can send MIDI from another application to Pd. The actual method for doing this varies from platform to platform. On win32 platforms, you will need a special "loopback" program. On Linux platforms, you need to use the ALSA virmidi drivers and configure them correctly.

You are also not restricted to OSC in that you can use netsend and netreceive to move data between other applications and Pd, or multiple sessions of Pd on different nodes of a LAN.

This is currently not possible. PD patch files are always clear text and need the PD program to run.