Picky "Hide Empty Staves" rules
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?
Comments
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 Yes, several different ways… 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 At first "Hide when empty" =… 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 Indeed, hide when empty is… 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 Not sure I've ever seen a… by Dylan Nicholson1
It's ubiquitous in jazz, pop, Broadway, etc, where piano parts are often just slashes and chord symbols for large portions, expanding to two staves only where something is fully notated for both hands.
In reply to Not sure I've ever seen a… 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 In later-20th-C orchestral… by oktophonie
Right, definitely makes sense for the orchestral templates to set it one way by default, the jazz templates another. Ideally we'd also have code in the score ordering system to set it up based on that.
In reply to Right, definitely makes… 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 The existing orchestral… by Dylan Nicholson1
Also looking at the code it doesn't appear there's any way to control the "hide when empty" options in an instrument template file at all.
(I'm curious though, I can see code to write out an instrument template file, but I'm not sure how to access it from the UI?)
In reply to Also looking at the code it… by Dylan Nicholson1
Ok I've figured out how to change the code to automatically set "hide when empty" = instrument if there are any existing staves with that set, and can easily enough change the harp part in the symphonic orchestral template to have it set, worth putting up a PR?
In reply to Ok I've figured out how 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 Definitely worth having a PR… 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 Yes a score level option is… 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 What's related is that a… 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 Yes a score level option is… by Dylan Nicholson1
Hmm, non-breaking space trick works but leaves you with a text box you can't seem to select or manipulate at all?
Actually even just a regular space works, but again, I can't seem to select/edit after creating it - and can only delete it by selecting the whole measure and deleting.
In reply to Hmm, non-breaking space… 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 Indeed, hide when empty is… 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 "Instrument" doesn't seem to… by ThePython10110
Seems like you missed to add a text to the piano treble staff in m22-25.
Anyway:
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.
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".