pure data

Some background:

helloworldEver wanted to make music with your computer but found the existing Digital Audio Workstations and apps either (a) not quite suited to your needs or (b) too expensive? Have you ever considered making your own music apps or generative music programs but don’t know how to code? Maybe you’ve heard about visual programming languages like Max/MSP but didn’t want to fall down that rabbit hole until you understood a bit more? Pure data might just be the software development platform you’ve been dreaming of. Read on…


What is pure data?

The following paragraph is taken from the pure data community website: puredata.info

“Pure Data (aka Pd) is an open source visual programming language that can run on anything from personal computers and Raspberry Pis to smartphones (via libpd, pddroidparty, and Rjdj). Pd enables musicians, visual artists, performers, researchers, and developers to create software graphically without writing lines of code. Pd is used to process and generate sound, video, 2D/3D graphics, and interface sensors, input devices, and MIDI. Pd can easily work over local and remote networks to integrate wearable technology, motor systems, lighting rigs, and other equipment. Pd is suitable for learning basic multimedia processing and visual programming methods as well as for realizing complex systems for large-scale projects.”

Couldn’t have said it better myself.

Pd vs Max/MSP

Pd is the open source cousin to Max/MSP developed by Miller Puckette. Think free stuff, think community/sharing, think world peace and synthesisers for the masses etc etc. The two platforms have much in common and share the same basic GUI approach to patching blocks of code (called “objects”) together. Pd looks like the “nuts and bolts” to Max’s “bells and whistles” and its humble GUI produces what might appear to be a flurry of deformed stick men when compared to Max’s (version 7) sleek Bauhaus-inspired palette. Using Pd as an entry point to the whole data-flow/visual programming paradigm however has some (less obvious) benefits other than it just being free.


That’s one ugly stick man.

Pd’s key benefits are arguably its (a) Spartan aesthetic and (b) lack of superfluous features resulting in a platform where it’s easy focus on getting where you want to, one step at a time: gradus ad parnassum. By comparison, Max can do so much more straight “out of the box” that it’s difficult to resist getting swayed from your programming goal (that is, if you can even formulate one at all in light of all goodies on display). Max has so many intriguing attributes, in-built tutorials, example patches and related learning curves that you may find you’ve wasted months (I’m not exaggerating…months) heading the Siren’s call of some exotic and extremely alluring – but needless – range of advanced feature combinations.

Whereas Max’s learning curve primarily relates to grappling with its myriad features, the time you spend with Pd’s is limited to developing a worthwhile goal and reaching it using your own methodically grouped combinations of simple elements. If you get stuck you can always borrow someone else’s solution. That’s good (creative commons) design. Admittedly, version 7 of Max features a radically updated user interface making it easier to filter out the noise of anything superfluous to the task at hand. It also adds powerful new time-saving features such as user patch templates, a thumb-nailed “snippet” library and optional 4-sided patcher toolbar. All big improvements on version 6. But when you consider that the core of Max has almost 300 basic objects without even considering the MSP (audio synthesis) and Jitter (visuals) components, you could be excused for feeling a little dizzy trying to get your head around it all as a new-comer.

Pd has relatively fewer objects (using a reference card is very useful at first), most are simple, with many identical to Max’s more fundamental types. But you do have to do much more mixing and matching to move ahead than with Max. The pay-off however, is that doing so increases one’s nuanced understanding of how each object functions. The challenge encountered, as you learn how to choose the right object and then use it, is not unlike solving a strange puzzle of your own design. Be warned, it is very very addictive.