Insert/remove mode that shifts the following notes - suggestion

• Nov 12, 2016 - 21:37

The issue of someone wanting an "insert/remove/shift" mode comes up fairly often. I've wanted it too. But sensible people have pointed out that "insert" in a music notation editor is problematic, owing to the tight structure that notes are embedded in. To insert notes and have all the later notes flow onto different beats, and across barlines, is a gross violation of the meaning of what you have already stipulated. The application won't and shouldn't allow it. Nonetheless, I have a concrete suggestion for how to do the insert mode. I've been thinking of it for a while, and I noticed that it is vaguely related to Marc's "scratch pad" in the second link below, but this is simpler I think, as it's all done in place. Background:

https://musescore.org/en/node/140591
https://musescore.org/en/node/123156

Note that less often, people want to do the opposite, which I will call "remove", which is different from the usual "delete", so we'll cover that too.

Here is my suggestion for "insert/remove mode":

When the user elects to go into insert/remove mode, she must stipulate the end-point to the right, of the region that will be affected. The default is the current measure, but it might be any number of bars later. When she inserts notes, a new measure is created immediately after the stipulated end point. The notes are shunted along and all the overflow spills into that new measure, without affecting the measure after that one. If the overflow measure is filled up, another one is automatically created immediately after it.

If she removes a note, they flow back from the overflow measure of course. If the overflow measure is empty, for example if the very first thing that the user does is to remove a note, then the notes of the legal region move left, opening up space (rests) at the end, but not affecting measure after the stipulated end point.

When the user is finished, she tidies up with the usual editing methods -- cut-and-paste, delete, etc.

This would have worked for my cases. What do you think? I thought it was worth mentioning as it is a simple way to manage the problem.


Comments

Do you still have an unanswered question? Please log in first to post your question.