[PD] enhance pd-extended with pd-l2ork featues ?

Jonathan Wilkes jancsika at yahoo.com
Tue Jan 22 04:05:36 CET 2013





----- Original Message -----
> From: Ivica Ico Bukvic <ico at vt.edu>
> To: Jonathan Wilkes <jancsika at yahoo.com>
> Cc: 'Roman Haefeli' <reduzent at gmail.com>; "pd-list at iem.at" <pd-list at iem.at>
> Sent: Monday, January 21, 2013 1:16 AM
> Subject: Re: [PD] enhance pd-extended with pd-l2ork featues ?
> 
> On 01/21/2013 12:15 AM, Jonathan Wilkes wrote:
>>  Also see the end of:
>>  http://www.youtube.com/watch?v=wTPZxcgWoI0
>> 
>>  When undoing the creation of an object or objects, at some point Pd-l2ork 
> will move
>>  the object to the place where the mouse happened to be hovering when the 
> user clicked
>>  <ctrl-1> to get an empty box dangling from the mouse.  But the user 
> never actually
>>  anchored the object there-- they only anchored it somewhere once they 
> clicked the
>>  mouse button.  Thus, your undo history erroneously adds an object placement 
> event
>>  that was never performed by the user in the first place.
>> 
>>  Theoretically the corresponding undo event should make the object dangle 
> from the
>>  mouse again, but that's of very little practical value and would just 
> bloat the undo
>>  history with an extra step for every object in the chain.  Instead this 
> event should
>>  simply not be added to the undo history.  I don't know the innards of 
> pd well, but those
>>  "dangle" events should all have a single "0" as a 
> coordinate so maybe you can check
>>  for that.
>> 
>>  -Jonathan
>> 
>> 
> That is not a bug. That is how pd instantiates objects. As soon as your cursor 
> touches canvas, it will instantiate an object at the last known cursor position 
> (if the cursor is off-canvas) or next to mouse cursor and then enable motion for 
> the object to follow the cursor until a mouse clicks (there is an exception when 
> autopatching in which case motion is not enabled, but that is not relevant to 
> this example). So, if you create an object without having a mouse on canvas, 
> then move mouse onto it, the object will instantiate where you had your cursor 
> the last time and then immediately move (since the startmotion was triggered) 
> next to your cursor once you've positioned it back over the canvas. So, in 
> essence there are 2 steps undo is keeping track of. Yes, this addition adds 
> extra step but is a lot easier to manage than coming up with yet another 
> exception on how the editing works. Doing what you suggest could easily 
> obliterate undo and annoy user when they do series of undos and then suddently 
> the object is back hooked onto mouse and the next thing you know, the undo has 
> rebranched since it assumes that the user is now wanting to do something new 
> from that spot onwards making them lose forward undo history. This is all 
> because pd first instantiates objects, then asks question where the object 
> should go. While ideally this one step could be skipped, it would require a 
> fairly hefty rewrite for a mere skip of one undo step...
>

For each object the user instantiates through the "Put" menu or keyboard shortcut,
they end up with an entry in the undo history they are guaranteed _never_ to
use and which they almost certainly understood as a transient patch state since the
object had a _blue_ outline and was dangling from the mouse in the same way it dangles
from the mouse when they left click and drag (which itself is a transient patch state).
That means when making a new patch, for every n object that is not autopatched the
user must view n patch states on their way to the beginning of the history that never
actually existed by the rules of the graphical interface.  I'd call that a recurring nuisance
that is not unlike an insect sporadically greeting different parts of your head by buzzing
around it.

More practically: when the user is one step away from the history to which he/she
wants to return, he she has a $n/$undo_count*100 chance of being two steps away.

-Jonathan



More information about the Pd-list mailing list