I've been thinking about something like this lately. Selections can be a bitch to make, and it's super easy to wipe one out.
I think for selections to work as expected, every event would need to start carrying a unique identifying ID (I don't know if they do already, but I don't think so off the top of my head). Many operations delete the old event and replace it with a new one with some different properties. You perform an operation, and now half the stuff in your selection is gone, because all those events are gone, replaced by new events.
If selections could point to events by ID, the ID of the event we're about to remove could be transferred to the one we're about to create, and if you had all those notes selected before, they'd still be selected.
That would go a long way toward making selections suck less, and would probably be enough without adding all the fancier stuff.
Fancier stuff could be possible though. Selections that referred to static IDs could be saved and manipulated. Selections that refer to events by pointers can do none of these things.
I'm not going to get around to this anytime soon, but I'm starting to think about the problem of how much it sucks balls to use Rosegarden to make notation out of a MIDI file, and some idea along these lines could definitely be part of that plan of attack.
Idea worth saving. No promise expressed or implied of eventual implementation though.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've been thinking about something like this lately. Selections can be a bitch to make, and it's super easy to wipe one out.
I think for selections to work as expected, every event would need to start carrying a unique identifying ID (I don't know if they do already, but I don't think so off the top of my head). Many operations delete the old event and replace it with a new one with some different properties. You perform an operation, and now half the stuff in your selection is gone, because all those events are gone, replaced by new events.
If selections could point to events by ID, the ID of the event we're about to remove could be transferred to the one we're about to create, and if you had all those notes selected before, they'd still be selected.
That would go a long way toward making selections suck less, and would probably be enough without adding all the fancier stuff.
Fancier stuff could be possible though. Selections that referred to static IDs could be saved and manipulated. Selections that refer to events by pointers can do none of these things.
I'm not going to get around to this anytime soon, but I'm starting to think about the problem of how much it sucks balls to use Rosegarden to make notation out of a MIDI file, and some idea along these lines could definitely be part of that plan of attack.
Idea worth saving. No promise expressed or implied of eventual implementation though.