[PD-dev] Number of objects in pd-extended versus pd vanilla

Jonathan Wilkes via Pd-dev pd-dev at lists.iem.at
Tue Jul 8 01:29:54 CEST 2014

On 07/07/2014 04:22 AM, IOhannes m zmoelnig via Pd-dev wrote:
> Hash: SHA256
> On 2014-07-07 09:43, Greg Schroeder via Pd-dev wrote:
>> Could someone give an example of a single object name that creates
>> more than one Pd class?
> [list], [array], [scalar], [text].
>> How would one go about reducing those 194 object names?
> could you give more context about what you want to achieve?
> btw, i had a quick glance at the sourcecode of Pd and found that it
> contains about 238 distinct class-names.

Here's a quick Pd-l2ork patch to automate the process:

|     [r break]
|     |
[f]x[+ 1]
[classinfo objectmaker]
[route bang]
|          |
[s break]  |
            [add2 $1(
            [ (

Which fills the message box with this:

pd page group table group declare bng hradio hdl rdb radiobut 
radiobutton hsl hslider cnv my_canvas nbx my_numbox tgl toggle vradio 
vdl vsl vslider vu inlet inlet~ outlet outlet~ struct template 
drawpolygon drawcurve filledpolygon filledcurve drawrectangle 
filledrectangle drawellipse filledellipse draw plot old_plot drawnumber 
drawsymbol pointer get set element getsize setsize append sublist mtof 
ftom powtodb rmstodb dbtopow dbtorms print canvasinfo pdinfo classinfo 
objectinfo int i f b send s receive r select sel route pack unpack 
trigger t spigot moses until makefilename swap fswap change value v 
delay del metro line timer pipe + - * / pow max min == != > < >= <= & && 
| || << >> % mod div sin cos tan atan atan2 sqrt log exp abs wrap clip 
midiin sysexin midirealtimein notein ctlin pgmin bendin touchin 
polytouchin midiclkin midiout noteout ctlout pgmout bendout touchout 
polytouchout makenote stripnote poly bag random loadbang initbang 
closebang namecanvas serial cputime realtime netsend netreceive qlist 
textfile openpanel savepanel key keyup keyname list append list cat list 
prepend list split list trim list length preset_node preset_hub +~ -~ *~ 
/~ max~ min~ tabwrite~ tabplay~ tabread~ tabread4~ tabosc4~ tabsend~ 
tabreceive~ tabread tabread4 tabwrite sig~ line~ vline~ snapshot~ 
vsnapshot~ env~ threshold~ dac~ adc~ delwrite~ delread~ vd~ fft~ ifft~ 
rfft~ rifft~ framp~ hip~ lop~ bp~ biquad~ samphold~ rpole~ rzero~ 
rzero_rev~ cpole~ czero~ czero_rev~ send~ s~ receive~ r~ catch~ throw~ 
clip~ rsqrt~ q8_rsqrt~ sqrt~ q8_sqrt~ wrap~ mtof~ ftom~ dbtorms~ 
rmstodb~ dbtopow~ powtodb~ pow~ exp~ log~ abs~ print~ bang~ phasor~ cos~ 
osc~ vcf~ noise~ soundfiler readsf~ writesf~ block~ switch~ samplerate~ 


Some of these-- like "preset_node" and "draw"-- are in Pd-l2ork but not 
Pd Vanilla.

Others are just aliases, or "creator" names.  To filter them I drip that 
list through another [classinfo].  So these aren't actually class names:

switch~ q8_sqrt~ q8_rsqrt~ r~ s~ del v fswap t sel r s b f i 
filledellipse drawellipse filledrectangle drawrectangle filledcurve 
filledpolygon drawcurve outlet~ inlet~ vslider toggle my_numbox 
my_canvas hslider radiobutton radiobut rdb group table group page


That leaves 216, but that's probably not accurate because the 
"objectmaker" class doesn't have methods for every loaded Pd class. Ones 
like "message" and others which can't be created in an object box don't 
appear with my patch.  For a comprehensive list of loaded classes I'd 
need to step through Pd-l2ork's class table.  That might be nice to add 
to [pdinfo] (which again is only available in Pd-l2ork).

But again, this won't tell you about classes that are _potentially_ 
loadable by Pd-l2ork/Pd-extended which haven't been loaded yet.  For 
that you'd probably need to search all the paths Pd searches and look 
for binaries with the extension for your particular OS (on GNU/Linux I 
believe it's .pd_linux).  Then try loading all of those libraries, then 
step through the class table (which again only exists in Pd-l2ork) and 
get the tally.

When I code up a method to query the class table, I'll make a patch to 
load every binary in every search path of Pd.  That should give a 
definitive answer on the total "loadable" classes in Pd-l2ork (which is 
probably close to Pd-extended).


More information about the Pd-dev mailing list