setting id from notifications triggers undo steps
In this example i am attempting to observe the devices on the selected track. I have inserted a deferlow between the middle outlet of [live.path live_set view selected_track] to [live.observer devices].
The deferlow object is triggering an Undo step called ‘Change’ in the Undo History of Live whenever I select a new track, which is undesired, however when there is no deferlow object it doesn’t report the devices whenever I select a track due to the ‘Setting the ID cannot be triggered by notifications.
Is there any way around this?
----------begin_max5_patcher---------- 483.3ocuTEriaBCD8r4qvhyDDl.AzppJ09aTUgLvrItKXircHY6p8euFaHMY KIKpMcuLfeyL1u4Md7KdH+RwQP4ie.+MLB8hGBYgF.PiqQ9sziUMTkMLeNbP T9C+.mKMbTagqgGAYi3vjCVsE1D5JRRxDJeeKi2.Z6VQFAeTv0bZKXS3KRFs A+UQS8Y4H1qeaRcTc0NFeagDpzN9uJNOMLJ.mXsowCVRdXD96i431F8ycfKA e+StF3fh8SqCRTXz.5qddClfEJLsfRQ2B+gx7InsS+7mmUXRmUXhu2BSRjUR HtOoQ1Ea9vTlx8ZsfOq.r4l2LVdEtNyVZqH1OwQS1qWgkT9VSU9WTNWYBng0 CghREH6AItF5YUlIq4J5r6WWO980DmkPVx7Pvs57ivJZOTWXpDyIUP0ZIyze cugfNoXH+hNPpXJMvqb6fE2J02SA2T36vC+Un.MtmAGvJnwPMCG0RZ0Sy1Ax ueOHs986.tKkj7rE1AtnKTIZDRm2nvz0YwooAy9G4r88FCs1XLZG+sO6aKfA 7K6DJwdY0D8NodXxoypFTZFmpYlQ7yix7nO92LZGqtFrALcOpkU2IXb8HMtx n3xY0lKNuqwp7OXVksHVkdgh9+mUIKhUY+Crxr3UueAkYKu+ -----------end_max5_patcher-----------
I recently came upon this issue, and have a solution (possibly a workaround, you decide)
The ‘change’ that is registered in Live’s undo history is in fact the ‘change of id’ that the live.observer object is observing, i.e. every time you send an ‘id x’ message to live.observer, an event is added to the undo history
You can prevent this by opening the inspector for live.observer and unchecking the ‘Use persistent Mapping’ option under the ‘live.observer’ tab. Without using persistant mapping, you can send ‘id x’ messages without generating entries in the undo history
The problem with this, however, is that you lose live.observer’s ‘persistant mapping’ functionality, i.e. the live.observer object won’t remember what it was observing if you close/reload your set…. In your example patch, however, this isn’t an issue as you are dynamically generating an ‘id x’ message from the live.path object when the patch loads.
Finally, the reason you are not seeing an undo event generated when the patch does not have the deferlow is that the ‘id x’ message is ignored by live.observer ( ‘Setting the ID cannot be triggered by notifications’), i.e. no undo event is generated because the ‘persistant id’ of the live.observer is not changed
Hope that makes sense/helps