-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[MU4] proposed fix #297458: implement "apply input state" command #5505
[MU4] proposed fix #297458: implement "apply input state" command #5505
Conversation
Resolves: https://musescore.org/en/node/297458 The new behavior of the accidental commands in note input mode is mostly an improvement, but sometimes one needs to apply an accidental to a note that is already entered (eg, the most recent note). While you can use the arrow keys to change pitch, they cannot be used to enter courtesy accidentals. This commit adds a new command, "apply input state", that looks at the accidental state and applies it to the current note. Because it is easy and also useful, it does the same for duration. Normally after entering a note, the duration state matches the note, and the accidental state is cleared (NONE), so this command does nothing unless you explicitly press the accidental or duration button first. The intended use is, a user enters a note, realizes too late it has the wrong duration or is missing an accidental, so he changes the duration and/or accidental using the toolbar commands but this of course doesn't affect the current note, just the next one. The new command simply applies his change retroactively. It does it by checking the InputState. If the accidental state is not none, it is applied to the current note. If the duration is not the same as that of the current note, it is applied as well.
Hey Marc, I think the idea of applying input state is a nice idea as a sort-of 'back-up' plan for people getting acclimated to the 'toggle-first' necessity. Didn't check the code, but it seems appropriate to have the accidental toggle be toggled-off after an application of "apply input state" in my opinion. Update: After checking code, it looks like you toggled-off afterwards :) Then again, the argument could be made that one need only 'exit' note entry mode and then can apply using the same regular shortcuts, so it depends on how you look at it as to its worth. The fact that it also would apply to duration makes it that much more useful, though not sure if it would feel natural to utilize it without some practice. |
All of those are good points. I would add though that exiting note input mode is less than ideal because you need to renter it again, so it’s three extra clicks total. On the other hand, I’m pretty ambivalent about this whole PR. It’s an interesting idea but I have no idea if it’s really something people would use. |
Yeah, that's understandable. Personally am getting acquainted to the new input method as time goes on. Just like with the [next/previous system] commands you saw, I know I would use it and will use it when copying scores into MuseScore even if it doesn't merge (can always make my own builds of releases with it in), but I don't know how many other people would actually find a use case for it depending on their workflow habits. |
Crazy idea I'm developing: what if the duration change didn't just change the duration in the usual way, but actually worked more like how "insert note" or "remove selected range work" - pushing the subsequent notes later/earlier, adjusting measure duration? Could be a simple solution to the problem of rewriting rhythms. Thinking about that further... |
Rebase is needed here (if this PR is still actual) |
Well, no one seemed all that enthusiastic about it. And there is further talk about the ability to change durations in a manner that moves subsequent notes earlier/later, probably this could be combined with any such proposal. So I don't see much point of keeping this open. |
I'm reopening this for two reasons. One, it still bugs me that I can't easily apply accidentals retroactively using the toolbar. But more importantly, the duration bit is starting to sound a little like an "issue of the moment" based on several different forum discussions centering around use of the "R" command. Basically, some people coming from Sibelius have stumbled on a workflow where they use R to repeat the previous note, then adjust its pitch and duration. It's perceived as being more "intuitive" in some cases even if it is objectively less efficient than simply typing letter names (I could imagine using this, for instance, copying an existing part written on alto clef, which I read only with some effort). The new command I have hear solves both problems at once with a single command. Upside of this for 3.x is, no risk since nothing changes if you don't use the command. Downside is, new command means new strings, new documentation. So maybe we are ruling things like this out for 3.5, but maybe could be considered for 3.5.1? And yes, I know there are merge conflicts I need to resolve in any case. |
Hey Marc, any news about the idea of maybe having duration changes act like what you mentioned in the past?
It'd be interesting to try. . . |
No news, it was just a few bits of conversation here and there, mostly in the context of talking about what a “scratch pad” mode might look like. |
So this is for 3.x, "MU3", not (anymore) for master, "MU4". So a) the base branch and b) the title is wrong. And c) it still needs a rebase ;-) |
I don't think it's worth updating as is. I do think this would be a fantastic facility to provide, but this may or may not be a desirable way to do it from a design standpoint. I'll let the core team consider whether a way to retroactively apply accidentals and/or durations in note input is worthwhile and how it should work if so. |
Maybe rebase on top of 3.x (first)? |
I'd still like to see some discussion of the feature from a UI / design / usability standpoint first. Now that there is already a command to retroactively apply an accidental, this feels much less needed. Also, I've hit on the trick of using Q,W (in that order) as a quick way of retroactively applying whatever duration command I just gave. |
Unfortunately, this PR was completely ignored by the in-house team (and now it can't be merged because it's based on the MS3 code). Please reopen if you still think that this new shortcut could be useful (and assign @bkunda to check it from the UX perspective) |
@MarcSabatella check Jojo-Schmitz#136 for a backport into my 3.x branch/fork |
I do still like the idea of this command, although indeed it could use some design input and maybe there are better solutions. I've updated the description here and will see about actually recreating it in MU4 when I have a moment. |
Resolves: https://musescore.org/en/node/297458
Currently in note input mode, most toolbar commands work "proactively" - to set the stage for the next note entered, as opposed to "retroactively" on the just-entered note, But sometimes you do actually want to modify the note you just entered - in particular, to add an accidental or to change duration. There are ways of accomplishing the desired result (Shift+Q/W for duration, Up/Down for accidentals) but they aren't as they don't do the same thing the actual toolbar commands would have done.
Rather than trying to address this by two versions of each toolbar command as was originally done for accidentals - one that acts proactively and one retroactively - this PR simply takes the current toolbar state and goes ahead and applies it retroactively.
So for instance if you type "G" and get a quarter note G then realize, shoot, I meant to have it be a whole note, and be G#, just do the whole note and sharp command normally to set the toolbar state, then issue this new command to retroactively apply that to the just-entered note.
Note: this code was written for MU3 and would need to be updated for MU4. It should probably also consider the articulation buttons and perhaps others. But I have reopened it to get feedback on the idea and see if it's something we want to move forward with, or perhaps to to design a different solution.