I have been using Audacity for a while and the more I use it the more I like it and think it is very powerful. Greatly appreciate the effort involved in developing this, and also continuing to improve and support it.
Please forgive, if this has been mentioned before.
What I would find most useful is the tracking of effects …in each track. Separately. So, a list, or similar, of the effects…just in that track.
And Undo, for each individual track…not as a universal, one by one, having to back out of everything done until you reach the desired undo in the track you would like.
That makes me crazy, too. But. The way Audacity creates UNDO is, in many cases, to save a copy of the whole show. The frozen moment in time. You can’t arbitrarily go back to a single change made ten minutes ago amid a blizzard of other changes, because there is no whole show to go back to.
I understand other editors apply changes In Real Time by reading a list of changes as you play the track. It’s a snap to change the list.
In some cases that is not possible.
An easy example:
Import some audio. Creates the first track.
Apply an effect to the track. Modifies the data in the first track.
Duplicate the track. Note that this is almost instant because it only requires adding pointers in the AUP file. The data in this new track is the same data as in the first track.
Undo step 2 only. This will fail because the second track is pointing to the same data as the first track, so changing the data in the first track will also change the data in the second track.
OK so it would be possible for step 4 to make a new copy of the data from the first track for the second track, and then undo step 2. What happens if we undo the undo? (redo step 2). Does this return the project to it’s former state? No, because we now have a copy of the data from track 1 as well as the actual data from track 1.
Note that this is just one example of what could go wrong. To implement the proposed idea it would be necessary for the developers to anticipate every possible way that it can go wrong, and devise workarounds for every case. Miss just one and a user could end up with a project in an invalid state and lose the entire project - something that we try very hard to avoid.