Moonix's PureData Tools
02 February 2005


EXTERNALS:

Here are the libs I've written for Pd.
They can be splitted in three parts:

  1. the nilib library, which is a kind of wrapper between Pd and Gtk, and its objects:
  2. nifs (a one-click file selector, with many special tricks...), niscope (a simple oscilloscope), and nileon (a simple drum machine, but it's the replication of an enormous mechanical one, named Leon Napakatbra, which was built from a 8 meters diameter merry-go-round...). There was also nimouse (giving mouse position/buttons) and nitab (the same for wacom serial graphire tablet) but i don't use these anymore: it's too dangerous to access a device file directly from pd. Beter use gtkmouse and wac/wacusb programs with pdsend/pdreceive (see moon-utils farther).

  3. the sub library, which is a collection of gui control objects (subdial, subslider, subbang and subtoggle) that are placed into a subpatch but are visible in the parent window, into the subpatch's box. The idea was to build easy-to-use complex subpatchs, or abstractions. I wrote it before "graph-on-parent" was implemented in Pd, so it's a bit deprecated now, but it has the advantage that subs values (positions of the buttons) are saved into the parent patch... very useful in case of abstractions.
    About of these questions, have a look to my AutoPreset abstractions, which adds a way to save the value of parameters (regular gui objects like sliders, toggles etc..., and symbols, tables, symbol arrays) into either a file or the parent patch, even those nested in abstractions (and recursively in
    abstractions of abstractions...).

  4. some other objects, such as:
tabenv : like env~, an enveloppe follower, but computing on a table, so possibly much speeder than real-time env~'s computation.
tabsort and tabsort2 : returns the indices of the sorted table (tabsort2 is bidimentionnal).
gamme : one octave of a piano keyboard used to filter/choose notes in a selected scale
absolutepath/relativepath : to use datas (sounds, texts, presets, images, programs...) nested in the patch's directory (and in subdirs).
sarray and slist : to creates shared dynamic arrays or lists with symbols.
sfread2~ and readsfv~ : to pitch the direct-from-disk reading of sound files.
dinlet~ : an inlet~ with a default value (when nothing is connected to it).
mknob : a round knob ala iemgui vslider (with its "properties" window).
dispatch : creates one bus name for many buttons' buses: from the N pairs  (slider1-snd/slider1-rcv) ...
(sliderN-snd/sliderN-rcv), creates only one pair of buses named (slider-snd/slider-rcv) , in which datas are prepended by the number of the "sub-bus".
joystik : an improvment of Joseph A. Sarlo's joystick.
image :  an improvment  of Guenter Geiger's one. Same name, but it's compatible. Here you can share images through different objects, preload a list of images, and animate this list.
           and some others...
    CAUTION:

This stuff was written with Pd v0.34-4 to v0.37 on a PC under Linux. It hasn't be tested under other conditions; nilib will only work under Linux (but I think it will be OK on other machines than PC), because of use of mutlithreading and GTK .
Anyway makefiles are only working for Linux for the moment.
Moreover I think sub library is potentially very sensible to possible modifications of Pd sources.


Download: moonlibs-0.2.tgz


ABSTRACTIONS:

    AutoPreset have to choose which kind of data you want), and the number of states (patterns) is predefined abstractions add a way to memorize different states of parameters (floats, symbols, tables and symbol-tables), to recall these states, and to save/load the whole set (called a "preset"), either to a text file on disk, or inside the patch itself (into a "message" object). This also works with abstractions and nested abstractions (abstractions inside abstractions), even if the same abstraction is use several times. There are different ways to pass or not the calling or storing of states ("patterns") from a parent patch to a child patch (abstraction). This could recall the work of Frank Barknecht: RRADical, but it's different approach: here the pattern data is stored in each component when running, and is centralized only at save/load time. The components are "typed" (you, even if you can change it. I wrote a small tutorial, so it should not be too hard to use it.

Download: AutoPreset.tgz


UTILITIES:

    Here are some programs to help using mouse events, wacom tablet events, parallel port. Some are not documented, and probably unusable for most people, but I prefer to keep all this together. There are also some scripts-fu for the Gimp, to make rotative animations (to use with "image" external for example, to make beautiful rotating knobs...).

Download: moon_utils.tgz



Links:
    H-A-U-T-Metalu is a collective of artists based in Loos, near Lille, in the north of France. It has produced Leon Napakatbra, a merry-go-round turned into a mecanical rythm-box, and Axolotl, an utopic submarine. It also hosts Al1&Ant1 projects.
     Al1&Ant1 is a two people (Alain and Antoine) work, around Pd/Linux and artistical machine development. We have built the Hurlomatic (a machine where you have to scream the more powerfuly and the longer you can, after you have told your name; highest scores etc...), the KE01Serie (the Karaoke ElectroAcoustic, with which about 9 people can experiment playing realtime electronic music together), and we participate sometimes to courses into workshops about music on computer and opensource softwares.
     Incorect is a group of  web-designers based near Lille. Go to their site, it's terrifying...

  
    PureData:
    pdb, the Pure Data Base
    PdWiki
    pure data list archive


moonix.jpeg