Hello,
I haven't been using Pd regularly for a while now. But as I remember, the biggest disadvantage of data structures isn't really that they're "buggy" (i.e. have some issues that usually don't happen in other pd objects, as Jonathan listed), but that there are very few
possible
operations. Any patching requires lots of work to do things that on other parts of Pd happen very easily. Looking at the ftm library, could be a way of a goal of what could be done using data structues (not even to mention the audio part).
Also, because of the gui issues, data structures can't really be relied upon for non-slow (i.e. medium and fast) graphics. It just takes lots of cpu (at least it does on my windows machines).
There is also the steep learning curve, but I've seen gradually more people working with them, so that generates a positive loop. I don't know if my tutorial helped much (based on the ones of F Barknecht and G Karman), but every step counts.
One can also have a look at my abstractions in extra/jmmmp, several of them are made with data structures - including [matrixctrl], quite useful as a gui for [iemmatrix/mtx_mul~].
(btw, I was just trying to upload my tutorial to puredata.info, but the website gave an error. I'll keep trying)
Jonathan, when will your new features be available in Pd Extended? I could try to update my tutorial with them. I'm not using linux anymore, so I won't be working with pdl2ork.
Best,
Joao
On 11/23/2014 11:26 PM, Alexandre
Torres Porres wrote:
don't even remember cause I stopped messing with it
because of them, but I did discuss about them sometime ago here
on the list, with joćo pais, the bottom line is that they were
indeed buggy like that and that you had to cope with it.
Well, there are a few areas I can think of:
1) changing contents of [struct] when you have scalars in a canvas.
Pd goes through and conforms the scalars to the new [struct]
definition, but the old definition sticks around, too. This seems
to cause problems in some cases, and possibly crashes when you have
array fields inside the [struct]-- especially if you make changes to
the [struct] for that array.
2) scalars inside a gop. These are prone to all kinds of weirdness,
though it's unclear what constitutes a bug here:
* there's a red gop rectangle for putting objects which you want to
show up on the parent, but scalars get scaled and displaced as a
function of subpatch's window dimensions and x/y ranges/sizes. This
makes it difficult to tell where the scalar will appear inside the
gop, as well as blasting the scalar off into the nether regions of
the subpatch if you decide to turn on gop.
* iemguis outside of the gop rectangle won't show up, but scalars
will
* while the gop rectangle does not affect the appearance of a
scalar, it _does_ affect the scalar's widgetbehavior. Thus you can
click a scalar only if it's within the gop boundaries. You can drag
a scalar outside of the boundaries, but once you release the button
you can't drag it back. (Same with a "Put" menu array.)
* text appearance is limited by tk canvas implementation. So the
x/y units setting of a gop canvas will affect polygon appearance,
but the text itself won't rescale at all.
* canvas "clear" method clears out the gop settings (at least I
think it does). The "coords" and "donecanvasdialog" methods take an
enormous list of positional arguments that are impossible to
remember
* x/y margins apparently have no effect on scalars, although Pd lets
you set them
It's difficult to figure out how to make that scalar behavior in
gops more sensible. It's tricky because gop currently acts like a
"viewport" somewhat in the svg or opengl sense, yet it doesn't clip
or even respect the "size" attributes if the subpatch is open.
"Put" menu array sizing and [table] widgetbehavior are affected by
this, so if scalar gop appearance were simplified then garrays would
have to be decoupled from that behavior.
-Jonathan