Picky "Hide Empty Staves" rules

• May 27, 2020 - 19:37

I'm arranging for a show choir and am trying to build a "Vocal & Piano" score. There are 4 instruments in this part: two 1-staff instruments for Solo 1 and Solo 2, a 2-staff instrument for SATB (I just renamed a piano instrument), and a 2-staff piano.
For large portions of the piece, one or both of the Solo staves are empty. For that reason, I tried using "Hide Empty Staves within Systems" to hide those staves when appropriate. However, I'm now dealing with an unintended consequence. In sections where I only use one staff of the 2-staff instruments (ie only left hand of the piano), the unused staff disappears. I'd like to maintain the grand staff for these instruments whenever at least one is used, hiding or showing them as a unit.

So my question is:
Is there a way to hide empty staves on an Instrument-by-Instrument basis instead of Staff-by-Staff?


Yes, several different ways. In your case, what I'd suggest is not using the global "Hide empty staves" option at all, but instead using the Staff/Part Property "Hie when empty: Always" for the individual staves you want to hide when empty. Then this happens even without turning on "Hide empty staves" globally. Another approach is ti go ahead and turn on "Hide empty staves", but for the piano, set both of its staves' "Hide when empty" to "Instrument", now it will only hide if the entire instrument is empty.

In reply to by Marc Sabatella

At first "Hide when empty" = instrument didn't seem to work for me, then I realised you have to set it individually on all staves for the given instrument.
BTW does "Hide when empty" = auto do anything if the global option "hide empty staves within systems" isn't turned on?
I'd actually expected "auto" should be the same as "hide when empty: instrument" when it is turned on. Or if not, then the default template staves for piano/harp/organ etc. should have this set by default, as it's very rare to see a score where the upper staff is hidden independently of the lower staff (or vice versa). It's only ossia type staves I'd expect to hide independently, or for piano music that occasionally uses more than 2 staves.

In reply to by Dylan Nicholson1

Indeed, hide when empty is per staff, not per instrument - useful for managing the various different possibilities.

"auto" means, it respects the global hide empty staves" option. Always and never means, that setting is ignored.

"instrument" means, the staff is hidden only if all staves of that instrument are empty - useful in the special case of piano in classical ensemble scores. But scores where piano is reduced to only one staff as necessary are the norm outside classical music, and there are other instruments like organ, harp, marimba, organ and others that sometimes vary between one and two or two and three staves even in a classical context. Probably the piano in any orchestral template should be set to instrument by default though.

In reply to by Marc Sabatella

Not sure I've ever seen a score where any keyboard instrument or harp normally shown as a grand staff for R+L hands could get reduced to single staff, though I'm not so familiar with non- classical scoring conventions.
Page 185 of my UE Mahler 8 study score has 4 instruments with empty LH staves as an example (there are 5 grand staff instruments playing but only Harp 2 has any LH notes).

In reply to by Dylan Nicholson1

In later-20th-C orchestral scores you do see this sometimes on very dense pages. Or even some earlier and less dense ones (Bartok Music for Strings, Percussion and Celesta, for instance, Celesta on p108ff of the old score; or Bartok 2nd Violin Concerto, Harp p13 and p16, Celesta p28, etc). So it's a valid thing to want, but should be the exception rather than the rule.

In reply to by Marc Sabatella

The existing orchestral templates don't have piano or celesta etc. though, only harp - what you really want is that when any grand-staff instrument is added to a score based off the orchestral template it automatically has the "hide when empty = instrument" option set for all staves, whereas when it's added to a popular-music-based template it should arguably be set to just "auto".
Or better, introduce a score wide setting that changes the "auto" behaviour for all such staves.

But as a very basic minimal change for now the setting for the "harp" instrument in the symphony orchestra template should be "hide when instrument empty". Then perhaps a code change that means when new grand-staff instruments are added, if any existing such instruments in the score have "hide when instrument empty" then that should be the default for new ones.

In reply to by Dylan Nicholson1

Definitely worth having a PR, but it's also good to get design input from @tantacrul and/or others on any change like that. I would say that having the behavior depend on existing instruments seems hacky to me, I like the idea of it being a score option, like hide empty staves not being a simple checkbox but radio buttons. But there is also the matter of giving control over staff hiding per-page or per-system - that's a common request, and it would be good to look at the big picture in designing any new behaviors around any of this.

In reply to by Marc Sabatella

Yes a score level option is better but obviously a much bigger change.
As for controlling hiding staves on a per- system level, absolutely - actually I'd think it needs to be a measure property ("force show" or something similar) but I don't see that as directly related. I assume there is a workaround for that (staff text with just a non- breaking space or some other unprintable character?)

In reply to by Dylan Nicholson1

What's related is that a user has a right to expect a consistent interface to how empty staves are hidden, so if two new features are added to the two existing interfaces (in Format / Style and Staff/Properties), things get complicated quickly. And add to that the fact that many people find the whole idea of "hide empty staves" to be backwards to the common use case of just wanting to add a temporary staff mid score. Best to have someone really think this all through top down, I think.

In reply to by Marc Sabatella

Don't disagree except the fact that the current default behaviour is very unexpected if you come from a classical background (or from another software package that lets you explicitly hide/show staves on a system-by-system basis). But it's a minor annoyance compared to various other issues I've been encountering.

In reply to by Dylan Nicholson1

You can select it, or almost anything, using keyboard navigation. Select the nearest note/rest then Alt+Left/Right until you reach it. Another non-obvious trick is to add another staff text to the same measure, then right-click it and Select / All Similar Elements in Range Selection.

I think people generally use actual text colored white which avoids these issues. But either way it's a hack. I have sometimes advocated a simple "not-empty" element one could add from the palette and would show some special icon, but it's hardly the only way it could be done. Having it as a property set on a break has some appeal as well, especially since there are other properties that could also make sense to put there, like "don't justify", or "allow extra measures" )to provide the ability to force more measures on a system than actually fit according to spacing and minimum note distance settings.

In reply to by Marc Sabatella

"Instrument" doesn't seem to work for me in 3.6.2. It does absolutely nothing when I apply it to both staves of a piano instrument. I had to set it to "Always" and put white (not invisible, white) text somewhere on every system where I wanted it to keep it shown. Clear Sky.mscz is an example of this, although I think I used tiny black periods and hid them in the treble clef or something.

In reply to by ThePython10110

Seems like you missed to add a text to the piano treble staff in m22-25.

1. Removed all staff texts (right click one, select all similar elements)
2. Set the "Hide when empty" range in the staff properties to Instrument for both piano and Strings staves.
3. Turned on Format > Style > Score > Hide empty staves

I believe you were missing step 3.

Attachment Size
305990-Clear Sky.mscz 18.53 KB

Open the staff properties for those piano staves (consider using men/women instead for SATB though) and change their "Hide when empty" property to "instrument".

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