Hello, I'm almost a newbye to Pure-Data even if I had some experience with MAX/MSP. I've got experience in building systems for real-time processing of video (live or movies) in order to generate data for music/sound synthesis. I'm looking at writing PD externals to do that. I'd like to know if it is possible (and how) to add a new datatype to PD, ore, some advice on how to implement my ideas. Reading the documentation I've seen that there are very few datatypes: number, symbol, pointer and audio buffers. Given that I'm just beginning to tackle the problem may be I'm asking some FAQ, anyway... I can't understand what is the pointer datatype. A symbol seems to be "just" a string. Can I add a value a pointer to a data structure? It is possible to build something as audio buffers (image data type, or multidimensional array)? Does that require modifications to PD? The system I'm working on, allows to create a chain of processing on images, then when the system begins to run there is an init phase where each element of the processing chain is told what kind of images it will receive, it initializes itself and its internal buffers, and then starts working everytime it receives data. I think that it is more or less what happens with the audio chain in PD. Framestein has a different approach given what I've seen. Something similar seems to be GridFlow, but I'm having a hard time trying to understand its inner workings. Well if somebody can give me some pointer to start think about... thanks Riccardo Trocca
hi,
what you're talking about sounds an aweful lot like GEM. GEM is an image/video/openGL external for PD that works in a chain structure to allow for the manipulation of whatever the input may be. it also does full openGL 3D rendering in real time.
matt..
----- Original Message ----- From: "Riccardo Trocca" rtrocca@libero.it To: pd-dev@iem.kug.ac.at Sent: Sunday, September 29, 2002 5:05 AM Subject: [PD-dev] Hello
Hello, I'm almost a newbye to Pure-Data even if I had some experience with MAX/MSP. I've got experience in building systems for real-time processing of video (live or movies) in order to generate data for music/sound synthesis. I'm looking at writing PD externals to do that. I'd like to know if it is possible (and how) to add a new datatype to PD, ore, some advice on how to implement my ideas. Reading the documentation I've seen that there are very few datatypes: number, symbol, pointer and audio buffers. Given that I'm just beginning to tackle the problem may be I'm asking some FAQ, anyway... I can't understand what is the pointer datatype. A symbol seems to be "just" a string. Can I add a value a pointer to a data structure? It is possible to build something as audio buffers (image data type, or multidimensional array)? Does that require modifications to PD? The system I'm working on, allows to create a chain of processing on images, then when the system begins to run there is an init phase where each element of the processing chain is told what kind of images it will receive, it initializes itself and its internal buffers, and then starts working everytime it receives data. I think that it is more or less what happens with the audio chain in PD. Framestein has a different approach given what I've seen. Something similar seems to be GridFlow, but I'm having a hard time trying to understand its inner workings. Well if somebody can give me some pointer to start think about... thanks Riccardo Trocca
PD-dev mailing list PD-dev@iem.kug.ac.at http://iem.kug.ac.at/cgi-bin/mailman/listinfo/pd-dev
On Sun, 29 Sep 2002, Riccardo Trocca wrote:
I'd like to know if it is possible (and how) to add a new datatype to PD,
I've been told that is not possible in PureData. However, it is possible in jMax.
A symbol seems to be "just" a string.
It is. It's a permanently allocated constant string... Just like it is in LISP and many of its apparented languages (Smalltalk, Ruby).
Can I add a value a pointer to a data structure?
You wish. Somehow there's a type that is a pointer to a "graphical object" and nothing else.
It is possible to build something as audio buffers (image data type, or multidimensional array)?
GridFlow has always passed its multidimensional arrays in a streamed way (packet-based). Oldest versions did only pass pointers-to-buffers. Latest versions only pass pointers-to-GridInlets.
For jMax those pointers are encoded as integers. For PureData I actually had to encode them to pairs of floats (!!!) I've been told that is very ugly, but I believe that given the circumstances that was the best choice.
Does that require modifications to PD?
It would, but it's a good idea to avoid that unless the changes go into the main PD source code.
The system I'm working on, allows to create a chain of processing on images, then when the system begins to run there is an init phase where each element of the processing chain is told what kind of images it will receive, it initializes itself and its internal buffers, and then starts working everytime it receives data. I think that it is more or less what happens with the audio chain in PD.
Important distinctions:
With the audio chain there is a continuous flow of data; GridFlow uses the regular message system; Pixonix uses a modified audio chain for its video; I don't know how other systems do it.
With the audio chain, the init phase occurs when objects get connected/disconnected. With GridFlow, the init phase occurs at the beginning of every grid transmission.
With the audio chain, the total length of the data is not predetermined. In GridFlow, dimensions of each grid must be known in advance because of how the init phase works.
Something similar seems to be GridFlow, but I'm having a hard time trying to understand its inner workings.
It's not documented. I wanted to wait till I had a clean API, but it has not happened yet. (help!)
matju