Old 08-12-2013, 02:04 PM   #1
Tod
Human being with feelings
 
Tod's Avatar
 
Join Date: Jan 2010
Location: Just outside of Glacier National Park
Posts: 13,948
Default Orphans & Parent actions..

There are certain actions that are not immediately inserted into the Undo list. I call these 'Orphaned' actions because they can be 'adopted' by other, unrelated 'Parent' actions. And, when the adopting Parent action is undone, the Orphaned actions are undone also.

I'm not sure how many actions there are that create Orphan events but there are at least a few. Some plugins can create orphans (depending on on their compatibility settings). For example, using the default compatibility settings, most of the check boxes in ReaEQ, like the Enabled box for each EQ tab as well as the Show tabs, Show grid, and Show phase on the bottom are Orphan actions.

Below is a picture of ReaEQ showing the Enabled box checked along with the default Compatibility settings.



Note that Save minimal undo states is unchecked in the Compatibility settings. The significance of this will be explained later.

The link below shows how checking the Enabled box in ReaEQ does not add any undo events in the Undo History.

https://stash.reaper.fm/17446/ReaEQ%2...%20Bug%201.gif

There are several Parent actions that will 'adopt' these Orphaned actions. One such action is Insert new track. Below is a gif showing how Insert new track affects an Orphaned action (unchecking Enabled in ReaEQ).

https://stash.reaper.fm/17447/Orphan%...2BUndo%202.gif

Notice how undoing the Insert new track also undoes the Orphan ReaEQ Enable checkbox.

Another FX that creates Orphan actions is the VSTi, Kontakt 5, however Kontakt 4 does not seem to suffer from this. These FX orphan sources that have been discovered so far, will stop producing orphans if Save minimal undo states is checked in their compatibility settings.

However, there are other actions (for example various actions in the Midi Editor) that also create Orphans and changing compatibility settings will not correct the problem for these. There are no doubt other such orphan sources that will be discovered.

So what is the significance of this problem and reason for this post....? in a word: ReaScripts

The number of actions identified so far that can function as parents and adopt these orphans are few in number. Unfortunately, ReaScripts is one of them and running any ReaScript (even an empty one) will adopt orphans that may exist at the time. This can be particularly annoying when you create a macro that executes a simple ReaScript and then Undoes it (which is often done in order to prevent cluttering the undo queue). An example of such a macro would be running a ReaScript that functions as an intelligent Play/Stop action and then undoing the ReaScript: Run placed in the Undo list.

ReaScripts are such a great resource for Reaper but this annoying problem unnecessarily limits their usefulness. So my appeal to the devs is to just make ReaScripts function like most other undoable actions that do not adopt Orphans.

Last edited by Tod; 08-12-2013 at 04:42 PM.
Tod is online now   Reply With Quote
Old 08-13-2013, 05:23 PM   #2
Big Bob
Human being with feelings
 
Big Bob's Avatar
 
Join Date: Feb 2013
Location: Apple Valley, California
Posts: 84
Default

+10

ReaScripts will be ever so much better when they no longer pick up stray hitchhikers Indeed, this is a most annoying 'feature' of ReaScripts.

Bob
__________________
The Heavens Declare the Glory of God
Big Bob is offline   Reply With Quote
Old 08-13-2013, 05:46 PM   #3
James HE
Human being with feelings
 
James HE's Avatar
 
Join Date: Mar 2007
Location: I'm in a barn
Posts: 4,450
Default

It would be a problem....


but I never make a mistake...



HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA !HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!H A!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA!HA! HA!HA!HA!HA!HA!HA!HA!


kidding/


+1
James HE is offline   Reply With Quote
Old 08-14-2013, 12:29 AM   #4
EvilDragon
Human being with feelings
 
EvilDragon's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 24,595
Default

Yes, indeed I have noticed this happen sometimes. It's quite annoying.
EvilDragon is online now   Reply With Quote
Old 08-14-2013, 08:03 AM   #5
XITE-1/4LIVE
Human being with feelings
 
XITE-1/4LIVE's Avatar
 
Join Date: Nov 2008
Location: Somewhere Between 120 and 150 BPM
Posts: 7,968
Default

Just wanted to say thanks to Big Bob for jumping into Reaper.
A most valued scripter from K2 era forward.
I feel very supported knowing you and DragonMan are nipping at the Heels of developers.
__________________
.
XITE-1/4LIVE is offline   Reply With Quote
Old 08-14-2013, 11:59 AM   #6
Tod
Human being with feelings
 
Tod's Avatar
 
Join Date: Jan 2010
Location: Just outside of Glacier National Park
Posts: 13,948
Default

Thanks for the replies guys..

I realize that this isn't a problem that will catch the eye of most individuals or even if they understand it. However, if Justin or schwa see this thread, please consider fixing this, it would help with ReaScripting and give it much more flexibility.
Tod is online now   Reply With Quote
Old 08-15-2013, 03:59 PM   #7
Tod
Human being with feelings
 
Tod's Avatar
 
Join Date: Jan 2010
Location: Just outside of Glacier National Park
Posts: 13,948
Default

Here's a little vid showing how Kontakt 5 acts as an Orphan.

https://dl.dropboxusercontent.com/u/...20Prob%201.gif
Tod is online now   Reply With Quote
Old 08-18-2013, 01:21 PM   #8
Tod
Human being with feelings
 
Tod's Avatar
 
Join Date: Jan 2010
Location: Just outside of Glacier National Park
Posts: 13,948
Default

One thing I'm discovering is that Orphan actions are either actions that are supposed to be undoable but are not getting recorded in the Undo History under certain conditions, or, they are actions that are not supposed to be undoable but still wrongly become orphan actions anyway.

The following is with Time Selection which is undoable because I have it selected in Preferences/General to be undoable. I also have Toggle loop points linked to time selection (On).

Steps to setup the project.

>Add a track and then insert 4 or 5 empty midi items 1 measure long, spaced 1 measure apart.

>Create the regions by running the action, Markers: Insert separate regions for each selected item.

Watch how changing the Time Selection is being recorded in the Undo History, which is as it should be.



Below is a picture of a toolbar and associated actions I've setup to illustrate how Time Selection becomes an Orphan.



Notice now how clicking on the toolbar buttons adds nothing to the Undo History even though the Time Selection is being changed.




In this gif you can see that Changing Time Selection can indeed become an Orphan.

>First I click on the toolbar 3 times which changes the Time Selection 3 times, but doesn't get recorded in the Undo History.

>Then I Insert a New Track which creates a Parent action.

>Then I undo the Insert New Track and see how the Time Selection goes back to the first region.

Tod is online now   Reply With Quote
Old 08-19-2013, 05:29 AM   #9
Big Bob
Human being with feelings
 
Big Bob's Avatar
 
Join Date: Feb 2013
Location: Apple Valley, California
Posts: 84
Default

Yikes, now region selections are going to be lost whenever I run and then undo a ReaScript?

Hey devs, please neuter ReaScripts so they can't adopt orphans that are floating around. These Reascript hitchhikers are getting very annoying.

ReaJoice,

Bob
__________________
The Heavens Declare the Glory of God
Big Bob is offline   Reply With Quote
Old 08-21-2013, 10:36 AM   #10
Tod
Human being with feelings
 
Tod's Avatar
 
Join Date: Jan 2010
Location: Just outside of Glacier National Park
Posts: 13,948
Default

Hi Bob, I know you've got some great ReaScripts just waiting in the wings.

Hopefully the devs will see this and come to our rescue.
Tod is online now   Reply With Quote
Old 08-26-2013, 06:08 AM   #11
Big Bob
Human being with feelings
 
Big Bob's Avatar
 
Join Date: Feb 2013
Location: Apple Valley, California
Posts: 84
Default

Yes indeed. The ability to customize Reaper with macros and scripts would be far more valuable if the devs would just make a few improvements in the way the Undo system works.

The way it is now, there is no way to exclude a custom macro from the Undo list. The ability to do this would be extremely valuable. For example, I have a lot of macros that provide various forms of intelligent transport control. However, these macros include a few undoable actions and as a result, whenever you use such a macro, these undo events clutter up the Undo list.

The same problem exists with ReaScripts. Even when a script doesn't execute an undoable action, running the ReaScript itself creates an undo list entry. So, to avoid cluttering up the undo list, macros and scripts have to be written to undo their own clutter. But such auto undos will invariably undo unrelated 'orphan actions' which seem to pop up everywhere.

If the devs could add a simple checkbox (in addition to the Consolidate undo points box) that would allow us to exclude a macro's execution from the Undo list, we could avoid having to write macros that undo themselves. Further, if such an 'undo-excluded' macro could be used as a 'wrapper' for a ReaScript, then that would solve the ReaScript issue as well.

It's a real shame that ReaScripts always generate an undo item and that ReaScripts also adopt orphans. This is a lethal combination that I truly wish the devs would address.

To be continued ... ??
__________________
The Heavens Declare the Glory of God
Big Bob is offline   Reply With Quote
Old 08-26-2013, 06:53 AM   #12
EvilDragon
Human being with feelings
 
EvilDragon's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 24,595
Default

I think, rather than "Exclude macro from undo list" checkbox, a better solution would be a checkbox that ignores undo blocks of commands contained WITHIN the macro.

So, if in your custom command you use some actions that are logged in undo history, these would be overridden, and instead only undo of the custom command itself would be logged (provided "Consolidate undo points" is checked).

Opinions?
EvilDragon is online now   Reply With Quote
Old 08-26-2013, 08:05 AM   #13
Big Bob
Human being with feelings
 
Big Bob's Avatar
 
Join Date: Feb 2013
Location: Apple Valley, California
Posts: 84
Default

Quote:
So, if in your custom command you use some actions that are logged in undo history, these would be overridden, and instead only undo of the custom command itself would be logged (provided "Consolidate undo points" is checked).
I don't think that would accomplish what I want. I don't want the macro to create an Undo event either.

For example, suppose I create a macro that performs the Play/Stop function (but also does something else like saving the start and end cursor positions in memory so they can be recalled later by other macros). Now, when I execute this new Play/Stop macro, I don't want it put in the Undo list (no more than I would want the simple Play/Stop action itself cluttering up the Undo list).

It's quite possible that the macro itself may contain normally undoable actions but what I would like is the option to exclude the entire macro (and all its components) from creating any undo events.
__________________
The Heavens Declare the Glory of God
Big Bob is offline   Reply With Quote
Old 08-26-2013, 04:35 PM   #14
Tod
Human being with feelings
 
Tod's Avatar
 
Join Date: Jan 2010
Location: Just outside of Glacier National Park
Posts: 13,948
Default

Quote:
Originally Posted by Big Bob View Post
It's quite possible that the macro itself may contain normally undoable actions but what I would like is the option to exclude the entire macro (and all its components) from creating any undo events.
Heh heh, well that brings us back to my original request, to add No undo points to our macros.



You can vote here.

http://forum.cockos.com/project.php?issueid=4730

This would basically solve all our Orphan and UnDo probems, at least I think so.
Tod is online now   Reply With Quote
Old 08-27-2013, 12:35 AM   #15
EvilDragon
Human being with feelings
 
EvilDragon's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 24,595
Default

I think it shouldn't be a checkbox, it should be a radio button. You can't have "Consolidate undo points" and "No undo points" active at the same time. They should both be converted to radio buttons.
EvilDragon is online now   Reply With Quote
Old 08-27-2013, 07:05 AM   #16
Big Bob
Human being with feelings
 
Big Bob's Avatar
 
Join Date: Feb 2013
Location: Apple Valley, California
Posts: 84
Default

If they are radio buttons, won't there have to be 3 of them? We still need the equivalent of the current Consolidate box unchecked.
The Exclude checkbox might be OK with the understanding that it will override Consolidate or that Consolidate is ignored when there are no undo events. Or maybe just gray-out the Consolidate box when the Exclude box is checked?

However, as long as we have the two current options plus the ability to Exclude the entire macro from the Undo queue, I vote for any combination of checkboxes or buttons that will accomplish that

ReaJoice
__________________
The Heavens Declare the Glory of God

Last edited by Big Bob; 08-27-2013 at 08:41 AM.
Big Bob is offline   Reply With Quote
Old 08-27-2013, 01:38 PM   #17
Tod
Human being with feelings
 
Tod's Avatar
 
Join Date: Jan 2010
Location: Just outside of Glacier National Park
Posts: 13,948
Default

Quote:
Originally Posted by EvilDragon View Post
I think it shouldn't be a checkbox, it should be a radio button. You can't have "Consolidate undo points" and "No undo points" active at the same time. They should both be converted to radio buttons.
Good thinking ED, I never stopped to think about that.

Quote:
Originally Posted by Big Bob View Post
However, as long as we have the two current options plus the ability to Exclude the entire macro from the Undo queue, I vote for any combination of checkboxes or buttons that will accomplish that
Yes, I'll have to think about this, maybe replace my picture and do a littl editing.
Tod is online now   Reply With Quote
Old 08-30-2013, 05:43 PM   #18
Big Bob
Human being with feelings
 
Big Bob's Avatar
 
Join Date: Feb 2013
Location: Apple Valley, California
Posts: 84
Default

Bump

I'd sure like to see this fixed!
__________________
The Heavens Declare the Glory of God
Big Bob is offline   Reply With Quote
Old 09-03-2013, 04:31 PM   #19
Tod
Human being with feelings
 
Tod's Avatar
 
Join Date: Jan 2010
Location: Just outside of Glacier National Park
Posts: 13,948
Default

Quote:
Originally Posted by Tod View Post
Good thinking ED, I never stopped to think about that.

Yes, I'll have to think about this, maybe replace my picture and do a little editing.
So here's some Radio buttons that might work a little better.



I also updated the FR.

http://forum.cockos.com/project.php?issueid=4730

Last edited by Tod; 09-03-2013 at 04:41 PM.
Tod is online now   Reply With Quote
Old 09-05-2013, 06:04 AM   #20
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 14,336
Default

Quote:
Originally Posted by Tod View Post
There are certain actions that are not immediately inserted into the Undo list. I call these 'Orphaned' actions because they can be 'adopted' by other, unrelated 'Parent' actions. And, when the adopting Parent action is undone, the Orphaned actions are undone also.

I'm not sure how many actions there are that create Orphan events but there are at least a few. Some plugins can create orphans (depending on on their compatibility settings). For example, using the default compatibility settings, most of the check boxes in ReaEQ, like the Enabled box for each EQ tab as well as the Show tabs, Show grid, and Show phase on the bottom are Orphan actions.

Below is a picture of ReaEQ showing the Enabled box checked along with the default Compatibility settings.



Note that Save minimal undo states is unchecked in the Compatibility settings. The significance of this will be explained later.

The link below shows how checking the Enabled box in ReaEQ does not add any undo events in the Undo History.

https://stash.reaper.fm/17446/ReaEQ%2...%20Bug%201.gif

There are several Parent actions that will 'adopt' these Orphaned actions. One such action is Insert new track. Below is a gif showing how Insert new track affects an Orphaned action (unchecking Enabled in ReaEQ).

https://stash.reaper.fm/17447/Orphan%...2BUndo%202.gif

Notice how undoing the Insert new track also undoes the Orphan ReaEQ Enable checkbox.

Another FX that creates Orphan actions is the VSTi, Kontakt 5, however Kontakt 4 does not seem to suffer from this. These FX orphan sources that have been discovered so far, will stop producing orphans if Save minimal undo states is checked in their compatibility settings.

However, there are other actions (for example various actions in the Midi Editor) that also create Orphans and changing compatibility settings will not correct the problem for these. There are no doubt other such orphan sources that will be discovered.

So what is the significance of this problem and reason for this post....? in a word: ReaScripts

The number of actions identified so far that can function as parents and adopt these orphans are few in number. Unfortunately, ReaScripts is one of them and running any ReaScript (even an empty one) will adopt orphans that may exist at the time. This can be particularly annoying when you create a macro that executes a simple ReaScript and then Undoes it (which is often done in order to prevent cluttering the undo queue). An example of such a macro would be running a ReaScript that functions as an intelligent Play/Stop action and then undoing the ReaScript: Run placed in the Undo list.

ReaScripts are such a great resource for Reaper but this annoying problem unnecessarily limits their usefulness. So my appeal to the devs is to just make ReaScripts function like most other undoable actions that do not adopt Orphans.
These settings are not in fact stored in the project, but are a global setting for the plug-in. They do not apply to other plug-ins immediately, though, only once the plug-ins are reloaded (the plug-in you have visible does get the setting immediately). We could have it do an undo point for that plug-in immediately, I suppose, but these are really supposed to be used rarely enough that it shouldn't be too much of an issue.
Justin is offline   Reply With Quote
Old 09-05-2013, 06:07 AM   #21
EvilDragon
Human being with feelings
 
EvilDragon's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 24,595
Default

But how about this issue which is influencing ReaScripts (and MIDI editor actions that don't register in undo queue, it seems), Justin? That was the main point Tod was trying to bring.
EvilDragon is online now   Reply With Quote
Old 09-05-2013, 06:35 AM   #22
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 14,336
Default

Quote:
Originally Posted by EvilDragon View Post
But how about this issue which is influencing ReaScripts (and MIDI editor actions that don't register in undo queue, it seems), Justin? That was the main point Tod was trying to bring.
Which actions aren't getting added to the undo queue? Ones that purely affect the project but aren't added should be reported, yes. In this case, ReaEQ should notify REAPER that its state has changed on clicking these checkboxes. So I guess the OP needed to make this clearer, i.e. "no undo point is added when I click the ReaEQ checkboxes"...
Justin is offline   Reply With Quote
Old 09-05-2013, 06:42 AM   #23
EvilDragon
Human being with feelings
 
EvilDragon's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 24,595
Default

Tod, onwards to hunting actions which aren't reported to undo queue!


Related issue: http://forum.cockos.com/project.php?issueid=4917
EvilDragon is online now   Reply With Quote
Old 09-05-2013, 07:18 AM   #24
Tod
Human being with feelings
 
Tod's Avatar
 
Join Date: Jan 2010
Location: Just outside of Glacier National Park
Posts: 13,948
Default

Quote:
Originally Posted by Justin View Post
These settings are not in fact stored in the project, but are a global setting for the plug-in. They do not apply to other plug-ins immediately, though, only once the plug-ins are reloaded (the plug-in you have visible does get the setting immediately). We could have it do an undo point for that plug-in immediately, I suppose, but these are really supposed to be used rarely enough that it shouldn't be too much of an issue.
Quote:
Originally Posted by EvilDragon View Post
But how about this issue which is influencing ReaScripts (and MIDI editor actions that don't register in undo queue, it seems), Justin? That was the main point Tod was trying to bring.
Thanks for the reply Justin, ED is right, the problem is that ReaScripts are acting as Parent actions for these Orphan actions. As I mentioned above:
Quote:
Originally Posted by Tod View Post
One thing I'm discovering is that Orphan actions are either actions that are supposed to be undoable but are not getting recorded in the Undo History under certain conditions, or, they are actions that are not supposed to be undoable but still wrongly become orphan actions anyway.
I haven't completely gone through to see which actions act as Parents, but here is just a few Parent actions that do not affect Orphan actions.

Change media item selection
Insert New MIDI Item
Insert Empty Item
Split Items


Just a few Parent actions that do affect Orphan actions.

Add New Track or Duplicate a Track
Paste Routing
Paste FX


A good fix would be to make it so that ReaScripts are not Parent actions.

Another fix which might be the better one is to add No Undo Points to the build custom action window.

Tod is online now   Reply With Quote
Old 09-05-2013, 07:53 AM   #25
Big Bob
Human being with feelings
 
Big Bob's Avatar
 
Join Date: Feb 2013
Location: Apple Valley, California
Posts: 84
Default

To illustrate the biggest problem I have with the way things are now:

Let's say I write a ReaScript to perform some fancier version of Play/Stop (let's just say all it does besides execute the Play/Stop action is to 'remember' the cursor's stop position). Now, when I use this Reascript, I don't really want it to be added to the undo list, anymore than I would want the Play/Stop action to be added to the undo list.

However, in the absence of this improvement requested by Tod:

Quote:
Another fix which might be the better one is to add No Undo Points to the build custom action window.
I have to try to arrange it so the ReaScript is undone as soon as it does its action with an unconsolidated macro like:

FancyPlayStop
Undo

This keeps the undo list from getting cluttered up but then we run into the Orphan undo event problem. This is why we need Tod's other request:

Quote:
A good fix would be to make it so that ReaScripts are not Parent actions
In fact, why do ReaScripts have to be endowed with the ability to adopt orphans when so few other actions are able to do that? Most undoable actions will not adopt orphans but unfortunately ReaScripts always do. So if there are any orphan actions floating when a Reascript is run, undoing the Reascript will also undo the orphans.

Of course if there were no orphan events this problem would vanish but I suspect there are good reasons for the existence of orphans. For example I suspect that the short-lifetime orphans like those in the MIDI editor are there to allow consolidation.

But, the fact that Reascripts are always put in the undo queue and that Reascripts always adopt orphans is a serious degradation of their usefulness.

Please (pretty please) fix this in some way!
__________________
The Heavens Declare the Glory of God
Big Bob is offline   Reply With Quote
Old 09-25-2013, 06:28 PM   #26
Big Bob
Human being with feelings
 
Big Bob's Avatar
 
Join Date: Feb 2013
Location: Apple Valley, California
Posts: 84
Default

Hey Justin,

I want to thank you from the bottom of my heart for whatever you did to improve the ReaScript undo situation. I just noticed that in V4.51 and V4.52, ReaScripts are no longer put in the undo list without good reason.

It now looks as though scripts are only put in the undo queue when they execute undoable actions or as a proxy for any orphans kicking around when the script is run. This is considerably better behavior than that which existed in V4402.

So, Hip, Hip, Hooray, Kudos and all that sort of stuff. You have made me very happy indeed

God Bless,

Bob
__________________
The Heavens Declare the Glory of God
Big Bob is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 03:06 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2022, vBulletin Solutions Inc.