PURE DATA calling => Re: Implementing the associative model of data (tm)
[1/1] from: jason::cunliffe::verizon::net at: 29-Jan-2002 2:48
Hi Andrew,
I am delighted that you are exploring the associative model :))
It looks beautiful and quite rebolistic.
Allow me some associative digression..
Over the weekend I was playing around with, and thinking again about PD
[Pure Data] and how it relates to REBOL.
I'll try to describe a few key points. It is an interactive system which
must be played with hands on to appreciate properly. There are some great
docs and sites.
PURE DATA [SGI, Unix, Linux, Win32, now MacOSX{beta}]
http://www.pure-data.org/
PD is toolkit for building virtual instruments. It has a long heritage going
back to wonderful work done at IRCAM in Paris which became a product called
MAX. It is suitable for real-time signal processing of audio [DSP] and
control data [MIDI and more] with extensions to interface with external
physical devices like sensors, joysticks, etc. There are some remarkable
extensions for digital media. The best of these is perhaps GEM which
provides openGL interfacing for 3D with texture mapping , video etc.
ONE of the truly brilliant things about PD is the clear distinctions between
its layers.
The bottom layer is c or c++ libraries and glue. This is the component
engine. The main user interface is a visual
programming environment based on a patchbay paradigm, combining symbols,
widgets and connectors, Most widgets are elegant minimal boxes where one can
enter key words and then a sequence of parameters. Punctuation is notably
absent, like rebol.
Users drag/draw instances from menu onto a palette. Then type in key words
to instantiate them add params and click on the input and outputs to route
messages. The routing is displayed via simple rubber band lines. It is a
potent illusion supported be incredibly talented programming from a creative
experimental community writing both high and low level applications. The
whole is very modular and has some interesting parallels to the REBOL.
When a collection of PureData 'patches' are saved as .pd files, they are
simply text file descriptions for all widgets, object names, params and
connections. Thus all pd applications [not components] including its own
docs are simple.pd text files. People are free to look at these or ignore
them as they see fit, but they are only one layer down. [see an example
below]. The beauty is PD patches can be combined just as REBOL scripts allow
one to build up or break down a situations modularity rapidly. PD is
designed for 'live' performances. One can toggle instantly between
real-time/runtime and edit modes.
What's this got to do with REBOL or associative data modeling?
1. PD patch descriptions files are as rebol and rebol/view scripts are to
the underlying engine.
2. PD can be regarded as a visual programming interface for associative
modeling. One might immediately use it to create interactive interface for
modeling associative data problems and patterns.
3. It offers a modeling paradigm which REBOL might emulate wonderfully,
using REBOL/View to create its own native toolkit.
PD offers great graphic simplicity because the interactive graphic needs for
patching are relatively simple types:
i/o sliders, number, buttons, text, labels, dials, connectors, visible,
invisible. Since a large part of PD is for processing MIDI is all geared for
parsing streams of chunked data message blocks.
4. The 'connection' tuples of your associative data example are just like
the connection tuples of PD patches [see the X connect lines at the end of
the "hello.pd"example]
./Jason
documentation
http://www.crca.ucsd.edu/~msp/Pd_documentation/index.htm
Miller Puckette [main author]
http://crca.ucsd.edu/~msp/
GEM
http://www.danks.org/mark/GEM/
here's a trivial example from the docs: "hello.pd"
=================================================
#N canvas 9 21 600 496 12;
#X msg 204 32 hello world;
#X obj 204 105 print;
#X floatatom 321 32 0 0 0;
#X text 215 48 message;
#X text 319 49 atom;
#X text 201 123 object;
#X text 53 150 There are four types of text objects in Pd: message \, atom
\, object \, and comment.;
#X text 54 187 Messages respond to mouse clicks by sending their contents to
one or more destinations. The usual destination is the "outlet" at the lower
left corner of the box.;
#X text 55 239 Click the message box and watch the terminal window Pd was
started in. You should see the "hello world" message appear.;
#X text 55 278 Atoms respond to "Dragging" up and down with the mouse \, by
changing their contents and sending the result out their outlets. You can
also type at an atom after clicking on it \; hit "enter" to output the
number or click anywhere else to cancel.;
#X text 52 359 Objects \, like "print" above \, may have all sorts of
functions depending on what's typed into them. The "print" object simply
prints out every message it receives.;
#X text 53 415 To get help on an object \, right-click it. You should see a
help window
for the object.;
#X text 354 470 updated for release 0.33;
#X connect 0 0 1 0;
#X connect 2 0 1 0;