[PD] Cyclone in vanilla?

Andy Farnell padawan12 at obiwannabe.co.uk
Tue Apr 22 02:58:09 CEST 2008

> the question is a very blasphemic one, and I am not sure, if I should 
> bring this into discussion at all...

It's vital we discuss this.

It took a while for me to appreciate what I believe to be Millers
philosophy, and in principle I agree with and respect it. To keep
the core of Pd as small and maintainable as possible using a minimal
set of objects is smart. I hope that tradition continues whatever
the future and that the requirements for entry into the Pd core
are very strict indeed.

Many times I've learned my lesson thinking that some higher level
object was irreplaceable only to be put right by someone showing
an equivalence using two or three existing primitives. This has
been very educational.

However, while two or three objects combined is acceptable it
breaks down when one must implement elaborate patches to do fundamental
things. Everyone knows that sin(x) = 1 - cos(x)  [in rotation normalised
Pd speak], and [abs~] can be trivially constructed using [min~] and [max~].
No big problems there. But what of things like [z~], [pow~], [tanh~], [ln~]
and so forth? These are basic operations that MUST be in any signal processing
framework if it is to be considered complete.

The existence of pd-extended as a system of "non-essential" objects
around the core seems the perfect solution. But I submit that the 
core is incomplete and therefore I have the ridiculous situation
of either having to jump through ugly hoops to do simple things
or having to suggest the students download the entirety of extended
for the sake of a few vital but missing objects.

I therefore define "missing" as when the best answer on the table
is "use [expr~]" or "use this equivalence made of more than 2 or 3 objects"

The question must be "What defines vanilla Pd?" Is it, as I have
assumed above, Millers intention to maintain a minimal but axiomatically
complete set of objects. If so then we must surely agree that the set 
is incomplete. The question then becomes "Why are certain primitives
missing?" There may be many good reasons such as platform compilation
problems, licensing obstacles or namespace issues, but I venture that none
are insurmountable if we work as a community to submit robust implementations
and work around the problems. I'm not talking about elaborate objects like
autocorrelation or YIN pitch estimation, just the basic, primitive essentials.

I feel uncomfortable talking about this as if Miller were absent, so I do
hope the discussion will be joined soon.

We have many good mathematicians here who could help define what is the
minimal axiomatic object set, prove that it's complete and show the
"theorems" to build everything higher. This also requires practical input
from people like myself who use Pd every day to say "Sure, you can build
an abstraction using x, y and z, but that is __unacceptably impractical__
when a simple core object could be added."

As you know this has come up before, regarding [delta~] (which I foolishly
assumed was intrinsic - my fault). But I never considered for a moment that
[pow~] or [ln~] are not core objects! Time is a factor now and I 
need to choose (again) whether vanilla Pd can be the recommended installation
for the book, or whether to drop many valuable examples, or whether to make
pd-extended mandatory. Very frustrating.

most sincerely


Use the source

More information about the Pd-list mailing list