in this scenario we have 16 elements with a range of 0-170. If we drag the mouse across from a node and then click the background first we get a print of "click (pointer) 0 (the initialised y position), then we will get a print output equivalent to the number of nodes with the y values of each node multiplied by 2 (why x2 ?).
Surely we must be able to capture this output
-
Getting the output from a struct element, I think I'm getting close
-
before i saw your discoveries i was almost sure that there is no "jump on click" for data structures. now i am almost sure again. i also didnt find any documentation about the output of a struct, that made me think there are perhaps some other funtions that are not explained at all (or work in progress). thanks for your explanation.
-
@Balwyn Y is inverted because 0,0 is top left..... x increasing to the right = normal....... y increasing to the bottom = not. Presumably to do with standard computer window drawing co-ordinates.
You can get the x/y position of the plot with [get].You can drag and jump to the mouse position and click when not in edit mode. The problem is that the co-ordinates for the structure are for it's drawing screen, and the co-ordinates for the mouse are for the computer screen. I remember being able to get the window co-ordinates for the mouse (rather than screen)..... but I have forgotten (for now). Sure it can be done.
Here is one to play with..... demonstrating the problem....... It jumps and drags (edit mode on)......
jump_drag.pd
You will need cyclone/mousestate.
David. -
@whale-av that makes sense. i am learning. we solved the problem with iem_event from iem_gui like i mentioned in another thread. a problem with mouse state was that it uses the coordinates of the screen and not of the pd window. after that i used a combination of canvasposition, receivecanvas and canvasobjectposition. so iem_event was the easiest solution for our purpose. somehow i like the idea to find a vanilla solution, but its not too serious. still it was interesting too find out about the structoutput and balwyn found a nice way to use it.
-
This post is deleted!
-
yeah, i didnt know that there is a "ping" message. very helpful.
-
@whale-av that is an interesting event (ping). what is its original purpose? Its great the way it Idles to almost nothing. A problem I found is that if there are multiple instances of [slids] they are all trying to update at the same time. resulting in Pure Data stalling. I even slowed the bangs down with a modulo counter of 5 and [sel 0], which prevents the stalling but still causes a jerkiness to the mouse. I'll try a central ping and some delayed bangs next.
-
Ok delays didn't work as it just delayed the onslaught, but [route] works well by sending an Id from the struct click to [route] then [spigots] dispersing the cental ping bang to the correct [slids-2] (obviously the [table] at the top right would be hidden)
slids-2-ping-test.pd
slids-2.pd -
@Balwyn Getting better and more useful!
The ping seems to control dataflow with the gui....... maybe to ensure audio continuity.
If you put a gui in the patch and change it's value then a stream of pings are generated. Seems to be a message from the Pd gui saying "ready, send next chunk".
s_inter.c/* ---------------------- sending messages to the GUI ------------------ */ #define GUI_ALLOCCHUNK 8192 #define GUI_UPDATESLICE 512 /* how much we try to do in one idle period */ #define GUI_BYTESPERPING 1024 /* how much we send up per ping */
David.
-
@Balwyn PS....SSSSS.. P
I know it doesn't perfectly fit your criteria (Vanilla only) but a mouseup plugin might be acceptable?
It is more reliable than the old extended mousestate.
mouseup.zip
Please no laughter about the simplicity of the code!
David. -
@whale-av No laughter here, I think this is amazing in its simplicity. It took me a while to work out to put the 'mouseup-plugin.tcl' in the extra folder, but now its working, I'll see what I can do with it. Are there other mouse events that can be bound in this way?
Cheers and thanks
Balwyn -
@Balwyn I am on a show today..... but I am sure other mouse functions can be dealt with in the same way. I will have a go at expanding the plugin tomorrow.....
David.
PS.... sorry for the lack of explanation for the plugin. They need to be in a path that Pd opens at startup. -
i modified the mouseup plugin, now you get the coordinates from mouseup mousedown and motion.mouse_coordinates_plugin.zip
-
any idea how to modify the plugin or the patch to specify a pd window or a canvas where i get the coordinates from? at the moment i get the coordinates from the mouseposition in every pd window.
-
I have no real agenda here apart from wishlist, but surely a mouse up event would be a necessity in any programming language and is seriously missing in Pure Data.
So here I offer yet another clunky work around where line is giving an immediate update then the y output is forced into a matrix
slider-line.pd -
You know that you can get mouseup from [iemguts/receivecanvas], right?