Full measure rests should not be used for incomplete measures

• Jun 10, 2010 - 18:14
Type
Functional
Severity
S2 - Critical
Status
closed
Project
Tags

Steps to reproduce bug
1. Create a new score
2. Right click on the first measure and choose "Measure Properties"
3. Change "Actual duration" to 1/4

3. Change "Actual duration" to something different from the "nominal duration"

Expected behavior: Full measure rests should change into a quarter note rest to indicate that the measure is incomplete

Actual behavior: Full measure rest remains unchanged.

Discussion: A full measure rest should never be used on a measure that contains an "actual duration" that differs from the "nominal duration". Marked as critical because it means a loss of information for the musician reading the part (who would otherwise miscount the measure)

MuseScore version: 0.9.6 stable

(Operating System: Windows 7)

reported previously, including: http://musescore.org/en/node/5995


Comments

Actually, this has been happening for me with any of the measures. It changes the number of ticks during play time, but not the actual rests. And in the trunk version, the number of notes that you can put in doesn't correspond to "actual duration" (what I mean by this is, if you change it to 5/4, you can still only put in 4 quarter notes, even though there are 5 ticks on playback).
Is there a reason to have an "actual duration" selector in the measure properties? Would it be better to select the first measure as a pickup bar and only change the actual duration for that measure? You can change the duration of the other measures by changing their time signature.

This bug report is related to the branch ad 0.9.6 version. The trunk is in development mode so you can expect to find a lot of issues.
Regarding actual measure, there are other use cases such as a short measure at the end of a repeat or at the end of a score.

I do not think this is a bug at all.

I found both the 'actual duration' stuff in general and the specific detail of using a full rest for measure of altered length very useful in transcribing ancient music where the concept of measure is much more fuzzy than today conventions imply (but I am sure there are other applications).

When I need to specify the actual rest duration, I can always fill the measure with specific rests; otherwise I simply leave the full rest provided by the program.

So, I find the current situation completely satisfying.

M.

Miwarre, can you show an example of when you would want to use a full measure rest but change the actual duration to something other than the nominal?

Thanks lasconic for you comments.

I also forgot that I've seen sheet music where the time signature appears above the staff, typically in music where the time signature changes often, in order to keep the measures from getting cluttered. Would it be worth allowing the user to place the time signature anywhere? For example, they could place the time signature above the score, sort of as an image without effecting the score, and then change the actual time signature using the measure UI.

@ZsXBox please use the forum for this type of discussion.
I don't get your point about time signature above the staff but if you need it you can move the time signature by double clicking it and using the arrow keys of your keyboard.

Current status. As of today, in MuseScore development version 0775f63c60 we still have the same behavior. If you change the actual duration of a measure, the full measure rest remains. However if you select the measure and press Del, the measure rest changes to a set of rests for the actual duration. There is no way back.

It seems like half a step in the direction of the initial bug report and not very user friendly. Is there any argument against the use of the actual duration rests instead of the full measure rest? Please speak out.

@Miwarre do you have an example?

My impression is that I want different behaviors in different situations. In the case of an ordinary 4/4 song that just happens to have a one beat pickup, I need that first measure to have actual duration 1/4 and a quarter note rest. But there are any number of situations where somewhere in the interior of a piece I might need to change actual duration for some reason or other but still show the full measure rest. So whichever way the default goes, I want it to be possible to convert to the other, and back again.

I have no solid evidence as to which situation is more common. I think for me personally, the latter situations are probably more commo, but I deal with relatively complex music in which the need to change actual time signature is not all that rare. I suspect for most people, though, that won't be true - pickup measures will be the only case in which they will ever change actual time signature. And I must admit on at least one occasion in a multi-part score I've forgotten to change the full measure rest in the pickup to a quarter rest in my parts.

So, I would propose the ideal behavior is that the act of changing the actual time signature of an empty measure should automatically insert ordinary rests to fill the measure, but that after that, the measure should behave normally - you can select and delete those rests to replace them by a full measure rest, go back and enter normal rests again, etc.

But if the default were left as it is - full measure rest remains and you need to enter the normal rests manually - that wouldn't be the end of the world. Just so long as it is possible to go back and forth.

SUMMARY

Pickup measures to appear correctly by default, but add a shortcut (Ctrl+0) to create full measure rests.

FULL DETAILS:

I've actually witnessed a number of rehearsals where a portion of the band or orchestra came in a measure late because of this problem. (Finale happens to make the same mistake). Composers/arrangers frequently forget or doesn't notice they need to do this extra step.

With regard to creating full measure rest, it would be best to have dedicated shortcut (maybe Ctrl+0) that creates full measure rests. Ideally the shortcut would work in both note entry and selection mode. To explain why this is the most helpful approach here are a few use cases:

1. PICKUP MEASURES (and shortened measures at the end of a piece to balance a pickup)
For pickup measures the user never wants a full measure rest. Since pickup measures are very common, even for beginning users of MuseScore, it is helpful if the pickup rests appear correctly by default. Note that a user may select and delete notes from a pickup measure (to move the notes to a different staff for example). It is helpful if pressing delete doesn't ruin the timing of the pickup measure by inserting a full measure rest (as MuseScore 1.0 or earlier did)--hence the suggestion for a dedicated shortcut other than the Delete key.

2. UNMETERED MUSIC
Unmetered music was often written before time signatures were invented. Since MuseScore doesn't really support arbitrary measure lengths, advanced MuseScore users manually change the actual duration for each measure. On multi-staff scores sometimes one staff needs a full measure rest while another staff has a note duration that differs from MuseScore's nominal time signature. If support for unmetered music is developed in the future (probably far future) it would eliminate the need to manipulate the actual duration (but that is a topic for another post)

3. WRITTEN CADENZA
A cadenza temporarily abandons the time signature for a single measure but as with unmetered music (above) it is necessary to specify the actual duration in MuseScore. While one instrument plays the cadenza all the other instruments in the score need full measure rests. Cadenzas are relatively infrequent so it isn't terrible to enter the full measure rests one-by-one for each staff using note entry mode, but it would be more convenient if you could select the measure in several instruments and press Ctrl+0 and replace the contents of all the selected measures with a full measure rest (in voice 1).

4. WHOLE MEASURE RESTS IN VOICES 2-4
Whole measure rests in voice 2 are often needed when two parts share a staff, or during cue notes. Currently it is impossible to insert a full measure rests in voices 2-4. But a dedicated shortcut in note entry mode would enable this possibility.

I tried to number the use cases from the most frequent (1) to the least frequent (4). Of course individual users will differ from the broader population (for example, my past few works in Finale encountered number 4 more than 1 through 3, but this is probably not representative of the general MuseScore population)

One last note about the choice of shortcut. I suggested Ctrl+0 for the shortcut since 0 is already associated with rests in note entry mode. Another possible shortcut is the equals sign (=) since it vaguely looks like a rest (hyphen is closer looking but it is already used for flats). I also considered adding a "full measure rest" button to the toolbar, but I suspect it would be too easy to confuse with the normal rest button. Therefore its probably best to have a shortcut only.

[Ctrl] - 0 makes sense to me, Could it be extended to include multiple measures? Could it also be made to toggle between full-measure rests and, say, quarter-note rests: this would be helpful when entering notes into a piece with multi-bar rests selected as currently I sometimes enter a few measures of quarter-note rests just to avoid automatic multibar-resting of a section whilst I plan note entry and the shape of a piece of music.

On a purely selfish level, with my current UK keyboard layout I use the # key for sharp, the apostrophe key for flat. I assign the = key for "natural" and the hyphen for "beam start" so please don't steal those keys. On a general level, I think that commands that change things like this are best as [Ctrl]-something to avoid accidental changes. It also fits in well with the old [Ctrl] - Z, X, C, V ethos.

underquark, I recommend that Ctrl+0 only be used for full-measure rests rather than toggling between full-measure rests and previously entered measure contents.

In current versions of MuseScore you can already select a series of measures containing quarter rests, press Delete key, and it changes to a multi-measure rest (assuming "Create Multi-measure Rests" is turned on).

There are better ways that MuseScore can solve your particular use case than have a Full-measure rest shortcut unexpectedly create something other than full-measure rests--but that is really a topic for another thread. Here's one possibility: http://musescore.org/en/node/3183

ChurchOrganist: see the rational for "critical" in the original post. This is loss of information and time for a whole orchestra, not just loss of information and time for a single person working with MuseScore.

I've just been checking the current behaviour.

If you change the actual time signature, selecting the bar and pressing delete converts the full bar rest into those of the exact rest duration.

It seems to me, therefore that the problem is fixed?

Provided this is documented in the handbook I don't see a problem.

Regarding forgetting to change pickup measures surely the operator should take some responsibility for ensuring the rests are correct?

My only slight concern is that adding new instruments doesn't reflect the state of the rest(s) in the pickup bar.

If the steps to avoid a crash were documented in the handbook, we would still consider it critical (even though the operator can take responsibility to avoid the crash).

If developers choose to downgrade the priority I suppose that is up to them, but I as still think it is critical.

I think he was making an analogy: just because a behavior is documented doesn't mean it's acceptable. Not sure I agree in this case, though. There are lots of opportunities for users to shoot themselves in the foot by entering their music incorrectly and therefore handing out incorrect parts. It is up to the person using the software to enter his music correctly. If you want a rest of an explicit duration - whether an incomplete measure or not - it is up to you to enter it.

Now, I can see why one might hope MuseScore would create normal rests of the proper duration *automatically* in this particular use case. It is indeed a convenience that saves you the trouble of entering an explicit rests - something that would understandably be an easy thing to forget.

Still, garbage in, garbage out, as they say. MuseScore can't be held responsible for automatically doing everything a user might forget. I'd only advocate it if it were the case that this were *always* the desired behavior. And it pretty clearly is not. So changing the default would just inconvenience users wanting the current behavior. Either way, the default is going to be what you want sometimes and not other times. So no matter what the default is, the person entering the music is going to need to look to see how the rests are handled and decide if he wants to change it or not. That's just plain unavoidable.

So there is no way I could possibly consider this critical, but I'll not play that game with the priority field.

However, it remains true that while you can currently get from full measure rest to normal rests by selecting and hitting delete, there is no way to go back. *That* definitely feels wrong. And given that in ordinary measures, delete does the exact opposite - converts normal rests to full measure rests - it seems to me the solution here is pretty obvious. Setting an empty measure to something other than the nominal duration should fill it with normal rests, which you can then delete and replace with a full measure rest exactly as you can for normal rests you entered manually.

To me, this is the right behavior for *consistency* reasons. It happens to convenience David's situation while inconveniencing Miwarre's, but as I said, there's no way the default can satisfy both, and at least this solution has the advantage of consistency: Delete removes normal rests and replaces them with measure rests always.

Unfortunately that doesn't solve the whole issue. It will create the "correct" rests when adding new instruments but changing the actual duration of a measure will not set the correct rests. Moreover, there would be no way back if the user does want a full measure rest. Currently there is a way to have the right rests or a full measure rest.

What do you mean by "changing the actual duration of a measure will not set the correct rests"? I interpret that to mean "the length (len()) of the rest is not set by the duration type" that's true, but the length of the rest is correctly set further down (line 1132). (And I've tested adding notes after adding a new instrument, and they add/subdivide correctly).

For the second issue - to me, these feel like orthogonal issues. When a score is created, the pickup measures are set to the given duration, and not to full measure rest status. For consistency, new instruments should behave the same way.

Changing a rest to a full-measure rest after the fact seems like a new feature to me, but I'm working on implementing it, and I should hopefully have an updated pull request later today.

Upon further review, I see what you mean - there are three separate issues here. Adding new instruments, changing the "actual duration" for the measure, and converting an actual-duration measure to use a full-measure rest. I will see if I can get all three working.

Okay, I believe I have all three situations working consistently now. The key combination to invoke "set as full measure rest" is Ctrl-Shift-0 (chosen because I would expect Ctrl-0 to reset the zoom to initial, even if it doesn't currently).

It works as follows: the selection must be one or more whole measures and can include multiple staves. Any measures consisting only of rests in the selection will be converted to a full measure rest, no matter what the current time signature / measure length are. Measures that do not contain only rests are skipped.

Looks good. The only thing that is not working for me is the shortcut, Ctrl+Shift+0 is not working on my french keyboard. It's Ctrl + shift + Insert if I want to use the keypad. Since Del empty the measure, and Ctrl + Del delete it, what about using Ctrl + Shift + Del for the full measure rest?