Puredata! (thread)


lol. My comment was tongue firmly in cheek :slight_smile:

I guess my main point is that PD wasn’t originally built with this type of use in mind, so it’s not a surprise that the tools aren’t built into the base system. PD (and Max) is amazing at creating structures and generative systems that react to, and process, input, be that audio, midi, OSC, CV, etc… IMO, you’re using it the intended way by combining it with some external type of control or signal.

Using externals and libraries you can totally make it better for pattern/time manipulation, but it’s not at the core.

Like you said, use it for whatever you like, and if you hit a limitation try to work through it or combine with other tools. I wasn’t trying to suggest that this feature gap isn’t real or that you shouldn’t want it… just that it isn’t part of the original design, there’s a reason it isn’t there.


dammit Emacs

One of the best reasons to use Clojure / Overtone is the live emacs coding environment. :neckbeard:


ok, i have a real question for PD users, not a rant

i’m on an arch linux system, and this particular machine has been running pd vanilla for a while. (this is handily included in the arch community packages, and is now on version 0.47.1) packaged version seems identical to the pd-git AUR version.

i recently tried to open some patch (helmholtz~ example) and found many missing objects like output~, delay~, envrms, pddplink and so on.

this looks like pd-extended stuff. but i’m informed that pd-extended is abandoned. but this stuff hasn’t been included in vanilla. so…

i see that the l2ork folks are maintaining an arch repo now. it offers many things like “Purr Data” as well as pd-l2ork and variants for faust and whatnot.

and ok, i have just learned about Deken, and it is included in this pd-vanilla version, but ‘find externals’ doesn’t find most of the things (it seems like the database is a little sparsely populated?)

so… what exactly do people do these days to get a “fuller” PD install? any opinions on “Purr Data”?


I’d love to use Xodular and Ecosysem in Vanilla (currently they really are of use in PD- Extended), and it says the only external they use is [knob], but I can’t for life of me fine it in the external manager for Vanilla. :-/ I know this is a beginner issue…


The impression I’m getting is that Pd users just need to more fully populate the database over time using the procedure described here:

I haven’t tried Purr Data yet, but @MrsHardy says above that it is based on Pd-extended.

This multiplicity of parallel versions is one of the most frustrating things about the Pd ecosystem, IMHO.


i am also kidding about being offended. (though truly, that 'east coast/west coast ’ thing has got to stop. it was marketing bullshit from the beginning.)

but see, i also never said anything like “pd is no good because it lacks xyz, miller really screwed up there.”

i said something like, “huh, it actually would be handy to have a more powerful ‘score’ feature right there in the environment, and it would be easy to add. i’m glad i read this forum because it helped me to realize this.”

and look, puredata does have score features and data, of course. it has tables and qlist and all kinds of stuff. it’s hard to make cool reactive systems without some concept of state, initial values, so on. it could just use a couple other things. (in my opinion, obviously.)

and the considerations are totally pragmatic. couple weeks back i had a performance where i fired up SC (in emacs, natch), and PD (cause i had some interesting new sounds there), and had them talking so that i could manipulate PD timings in a flexible and efficient way.

i don’t want “livecoding” in PD, i just want some object that takes a script file as an argument and produces (generative/whatever) sequences. it should also accept messages like stop and reset, load foo, whatever. (maybe it has other messages for other arbitrary manipulations.) then i can edit the script with an editor instead of clicking around, and i can still run my piece by launching a single process instead of the high-wire act of running multiple JACK clients in linux on stage.

i can’t imagine any of this is very controversial.

hm, good point about GC and timing. what i’ve done with lua is write the timer system in C, using posix nanosleep and clock_monotonic. this gives maximally precise callbacks. each C callback passes an event back to the main thread that is running lua and then lua gets its own callback. lua can set/unset or manipulate timer parameters. if lua gets hung up with GC, it might make a single callback finish too slowly but it won’t cause drift.

a limitation is that changes to delta-time from within a lua callback won’t take effect until the current sleep has completed (timer has already gone to sleep when lua gets its event.)

i’ve no idea if that makes sense!

i’m gonna keep thinking about this (not too hard)

i’m also gonna try Purr Data.


wow, just saw this! i took this class in the year 2001. brought in my tibook (first gen osx), miller tried to compile pd on it (obvs didn’t work in one go…)


Yes, agree with you completely. I didn’t think you were complaining, I wanted to add some context and instead have derailed the conversation :slight_smile: Carry on…


At first glance it seems pretty nifty to me. What contributes an unusual flavor that makes it an acquired taste?


“derailed” ? i don’t even know what that means! :smile_cat:

i guess my reaction is just that this “reactive system” vs “determinate composition” is very much a false dichotomy. dig a little more into what they were actually thinking about at IRCAM in 1989. (i mean, we’re talking about a program run by pierre boulez.) they wanted to extract “high-level” musical parameters from a live performer, giving that performer direct and realtime control over the interpretation of an “electronic score.”

(it’s the european classical paradigm: a “score” is fixed and discretized data, but almost everyone would agree that the score is not really the music, and the performer brings it to life by articulating it dynamically.)

to my mind, this is not a big leap from developments in the modular world. (maybe a little more conservative.) i can speak most directly to the buchla systems, which started out including both relatively simple CV-sequencing components (which still gave you dynamic and arbitrary controls over sequence values and positions) with envelope detectors. then there was the MARF and timing detectors. then there was MIDAS, which basically digitized the MARF. and there were integrated one-off devices to combine event detection and event generation.

IWF and MAX were iterating on IRCAM’s 4x system and MIDI studio, and i think they mark a technological turning point; computers were suddenly fast enough that two things could happen: 1) you didn’t necessarily need to decouple score generation from sound generation any more, 2) you could extract higher-level audio features than “just” amplitude, timing and pitch, in realtime.

but a big shift conceptually / aesthetically? i dunno.

i guess i just don’t like using simple pigeon-holes for such remarkably accomplished and flexible creative tools and engineering works. (i don’t much care about whether a signal graph is represented graphically or textually.)

(for anyone who hasn’t seen it, this is an interesting paper and a quick read)

so yeah, MAX was designed as a consumer of MIDI data from the IWF. but that was many, many years ago! there is no reason whatsoever not to have both functionalities in one process. i’d even argue that miller’s cool innovation was to do exactly that; opcode’s MAX was a step backward.

arrg, you got me


so cool, and this is the deep end
here, and in this thread

it’s clear that you all are helping each other :slight_smile:

to help all of us
:slight_smile: respect and thanks


It sounds as if many of y’all are looking for i-score, although I have only dug into it deeply enough myself that I won’t be surprised if you’ve all abandoned it for its inscrutability.


ha! funny, as a tool, the introduction of something like i-score into the workflow is almost exactly the opposite of what i’m looking for. :slight_smile:

but its cool you bring it up because i do think it’s interesting to model musical structures with petri nets. they’ve been kicking this around for a while; this '07 paper references work back to '89 (http://articles.ircam.fr/textes/Allombert07a/index.pdf) you can definitely see the boulez…

but i-score is massive overkill for my compositional needs (which are simple enough), and i’d guess most people’s. it is truly the kitchen sink of time structure manipulation; tons upon tons of GUI and you can write javascript for event logic and whatnot… i’d be happy with any little scripting language that has records, routines, first-class functions, and access to an accurate sleep() or schedule() or whatever.

i got purr data. it’s nice that they packaged up all those externals, but can’t say i love the very slow new javascript UI. boy oh boy it is slow. it might be a deal breaker; i like my puredata lean and mean, running on a netbook.


We’re totally on the same page. I also don’t believe that it’s a dichotomy, nor was I trying to present it that way… more of a fluid spectrum… that’s all. In fact, my favourite way to work is to combine tools that favour different ways of working and mash them all together. :slight_smile:


Spoken like an interaction designer. :wink:


I tried latest version of Pd and, for the first time, Deken yesterday.

I’m glad to see an integrated package manager of sorts in Pd but it appears to be a bit half baked.

For instance I installed pdlua discussed earlier in this thread using Deken. After installing I could create a [pdlua] object instantly.

Then I installed creb, a favourite library of mine. But creb objects - like [blosc~] - could not be created until i added [declare -stdpath creb] (the same thing as adding it in preferences).

There is not much documentation on Deken whereas Pd vanilla otherwise IMO has great docs.

How come I needed do declare for creb but not pdlua? Aren’t libraries supposed to be added automatically by Deken?


Externals handling is a weird thing in Pd… did you add the path to the list in the Pd settings?


I created a “declare” object in my patch instead of configuring, which AFAIK does the same thing.

But according to the docs, if the “use standard extensions” checkbox in settings is checked (which it is by default) stuff in extra/ should load automatically:
‘If “use standard extensions” is enabled, the usual “extras” directory is also searched. This contains standard external objects like “expr” and “fiddle”, and perhaps much more depending on the distribution of Pd you’re using.’

Deken installs fetched packages into subdirectories of “extra”. What I do not get is why I need to configure stuff after Deken has downloaded. For creb I have to but ie for pdlua I don’t need to do anything.

Anyway, it works out with some configuration.


I am wondering as well… I had to manually add all the paths to the externals in Pd to be able to just add them by typing the abstraction/binary name in an object box. Otherwise they will get picked up automatically, but I need to specify the path. So for example instead of [output~] I’d have to write [iemlib/output~]
But maybe we are talking about two different things…


because sometimes certain -libs load everything and other times you need a -path