Photo credit: Windell H. Oskay, www.evilmadscientist.com bridell.com
on creative engineering and new media art

Pure Data (Pd)

December 3rd, 2008
Example Pure Data patch

Example Pure Data patch

Pd (aka Pure Data) is a real-time graphical programming environment for audio, video, and graphical processing. You can download Pd for free from puredata.info. You can also find some tutorials and other info to get you started. Pd is available for Mac OS X, Windows and Linux.

Pd is one of those graphical programming environments where you make little boxes that you connect with lines – similar to Max/MSP, but Pd is free, and more focused on audio. Personally I tend to find these graphical programming environments rather hard to work with. The curious thing about them is that it is usually just a simple to do something complex as to do something (seemingly) simple – for example, in PD, it is just as simple to mix two audio signals as it is to add two integers. And how hard is it? Well, if you need to add two integers, any regular programming language is easier to use. But if you need to mix two channels of audio – or do any other kind of audio processing – Pd is really worth checking out.

If you’re wondering what the patch (Pd programs are referred to as “patches”) above does, here’s what: The “metro” is a metronome that sends a “bang” (that activates whatever comes next) every 1000 ms. The delay box delays its signal with 300 ms. The boxes with two numbers each (127 250, 0 250) are message boxes that send their messages to the “line” object, which delivers a “ramp” – a linear interpolation. That part taken together generates a signal that will rise every second. Below this the signal is scaled down by 127 before it hits the mysterious *~ box. As you might guess, * means multiply. Less obvious is the tilde, which indicates we’re multiplying signals, not numbers. Multiplying the signal like this means to change the volume. The signal is the signal that comes from the dac~ box, which is a digital-to-analog conversion box – meaning it picks up the microphone. It goes to the dac~ box, which means it gets sent to the speakers.

So… what does it do, exactly? Well, I used a more complex version of this in an exhibition were a microphone with an extra amplifier picked up ambient sounds from the exhibition room, and then played the sounds back to a speaker in the ceiling. Instead of just a simple pulse like in this patch it made “heartbeat” sounds, using the sounds from the room itself. (And yes, it had to be tweaked so it wouldn’t create a feedback loop). Instead of the metro is used a signal coming from an Arduino board to synchronize the sound with a sculpture of a beating heart in a glass jar, which I already wrote about here.