Technology keeps asking us to speed up. Pd is happy to let you slow down: tinker, patch, make mistakes, obsess over a number or signal routing, and do it all visually. The free and open source software is getting a nice 0.57 update with new features, relevant to Pd and tools like libpd and plugdata that are based on it.

Despite being cousins and sharing a lot of objects and even code, using Pd feels different than using Max, and I have to say I still deeply appreciate Pd — cost aside. (Max isn’t free.)

Pd 0.57 is in test builds now, but it’s an indication of what’s coming soon. Even if many of the tiny developer details don’t impact you, expect some new objects for signal information, lists, and more, and an improved user experience — plus the ability to use all the stuff others are building on this framework.

  • [siginfo~] object to query sample rate, number of channels, and other signal info.
  • New [snake~ pick], [snake~ split], and [snake~ sum] objects.
  • New [list foreach] [list join] and [list unjoin] (mmm!)
  • Reworked zoom, courtesy Antoine Rousseau (testing this on macOS Tahoe, and while you’ll still want plugdata for the prettified version of Pd, this works really nicely in vanilla!)
  • [receive] with variable symbols
  • logical binary operations: ==~, ||~, etc.
  • Configurable keyboard shortcuts, contributed by Iohannes.
  • Button to rescan MIDI device list – via Ben.

About those “snake” objects. Think audio — like a cable snake! Combine (in), split into mono (out), sum to mono, pick specific channels, or split at channel input.

Pd patch running in a Mac window, help files for pd pick. Text explanation:

[snake~ pick] combines
specific channels of a multichannel signal into a
new multichannel signal. A list of channels is given as arguments, via the
"channels" message or the right input. If no list of channels is given, it forwards the original input. Changing the channel list updates the DSP graph.

And more; from the release notes:

  • [receive] can (at last!) be set to receive from a variable symbol – thanks to Christof and Alexandre
  • Many new features added to [pointer], [struct], [drawnumber], etc., objects.
  • IEMGUI number boxes can highlight their image when activated
  • [clone] object can dynamically allocate copies at run time.
  • Cut/Copy/Paste for patch fragments now work across apps.
  • [oscparse] object allows non-standard but widely used “double” type. [for Open Sound Control]
  • The [float] object now can parse integers out of symbols such as “preset45.txt”.
  • MacOs “App ID” and “preferences” storage now under info.puredata to agree with website URL.
  • Incremental improvements to experimental GTK3 front end.
  • Classes now have a user slot, “c_data” for storing per-class data.
  • Updates to “find externals” feature – thanks Iohannes.
  • Much work by Iohannes on the translation infrastructure, and as always, documentation by Alexandre.

As always, the place to grab the “vanilla” releases — the canonical versions of Pd, with no external libraries — is from creator Miller Puckette’s own site. That includes both this test build (which I’m enjoying, while I bike with a pair of scissors in my hand and no helmet), and the stable 0.56-5 release:

https://msp.ucsd.edu/software.html

Oh, and one more thing: ‘{‘ and ‘}’ characters are no longer dropped. in 0.57.

That’s a big deal according to superstar community dev Alexandre Torres Porres, who’s making use of this feature in his essential ELSE library. He explains via Facebook:

JSON-style dictionary object in Pd anyone? Pure Data 0.57 is coming soona and it’ll finally support typing “{}” into patches, such as inside message boxes. So I will try to include this object as soon as it’s out!

I already have 12 objects that handle nested lists in a similar way (check a recent post). The idea now is to have a dictionary like family of object to handle and manipulate dictionaries, and yes, it’ll handle nested dictionaries of course…

By the way, ELSE also has a [messcoll] object which is a simplified dictionary in the style of MAX’s (and cyclone’s) [coll] object, lots of valuable additions!

I mentioned plugdata — one easy way to get ELSE installed is to use that. You can also check ELSE directly:

https://github.com/porres/pd-else

And you can support Alexandre on his Patreon for just $3/mo.

Alexandre Torres Porres

He’s even posted a couple of cool stories this year (available without a paywall):

New Microtonal Sequencer Module for MERDA (ah, remember April, when we were all hyping Angine de Poitrine? how we’ve uh… aged since then… sheesh…)

VCV-PureData, a VCV Racks Module that runs Pd externals (yo, DAWG)

Enjoy, patchers!

So now that it’s fall, who’s up for a fresh course on Pd patching? Let me know.