I think should voltas should always drop to first staff *unless* user holds control

• Jun 23, 2019 - 19:18

I notice I can drop a volta to a staff other than the first staff, e.g. this second ending in the second staff:

disable-per-staff-voltas-as-default-unless-hold-control.png

I think that voltas by default should always be applied to the first staff (unless user explicitly holds control), because by far the most common usage would be to apply to first staff. For those rare instances where user does want to different voltas on different staves (I don't know why but conceivably someone will have a reason why), then that ability should only be accessable while holding "control", as can be done with per-staff key signatures and per-staff time signatures.

Also I am noting that generating parts from this example actually produces incorrect part for the second part, because it seems extracting parts only looks at voltas in the first staff when generating parts: disable-per-staff-voltas.mscz


Comments

It's deliberate that subsequent voltas are ignored, that way you can repeat voltas on, for example, the first violin staff in an orchestral score. That's an important feature that we don't want to interfere with. However, I certainly wouldn't mind if holding Ctrl were necessary to make that happen. And most definitely, we should be smarter about adding voltas when the top staff is not shown (eg, due hide empty staves).

In reply to by Marc Sabatella

> It's deliberate that subsequent voltas are ignored, that way you can repeat voltas on, for example, the first violin staff in an orchestral score. That's an important feature that we don't want to interfere with.

Well I understand why it makes sense to only look at the first staff's volta when generating parts, and ignore subsequent voltas. I actually don't know of a use case there would be for having a volta on anything other than the first staff. If there is an actual genuine use case I would have to see an example. I notice that hiding the top staff with a volta seems to (correctly in my opinion) still display the volta above the first visible staff.

I notice other inconsistent behavior when dropping a volta a non-first staff of the main score with previously generated parts, then that volta doesn't appear on the particular part's score. So now the part score is inconsistent with the main score.

> However, I certainly wouldn't mind if holding Ctrl were necessary to make that happen.

This is really the only code change that I am saying to do right now. Maybe there is some bigger changes to do in future, but I'd just rather make the likely undesired behavior of having voltas on non-first staffs simply not happen (unless user explicitly forces that with control).

> And most definitely, we should be smarter about adding voltas when the top staff is not shown (eg, due hide empty staves).

So it seems there is a problem if I do drop a volta on the first visible staff when the real top staff is hidden... If I then generate parts, the volta is compeltely ignored, due to the valid rule of only applying voltas from the first staff to each part.

But that problem will be avoided by doing my proposed change that voltas will get applied to the first staff as long as control isn't held.

In reply to by ericfontainejazz

The use case for a volta on a non-first-staff is very common - they are quite often repeated above the string section in an orchestra score (as are tempo marks, etc). If you mean, a use case for the volta appear below the top without also appearing on the top staff, here there isn't an obvious example except the general idea of writing music where one staff repeats and the others don't (you're writing an ostinato on one staff but not the others). Either way, again, I agree it makes sense to require Ctrl to add it, and this indeed should fix the issue with hidden top staves.

In reply to by Marc Sabatella

> "If you mean, a use case for the volta appear below the top without also appearing on the top staff,"

Yes, that is the unusual use case I was wondering about.

Anyway, I'm looking through the code right now and will submit a fix...seems likely I will need to modify Measure::acceptDrop() to have case ElementType::VOLTA use the same or similar code as ElementType::KEYSIG and TIMESIG, as they too have the similar behavior of normally applying to an entire Measure but only a specific staff when hold control.

Do you still have an unanswered question? Please log in first to post your question.