A glorious hack, Jean-Yves! This should work well for what I am envisioning. One strange thing, though: if you move the subpatch (that displays the selected array), the other array is visible underneath it. I wonder what's up with that?
Thanks for the solution, Jean-Yves (and Chuck for suggesting it was possible in the first place).
Phil
Chuckk Hubbard wrote:
Well-done, that looks like the perfect solution. I did notice these functions mentioned in the code, with xmargin and ymargin as arguments of a longer function call, but I hadn't followed up to see what else went in the message. I believe this is your answer, Phil.
Another one for msg-docs, I think.
-Chuckk
On Dec 10, 2007 1:11 PM, Jean-Yves GRATIUS jygratius@freesurf.fr wrote:
Hi, I have tried to change graph-on-parents settings by message for displaying different arrays, it seems to work.. I did'nt test it with large tables. (included patch : switchingGOPtables.pd).
Jean Yves Gratius http://jy.gratius.free.fr
Chuckk Hubbard a écrit :
On Dec 9, 2007 10:50 PM, Phil Stone pkstone@ucdavis.edu wrote:
Hi Chuck,
I think you're right; there's no way to avoid the copying. It's good to dream, though. :-)
I have done some experimenting, and I think I'm on to something. If you create a graph from the put menu, then right-click and select Open; and then Put an array on the opened subpatch, you can see the red outline where you can decide what will be graphed-on the parent graph.
It would not be too hard to send editmode and mouse movement messages to that canvas to move arrays around inside it; and it probably would actually be more efficient than copying. But I also notice that the graph subpatch has, in its options, an x and y margin, which moves the red outline. IF it's possible to change these values with messages, it could be trivial to move that red outline to cover several well-placed arrays, meaning that the graph would indeed switch arrays like you want. I started to look at the Pd code to see if I can find such a message mentioned; if I find it I'll let you know.
-Chuckk
Chuckk Hubbard wrote:
It would be possible, if not CPU-efficient, to have them all hidden in table objects, and simply use tabread and tabwrite to copy them to the skeleton array when you want to switch. You would only need one tabread and tabwrite pair, just different ways to specify the target of tabread. I would envision binding the tab key to page through them.
But it is possible to put several arrays in one graph which makes me wonder if there might even be a pure GUI way to do it. Kind of makes me want to take a look...
-Chuckk
On Dec 8, 2007 10:26 PM, Phil Stone pkstone@ucdavis.edu wrote:
This probably fits into the category of a wish for PD; I think there's no way to do it currently, but I'd love to be proven wrong!
I'd like to be able to change the data an array points to rather than actually change the data in the array. The scenario which me think of this is, I'd like to have a display of a currently-selected waveform (which could be one of many pre-allocated arrays). It would be wonderful to have a level of indirection where the display-array can be given a new address [object reference?] to one of the various pre-allocated arrays, after which it redraws itself.
I suppose this unleashes all the evils of pointers (multiple references to memory, etc.), but it would a serious advantage, performance-wise, for the scenario I'm envisioning.
I also think it would be very cool if arrays could act as buttons...but that's a different subject.
Phil Stone pkstonemusic.com