Local time signature change results in corruption
P2 - Medium
S3 - Major
1. Choose Piano empty template and create score with 4/4 default time signature.
2. Right click on time sig and change it actual and displayed value to 8/4. Repeat for another staff.
3. Switch to note entry mode and start to add quarter notes.
4. Measure length is drawn as 3/4 - see screenshot.
Kubuntu 14.04 64 bit, Windows 7 64 bit.
This issue appears on July 28
- This Nighlty is correct: 882df06
- Not this one: 69923ea
So, the cause is probably in this commit? : https://github.com/musescore/MuseScore/commit/ec344a3cf9a4b2dd682f658c3…
For fix this issue: #25876: Local time signatures have incorrect beaming and can cause score corruption
Note that the next day, another commit also deals with the same issue (#25876) : https://github.com/musescore/MuseScore/commit/bc891168eb43e459685a7c045…
But the nightlies of this day ( July 29) and later (July 30 etc.) fail on the original question of this thread.
EDIT: Note also that it works if you Create a new Time Sig (6/4 ou 8/4, whatever, same result) via the Master Palette -> Add -> Drag and drop in the TimeSig palette.
To sum up (and it's the current behaviour):
- It works by drag and drop (or double click) when the TimeSig is already included (has been added) in the palette.
- It fails via the first process (by selecting the 4/4 TimeSig -> Time Signature Properties -> change Actuel Value, and Text etc.)
FWIW, changing actual duration for all staves in this way doens't actually make sense. If you want you shoudl measure properties to change the time signature for all staves. Changing this way would be specifically to make different staves have different time signatures - same as ctrl-drag of time signatures to specific staves. Although even so, I'm kind of surprised you are allowed to do it this way - ctrl_drag is the "normal" way of doing this relatively uncommon operation.
But on the other hand, neither should it cause score corruption, and this counts as corruption, not just bad layout. Since it only happens on an operation one would normally never perform, I'm marking this major rather than critical.
Note that in my tests, I never used two staves, and therefore never twice the operation to change the time sig via Time Signature Properties, as performed in the first message. Once was sufficient for understanding the issue as summarized in the comment # 1.
Fixed in 31ac3821ad
Automatically closed -- issue fixed for 2 weeks with no activity.
I currently revisit all the bugs that I've contributed to report in one way or another
I reopen this one because it is not completely resolved.
Produced with 2.0 RC / Windows 7.
1) Open "My First Score"
2) Click right on the 4/4 time sig -> Time Signature Properties
3) Change Actual Value (4/4 -> 8/4), and change Text Appearance (also 8/4) -> Ok
4) Drag and drop a 4/4 time sig in the second measure -> fill this measure with some notes.
EDIT: notice that if you save and reload your score after the steps #2 and #3, and then apply the step #4, the result is correct as you can try in the attached file: test time sig.mscz
- A variation: with this file: test 2.mscz
1) Same "My First Score"
2) Fill the third measure with four quarter notes
3) Repeat the steps #2 and #3 of the first scenario (change actual value to 8/4, etc.) ->Ok
Result: this warning appears:
- Why it is referred to a local time signature (I never use the Ctrl key)?
- Measure is not empty? Measure or system or score?
Now, from this warning, hit OK:
Result: corrupted score
My understanding is that changing the "actual value" for a time signature *is* the same as creating a local time signature. If you have a score with multiple staves, changing this value will only affect that staff.
I think we should consider not allowing this field to be edited. I think too many people will mistake it for a "normal" way of changing time signature and thus create problems for themselves. If you want to change the time signature to 8/4, you should create an 8/4 time signature using the master palette and add it to your score, not change the properties of an existing time signature.
So that explains the dialog box. But of course, it still shouldn't corrupt your score.
So what you are actually doing here is first creating a local time signature (8/4 that applies only to this staff), then changing the global time signature within that. There is still an open bug about this - it used to crash, not it doesn't but creates corruption apparently:
#41796: Crash when adding a Global time sig into a measure which is in Local time sig
Can you check to see when this problem occurred? I can probably save you some trouble: it is most likely to have been around February 25 when the partisl fix for that other bug was introduced, or around March 12 when fixed a different corruption involving changing time signature and full measure rests just before the RC, or else it's been this way a long time.
I see the same behavior (with the two scenarios) on this Nightly on February 24: 201c75c
So, before the partial fix of this issue: #41796: Crash when adding a Global time sig into a measure which is in Local time sig
After further investigation, it is a former issue.
Same result for the first scenario with this Nightly of June 28: c24022f
For the second scenario, with the same Nightly, I get:
I have disabled the editing of the actual (local) time signature in this dialog, since a) it doesn't work correctly and b) it isn't what people think it is anyhow. As far as I know, this was meant to be a way of setting *local* time signature for a particular staff - an alternative to ctrl+drag, or a way of editing the local signature once added. But I think people are trying to use this to add time signatures not that are not on the palette (eg, 7/4), not realizing they are really making a local time signature change only, and that the correct way to add a new time signature is to create one on the master time signature palette.
At some point of course, it will be nice to enable this again for the sake of people who *do* need more flexibility with the local time signature feature, but it will be importanbt to fix the bugs, and more make it more clear that this setting is *not* to be messed with unless you really do want a local time signature.
I can not edit global value for the time signature, they are disabled. Is it expected?
In reply to I can not edit global value… by Anatoly-os
You've never been able to edit the global value of a local time signature. If you want that changed, insert a new time signature. This would lead to a whole new set for problems for the programmer if you adjust it for a single staff.
A few terms to clarify here, although I won't swear they are always used consistently. Warning: my knowledge is mostly based on 2.x, but I don't think this has changed much.
The term "global" isn't normally used, we see it in the time signature properties dialog but it's read only, maybe best to pretend that term doesn't exist :-) As per my comments, I disabled it - I think was this probably a matter of days before release of 2.0 - so prevent people from attempting to use this as a way of changing the basic time signature of a piece (eg, they would try right clicking the 3/4, change global to 5/4, and expect to act as if they had added a real 3/4 at that point, and it didn't work that way at all).
The term "nominal" time signature applies to a measure, and it is the time signature that is actually in effect based on the previous time signature element. So, if there is a 4/4 at some point in a score a score, then all measure up until the next time signature is encountered have a "nominal" time signature of 4/4.
The "actual" time signature also applies to a measure, and it is the time signature that applies to that measure only if its duration has been modified either through measure properties, the old join/split commands, or - as of 3.0 - inserting or deleting barlines.
The term "irregular" applies to a measure, and it applies to any measure whose actual time signature differs from the nominal.
The term local applies to staff. It means the time signature for that staff differs from the time signature for other staves at that same point in the score. Eg, piano RH in 12/8, piano LH in 4/4. This is created by holding Ctrl while adding a time signature to a staff - the time signature is added to that staff only.