Create a whiteboard or scratchpad mode for note entry.
This discussion started at https://musescore.org/en/node/297404#comment-960595
It's time to seriously look into a whiteboard mode for note entry. With the release of version, an insert mode was added to the available note entry modes well as the ability to insert note from step-time mode by press ctrl+shift+notename.
The result of this is the ability to easily insert notes and create random length measures. What is not easy is turning these random length measures into standard length measures. One additional shortcoming to these insert methods is the lack of the ability to add rests to the measure. You can only add notes.
The first thing to look at is how to insert rests into a measure. Using the most logical shortcut of ctrl+shift+0 is problematic for a couple of reasons. On windows systems with a numeric keyboard, this is the same as pressing ctrl+insert and brings up the insert multiple measures. If you press ctrl+shift+0 on the alphanumeric keyboard the result varies by country. There seems to be about an even split between ) and 0 as the result of pressing shift+0 for most layouts, there are other results such as " and something resembling the segno symbol in other countries. The good thing is that I don't see any conflicts with existing shortcuts. On windows systems with a numeric keyboard, MuseScore knows if you pressed a key on the numeric keyboard or alphanumeric keyboard, so redefining ctrl+shift+0 on the numeric keyboard would be simple either as a default or if done by the user. I don't know how this might affect Mac and Linux users, so feedback from some of those would be appreciated.
In short, I believe the problems of using ctrl+shift+0 as the shortcut to insert a rest can be overcome and should be used in both step-time and insert modes.
The next thing that needs to be done is to fix irregular measures. My proposal for this is to use a modifier such as alt+shift when you add a time signature redraw all measure boundaries to the next time signature. This key combination may change or even vary from one platform/language to another if necessary.
Using 4/4 as an example. If there is only a 12 beat measure, inserting a time signature would simply redraw the barlines so the 12 beat measure would be changed to 3 4 beat measures. If there is a measure duration that is not divisible by the time signature, 4 in this case, measures would be drawn from left to right according to the time signature and the final measure would be padded at the end to give it 4 beats. This is similar to what currently happens if you have 2 4/4 measures followed by a time signature and you put a 3/4 time signature in the first measure. You will get 3 3/4 measures with rests padding the end. If there are various length measures, then all measures would be redrawn with 4 beats, inserting barlines as needed padding the final measure if necessary.
There are a couple of situations that would need to be considered. First is tuplets. I can think of a few options that could be done in the case of tuplets that would end up crossing a barline.
- refuse to allow the time signature to be entered similar to what happens if you currently try to paste a tuplet across barlines. Including the problem measure number would be a nice addition to this info box. - I included this option only to show my thought process. It's a terrible option.
- calculate how to split the tuplet between the measures and create a tuplet on each side of the barline. For example, a 1/4 note triplet that is split exactly in half would be turned into 2 8th note triplets with a tie inserted between the two measures to retain the entered rhythm. This logic would be rather simple to carry out across multiple measures if necessary.
- make as many measures according to the time signature as possible then stop at the measure with the "illegal" tuplet. There are two options at this point. Either create an irregular measure that keeps the tuplet in tact then continue processing measures in 4/4 time as possible or simply stop processing the measures at that point leaving everything after the illegal measure unchanged.
In my opinion, either 2 or 3 would be the best option stopping measure processing at the problematic measure (option 2) so the user can make needed adjustments. An info box explaining why processing stopped would be a nice addition. Something like "measure 4 (staff 3) contains a tuplet that would cross a barline, measure adjustments stopped at measure 3".
No matter which method is used, ties must be considered. If a tie exists in the original measures that crosses a barline it should be reduced as possible (for example, a 1/2 note tied to a 1/4 note would become a dotted 1/2 note). If the tie does not cross a barline, it should be kept as written if possible. Of course, if a barline is inserted in the middle of a note, it will be split and a tie added to maintain the rhythm.
More discussion of this is very welcomed
Comments
Thanks for starting this discussion. Some additional thoughts:
In this mode, do we really want to use Ctrl+Shift shortcuts at all? Shouldn't it just work more like insert mode? But also, support inserting rests? Or are you suggesting it's not a mode, but soemthing that can be done to converting an irregular measure into regular measures regardless of how ti got that way?
We also need to supporting deleting notes/rests while in note input mode (both step-time and insert, also i "whiteboard mode" if it's truly separate
Finale does this thing where it allows you to insert extra notes in a measure, then as soon as you leave the measure, it asks you what you want to do with the notes. It's kind of annoying, actually, but maybe something similar could make sense specifically for "whiteboard" mode and thus eliminate the need to know special techniques for splitting the measure up later
Being able to add barlines in note input mode would be quite useful in this context. So, insert some notes, then insert a barline and it splits the measure there, then you can start insert notes into the next measure, etc.
Regarding Ctrl+Shift+0, we could simple disable the insert measures shortcut in note input mode, then there would be no conflict
In reply to Thanks for starting this… by Marc Sabatella
In insert mode, there needs to be a way to advance the cursor without inserting a rest (IMHO), so pressing 0 would advance the cursor (change the next note/rest to a rest of the selected duration). I believe leaving the current insert mode as is would be the best route except to add ctrl+shift+0 to insert rests in insert and step-time modes.
Deleting notes and rests is already supported by pressing ctrl+delete, there is no need to change this.
Creating a shortcut to insert a barline after (or before) the currently selected note would be a great improvement and make the whiteboard mode useful as an advanced editing option though it could not replace the ability to redraw measures based upon an inserted time signature.
I don't think the whiteboard/scratchpad input mode should be a special input mode selected, but rather integrated into the current note input system. While in insert mode, the only thing really missing is the ability to insert a rest at the current location if you decided you need it between existing notes and fixing barlines. If the user decides to use the shortcuts to insert notes and rests, they can then quickly fix the barlines either by using the shortcut for inserting a barline or by adding the time signature. I think this addresses the concerns we get most often from users about not being able to move notes from a certain point forward and also address the concerns about how far notes should move. I neglected to say that the measure redrawing would be to the end of the score if no time signature is encountered, but I believe that's obvious.
On the subject of barlines, if there is going to be an add barline shortcut, there should also be a remove barline shortcut. I realize that there is join measures, but this is rather cumbersome while inputting notes in an insert mode. I think adding and deleting barlines would replace join and split measures. I would suggest that ctrl+\ be insert a barline and ctrl+shift+\ (= ctrl+| on windows in the US) be the remove barline shortcut. Since you can ctrl+drag a barline to insert one, I suggest that ctrl+delete be extended to delete barlines also.
As you said in the other discussion, most of this already has code written that can be used for this, it's just a matter of creating the UI (shortcuts/menu items) to make this doable.
In reply to In insert mode, there needs… by mike320
Advance cursor... Yes but why do you want 0 to do that and not the arrows??
In insert mode, as Marc said, just pressing 'a' must insert a a. '0' a rest. Please no ctrl shift
In reply to Advance cursor... Yes but… by frfancha
If you have a half rest and want an 8th rest, you should be able to press 4 0 to change the next rest to an 8th rest then you can continue entering notes or rests as needed. To insert a note and a beat in step-time you can press ctrl+shift+notename and a note of the selected duration will be entered. It's logical to me that ctrl+shift+0 would enter a rest of the selected duration. There needs to be a method to enter a rest without adding beats to the current measure, so I suggest the current press 0 makes a rest continue to work unchanged. This is for consistencies sake.
In reply to If you have a half rest and… by mike320
You want to combine insert and overwrite possibilities which would generate complex shortcuts.
If you need to temporarily overwrite notes/rests in insert mode, just delete them.
If you need more overwrite operations and 'delete first' becomes an nuisance, just switch to overwrite mode again.
In reply to You want to combine insert… by frfancha
One of the oft-expressed wishes is for such a mode to work "just like pencil and paper". Pencil and paper doesn't have an overwrite mode (well, I suppose you can draw a rest on top of a note or vice versa, but ti looks a mess, you would normally delete the old one first. So to me expecting a "replace" seems not really relevant - or maybe that could be done with Ctrl+Shift. But in any new mode created around this idea, I'd expoect normal commands to insert. Which is why I wonder if it needs to be a separate mode at all.
In reply to One of the oft-expressed… by Marc Sabatella
@Marc: Agreed!
In reply to One of the oft-expressed… by Marc Sabatella
That's what I said. Why create a new mode. Keep the existing modes and add a couple of capabilities. There is no need to change the current workflow. We just need a way to insert a rest which is currently possible only by inserting a note and pressing delete - yuk!
In reply to That's what I said. Why… by mike320
That's not what I said.
I expect normal keys to add notes, not needing cumbersome key combinations.
Whiteboard/scratchpad would help.
But really, that is only half a solution, and more complex than the one really needed.
What we need is an insert mode.
In insert mode notes and rests that you add are "inserted" instead of overwriting existing notes/rests. The rest of the music is just moved, and one can see the impact on the barline.
-what must we do when notes are put across barlines? Just split them with a tie. When the note is moved again the tie disappears.
Just that ! Not more, would already help a lot!
Possible enhancements (but please keep in mind 80/20 rule, and KISS principle).
-add possibility to mark a point in the score until which notes must be moved instead of simply end of score
-add possibility to mark "fixed points" in the score, place for which you are sure that you don't want to move them. Notes would be moved up to these points only.
-make distinction between "true" ties (the ones introduced by the user) and "false" tie (the one created by moving notes across barlines). Only "false" ties would disappears by moving notes
-allow to select what to move: just the edited voice, all notes, chords, lyrics,...
In reply to Whiteboard/scratchpad would… by frfancha
By the way, Dorico has successfully implemented an insert mode.
One should look at it.
In reply to Whiteboard/scratchpad would… by frfancha
The concept of marking the score in some obscure way to indicate where the whiteboard is limited to is no better than what I suggest. The basis of my suggestion is keep what we have, but improve the capability.
In reply to The concept of marking the… by mike320
First that marking points in the score is something that can be implemented later on.
Second MuseScore is perfectly able to "mark" points in the score very clearly., such as with flags for repeats from play panel. So there would really be nothing "obscure" in that.
I only skimmed the discussion/request, but above by a scratchpad mode I think on similar like this: https://www.youtube.com/watch?v=7KSyrX6GV-4. I didn't check the application, don't know if it works very well and maybe the same won't be possible one-to-one with MuseScore (and probably it's another approach).
I've been thinking more about this and what people have been requesting related to this. One thing that is missing from the proposal is a method to enter the note, then adjust the rhythms.
In a manner similar to using ctrl+shift+notename currently inserts a note, perhaps ctrl+shift+# should change the duration of a note without leaving a rest between notes or intruding on the next note. Perhaps this could act as an quasi insert. So if someone were to fill a measure with 8th notes, select all of the notes and press ctrl+shift+5, all of the notes would turn into 1/4 notes and the duration of the measure would change to 8 beats. In a like manner, pressing ctrl+shift+3 would change the notes to 16th notes and set the duration to 2 beats. Added to the numbers, you could press ctrl+shift+. to add a dot to the current duration. Note that if the note is dotted when one presses ctrl+#, any existing dot should be eliminated, if a dot is desired follow this with a ctrl+shift+. I think consistently using ctrl+shift to adjust the duration of a measure will make discoverability of this feature greatly increased.
If there is a barline in the selection, the barline would remain after the same note it started at. This means that several measures may have their durations affected of course. When used in conjunction with the new time signature feature, the measures can easily be fixed after changing durations.
In reply to I've been thinking more… by mike320
Right, good point, definitely that needs to be there. Again, we could conceivably add such a command without a whole new mode, and that would actually have some value too
In reply to Right, good point,… by Marc Sabatella
I agree. My proposal would work in both insert and step-time modes. None of these should affect real time or repitch modes. I lean towards none of this affecting rhythm mode, but a well thought out plan on including it there would be welcomed.