Personal tools
You are here: Home development PdLibraries
Views

Edit history

Edit: -1 of 1
Time: 2009-12-27 07:14:43
Note: /pd/pd/dev/PdLibraries/reparent

changed:
-
----

Now that Pd has the beginnings of a fully functional namespace, its time to start thinking of Pd as a platform.  The next big step is organizing the vast amount of code into coherent libraries with consistent interface paradigms.  This page is a scratch pad to start working out ideas of how to organize the Pd platform libraries.

= Library Structure =

One key part is defining a standard library format.  Libdir is close to working, but needs some additions to work for all libraries.  One key thing to add to libdir is a shared library that is loaded first.  Then when each objectclass is loaded from its individual file, the shared code will be available.

 * libfoo.so (loaded by '''pd''')
 * libfoo.tcl (loaded by '''pd-gui''')


= Library Hierarchy =

Generally, i + IOhannes think, that we should differentiate between different types of data on a high level rather than a low level.
e.g. i would recommend '/math/+' and '/audio/math/+~', instead of '/math/audio/+~' (as shown below).
The reasoning behind this is, that the disambiguation at a low level will quickly become unmaintainable (except for some very generic types like signals and floats; as soon as you would like to apply this schematics to library-defined types (like image-buffers in pdp & Gem or grids in GridFlow), hell will break loose.

== References ==
 * [http://lists.puredata.info/pipermail/pd-dev/2009-02/013069.html pd-dev-list discussion about categories]
 * [http://puredata.info/dev/summer-of-code/PdLib/ G Holzmann's suggestions for gos08]
 * [http://wiki.dataflow.ws/PdMtlAbstractions Pure Data Montréal abstrations]

= Pd-vanilla =
For reference, here is the list of categories in Pd-vanilla 0.42-4 (notice some inconsistencies in the names, that could be corrected).
 * glue
 * time
 * math
 * midi
 * tables
 * misc
 * audio math
 * audio glue
 * audio oscillators and tables
 * audio filters
 * audio delay
 * subwindows
 * data templates
 * acessing data
 * obsolete

= Suggestions for the new category structure =

== glue ==
Dumb question: why is this section called glue? Would it make more sense to be called control? Or is it a too obvious csound reference?

 * all objects from pd-vanilla's same category

 * '''glue/time''' - time operations + info
  * all objects from pd-vanilla's same category
  * cputime, realtime, timer
  * time, gmtime, localtime
  * timezone
  * date +%Y.%M.%D

 * '''glue/math''' - math operations
  * all objects from pd-vanilla's same category
  * cart2pol, rad2deg
  * FFT
  * convolution
  * '''math/list'''
  * '''math/matrix'''

 * '''glue/tables'''
  * all objects from pd-vanilla's same category
  * relevant objects from pd-vanilla's acessing data category
  * VASP

== midi ==
 * all objects from pd-vanilla's same category

== object - objects for building objects ==
 * float_argument, symbol_argument, any_argument
 * objects for handling dynamic patch generation

== regexp - regular expressions ==
 * regexp
 * regsub
 * pattern match

== mapping - mapping data from inputs to outputs ==
 * polar, spiral
 * one2two, one2three
 * lowpass

== audio ==
Should this category be called signal instead of audio? (or again another csound reference?)
 * '''audio/glue'''
  * all objects from pd-vanilla's same category
 * '''audio/math'''
  * all objects from pd-vanilla's same category
 * '''audio/oscillators'''
  * sine~, square~, triangle~, ...
  * '''audio/oscillators/pure'''
   * sine~, square~, triangle~ (two libraries probably make sense here, one for mathematically pure oscillators, and another for bandwidth-limited oscillators.  Perhaps this could be called "generators")  
 * '''audio/tables'''
  * all objects from pd-vanilla's same category
 * '''audio/time'''
  * all objects from pd-vanilla's same category
 * '''audio/filter'''
  * all objects from pd-vanilla's same category
 * '''audio/reverb'''
  * yafr~, freeverb~, etc.
 * '''audio/synth'''
  * vocoder~, FM, karplus/strong, etc.

== buffer - buffer data streams ==
why not join this category with glue/time?
 * pipe

== data templates ==
 * all objects from pd-vanilla's same category
 * relevant objects from pd-vanilla's acessing data category

== graphics / video ==
 * Gem
 * Pidip
 * Pdp
 * Framestein
 * Gridflow

== gui - classes for building GUIs ==
 * '''gui'''
  * vslider, hslider, bng, entry, knob, etc.
 * '''gui/audio'''
  * dsp, slider+vu, Scope~, sonogram~, etc
 * '''gui/file'''
  * playlist
 * '''TkWidget''' - Pd ports of the Tk widgets

== file - file operations ==
 * chdir, chroot, mkdir, rmdir
 * chmod, chown, umask
 * ls, glob, link
 * move, rename, copy, delete
 * get file info (data, perms, size, atime, mtime, etc)

== io - handle IO from files and ports ==
 * usb, serial, parallel
 * hid
 * qlist, text, xml, sql
 * mouse, joystick, gamepad, tablet
 * multio, arduino, miditron, memPIO

== net - network primitives ==
 * sockets
 * OSC, UPD
 * URIs
 * HTTP
 * streaming

== databases - objects for using databases ==
 * [[SQL]] a library for using SQL databases

== misc ==
I suggest to deprecate this category from pd-van and divide the objects between other categories

== subwindows ==
I suggest to deprecate this category from pd-van and divide the objects between other categories

== obsolete ==
 * all objects from pd-vanilla's same category

----
= Documentation =
After (or while) restructuring the new categories for pd-ext objects, an automatized solution for the documentation should be found. Here are some pointers:
 * [http://lists.puredata.info/pipermail/pd-dev/2009-02/013025.html some suggestions at methods of organising an automatised documentation - follow thread]
 * [http://lists.puredata.info/pipermail/pd-dev/2009-02/013085.html sql database suggestion from dmotd]
 * [http://www.parasitaere-kapazitaeten.net/files/GENERAL_ALL.csv_.txt lost the reference, can Mr. Schebella correct this sentence?]
 * [http://lists.puredata.info/pipermail/pd-dev/attachments/20090220/b46c1e96/attachment-0001.xls (uncomplete) excel chart of pd-ext objects]

Powered by IEM Powered by Plone Section 508 WCAG Valid XHTML Valid CSS Usable in any browser