-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
add "a Tempo" in the Tempo palette #15563
Conversation
In regards to the comment of automatically picking up the tempo; to the developer who works on this: keep in mind that users will expect that to update automatically by default as well, but also to be able to manually select a tempo. Perhaps by default a checkbox titled "Detect tempo automatically" should be ticked by default, which then updates with changes to the score, and users can uncheck that and do whatever they want. |
I added The checkbox will be there for every TODO:
|
I've run tests manually of all functions, but it's not obvious what I could do as automated test. |
Regarding UX, maybe the additional @CombinedAtom @randoguyname @Tantacrul opinions? |
The French translation doesn't belong into this PR. |
Just tested this. Nice work! If you mean that the functionality should read the characters 'a tempo' and only then apply the correct logic, I would advise against that. We have generally agreed to avoid trying to deduce intent from written text due to how unreliable it is - and how it needs to localise if a different language is chosen. I think having a checkbox (enabled by default) that you can disable makes more sense. Sorry if I've misunderstood your question. I actually like 'Restore previous tempo' setting and I think we should get rid of 'follow written tempo'.
A few points which I think will help the whole thing feel a little easier to understand:
Then I think we're good! Thanks very much. I'll review again when you're done. |
@Tantacrul We can't simply remove the "follow written tempo" functionality, because that also has implications for normal tempo markings (because the new "a tempo" item is in fact just a tempo marking, and therefore it shares its properties widget with normal tempo markings). So we need to design a widget that would work well with both "normal" tempo markings and "a tempo" markings. How about something like this? (OBVIOUSLY, the "metric modulation" option should not be there yet, but I've added it to convey the point of this design) |
Can we not just have different options for either thing, since the user won't care about what goes on under the hood? I'd rather leave any discussion of other kinds of tempo markings (other than 'a tempo') out of this. For example, I definitely do not think an 'a tempo' marking should be as complex as this. If the user wants to set something complex as a metric modulation, they shouldn't be using 'a tempo' to do it, no? However, a fully-realised tempo marking probably should have these kinds of options. My point is that we should show or hide certain options based on the outward purpose of the marking, rather than the internal similarity. |
Of course I understand that, but unfortunately it isn't that easy. The problem is that MuseScore has no way of distinguishing an "a tempo" marking from any other tempo marking (with this implementation). Comparing the text is no option, because who says that the user will call this item "a tempo"? They might also write "Tempo I". So anything about comparing text is not more than a fragile heuristic. Beside that, from a user point of view, I wonder whether "a tempo" should get a different treatment at all. If it did, then a strange situation would occur when the user changes their mind and changes the text from "a tempo" to an explicit metronome marking. MuseScore would still think that it is an "a tempo" item, because it was initially created as such, and thus it displays the "a tempo" options, while the user thinks that it is just a tempo item, and wonders why the Inspector displays a different set of options than for any other tempo item. Instead of just changing the text, the user would need to remove the "a tempo" item and add a new normal tempo marking. So I guess the main question is: would a user intuitively expect that "a tempo" is a different kind of item than any other tempo marking and therefore you can't change one into the other without deleting and re-adding? |
I think the case of someone changing 'A tempo' to a metric marking is an unlikely thing to happen - and there are ways we could avoid that confusion (by giving an 'A tempo' object an explicit 'A tempo' name in Properties, for example) However, let me narrow my issue with UX in this implementation:
The illogical extra option is not worth the benefit of an 'a tempo' marking. I think they have to be separate objects. |
Actually, to be a little clearer: I don't necessarily think they need to be different objects. Just that they need different options to appear in the Properties panel. This implementation requires that the comprehensibility of tempo markings take too much of a hit. As it stands, I think this solution can't be used, unfortunately. I do appreciate the explanation though @cbjeukendrup. |
Okay. @rtbo I suggest to implement this in the following way:
So:
Then, you'll need to create separate Inspector views for "a tempo" and normal markings. To see an example of how you can create different views/models based on the properties of an item, you can start by looking at |
I'm not sure to get the UX right. What options are to be proposed for the "a tempo" mark? Either the user can override the tempo to a specific one, in such case the same options as regular tempo apply:
Or the user don't have this choice, in which case there is no option to display at all. ( In either case, I would change the "Tempo" section name by "Restore previous tempo (a tempo)" for clarity for the user. |
I would have one option
|
95426a7
to
f4342c0
Compare
OK, given that you have the word 'specific' twice. I think we can simplify this. I'd change the second title from 'specific tempo' to just 'tempo'. I get what you are saying about the checkbox but it's no biggy. We never created a checkbox / title component like that before. |
src/inspector/view/qml/MuseScore/Inspector/notation/tempos/TempoSettings.qml
Outdated
Show resolved
Hide resolved
I've rebased the PR on master. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks very good! A few minor comments.
src/inspector/view/qml/MuseScore/Inspector/notation/tempos/TempoRestorePreviousSettings.qml
Outdated
Show resolved
Hide resolved
src/inspector/view/qml/MuseScore/Inspector/notation/tempos/TempoRestorePreviousSettings.qml
Outdated
Show resolved
Hide resolved
A rebase is needed again... |
It is a completely painless and conflict-free rebase, I guess you could rebase and merge in one step. I'll submit a new PR (even if only for the tests to run), see #18017 |
This reverts commit c945a2d.
Not needed because "a tempo" was not merged in MS 4.0.x
- "a tempo" restores the previous tempo - "tempo primo" restores the initial score tempo
following comments from cbjeukendrup
@cbjeukendrup @Tantacrul I've just quickly tested this (macOS only) and it seems to be working well. |
Just drop the "Restore" (both actually)? "Previous tempo" or even "Prev. tempo" might be enough, as should be "Initial tempo" |
Ah, so "A tempo" and "Tempo primo". Better indeed. |
@rtbo if you're able to make those brief section heading changes I suggested above, I think we'll be able to get this one past the post for the next release. @cbjeukendrup @Tantacrul FYI. |
It's what you see in the Properties panel when multiple elements of different types are selected in the score. |
and "restore primo" for "tempo primo"
use AbstractItemModel::makeKey instead
1524b3d
to
8127da0
Compare
I've given this a final test on macOS. All good to go from my end. |
Aims to provide "a Tempo" text mark to reset the tempo after a gradual change. At the moment it is a simple tempo text that defaults to 120 BPM and can be edited to whatever the user wants.
It is already better than present situation, but I'd prefer the item to automatically pick-up the tempo prior to previous gradual change.
Don't really know how to achieve this though.