hey List, Jonathan.
You start with a struct:[struct foo float x float y canvas a b]
Then create a scalar from this struct.
The scalar will have an "x" value, a "y" value, and a canvas "a" which gets filled with the contents of an abstraction "b.pd" that is somewhere in Pd's search path.
Now here's the neat thing-- inside the newly instantiated "b.pd" you can do this:
[loadbang]|[field x]|[print x]
When you instantiate that scalar above, its canvas "a" will print out the value of the "x" field for that scalar. In other words, the "a" canvas has access to all the field data of the scalar it belongs to.
The interface is exactly like [v], which means you can do this:
[loadbang]|[f]x[+ 1]|[field x]
This will _change_ the value of "x" for the parent scalar. So if you drew a little rectangle, when you instantiate your scalar you'll see it moving across the screen.
sounds really brainfunky! i'd love to see this in "action" in a screencast, cuz i just cant imagine how