jonathan already gave a smart reply to your question, using variable
variables as delimiters in your polygons, you can vary everything. If you
notice, in your first example you could vary the position of the
individual array elements (because you don't have a fixed x distance), but
you couldn't vary the position of the whole array - which wasn't necessary
for now, but I just wanted to remark that.
I would add only something to your [setsize bar_struct bar_array]
construct: in case you want to get a pointer of a specific template, use
the template's name as argument e.g. [pointer bar_struct], and route the
exit of the 2nd outlet to a [next(. That creates a loop that only stops
when you get your pointer. if you have several scalars of the same
template, adding a [get ...] to that loop makes it better (in case you
have a sort of identifier for each scalar).
A not-so-efficient-as-Jonathan's example of dynamic polygons can be seen
in my [jmmmp/bezier] abstraction (attached also the upcoming audio
version). Inside my folder are a couple other abstractions using data
structures (some new ones might appear only in the next pd-ext release).
I wouldn't say "don't bother with data structures", but rather "work a lot
with it and make pressure so that they get improved". besides Jonathan's
remarks, there are many other simple things that make life harder: lack of
methods for simple operations (select previous pointer, or previous/next X
pointers), math or expr functions inside of data-s templates (you need to
get the data and then set it again), can't delete scalars without using
the delete key or clearing the whole canvas, ...
many small things that make one patch a lot just to make simple operations.
and the biggest problem, rendering. don't even try to think of using
data-s for any high-rate GUI. for that better to look at GEM.
looking at Miller's words, data structures was one of the main reasons to
start Pd. after all this time, they didn't change that much.
very nice would be to have Ircam's FTM library implemented in Pd, but it
seems to be an impossible task, someone has tried already.
On Fre, 2013-05-24 at 16:13 -0700, Jonathan Wilkes wrote:
Here's a quickly made approach that uses quanta syntax and checks for mouse manipulations from the outlet of [struct].
Thanks a lot. A lot of new stuff (for me) in your example.
I wouldn't recommend spending too much time learning data structures. They are _extremely_ limited with the current implementation.
I appreciate your advice. I have the impression one finds out about the limitations only by diving into data structures a bit more deeply. Although I haven't a clear picture yet what is possible and what is not, I find some of the examples in Millers documentation quite intriguing.
Roman
----- Original Message ----- From: Roman Haefeli reduzent@gmail.com To: pd-list pd-list@iem.at Cc: Sent: Friday, May 24, 2013 6:15 PM Subject: [PD] first exercise with data structures
Hi all
Finally an attempt to dive into data structures. I read Frank Barknecht's still excellent DS tutorial and, of course, section 4 of Pd's help written by Miller Puckette, which is a bit more demanding, but definitely very interesting. Though I can somewhat follow the simpler example patches, the fundamental concepts are still a bit nebulous.
Here's my problem. I found how to use [filledpolygon] to draw a rectangle whose width can be changed by mouse interaction. When using the same [struct] as the element of an array, I can draw many rectangles which can be grabbed and moved by the mouse (x-y-array). However, when it is used as an element, the ability to change the width dynamically with the mouse is lost. When it is not part of an array, it cannot be moved easily (without going into edit mode). How can I have both at the same time? Is it even possible at all?
Attached is an example that illustrates both cases.
Roman
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list