Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search

[REBOL] PURE DATA calling => Re: Implementing the associative model of data (tm)

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}] 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 Miller Puckette [main author] 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;