Allow system text objects to be repeated on lower staves

• Feb 21, 2017 - 20:02
Reported version
P2 - Medium
Graphical (UI)
S5 - Suggestion

Here is a typical classical music score

system text example.png

Notice the tempo is repeated above the strings. It is normal that all system text items (tempo, rehearsal marks, rit. etc.) to be repeated above the first string shown in the score.

Here is my request. In staff properties have an option to repeat all system text above this staff. What it will do is show the system text above where this staff SHOULD be displayed, even if it is hidden. If this and all subsequent staves are hidden, then the text will be repeated at the bottom of the system. This will cause the text to be displayed above the first string staff displayed even if the first violin is hidden. If the user does not want the staff text displayed at the bottom of the system because all strings are hidden, he can make it invisible with the V key just like everything else. If you check out several scanned scores from IMSLP you will see that this is historically the norm rather than the exception.


This is probably a sufficient solution for most cases. It should be mentioned that Finale has a much more flexible - and correspondingly complex - system of defining staff lists that can be assigned to individual texts, but thus strikes me as overkill.

Either way, we need to sort out how hide empty staves would work. Probably if any staff with the "show system staff" property set gets hidden, the text should show on the next lower visible staff.

alternatively, I'm thinking it might make sense to have a hierarchy of parts, so that you could for instance group all strings together, and then could have option to repeat system text for each instrument group. I'm also noticing on this chart that there is a greater distance above the Violin 1 than regular staff distance...if had a parts hierarchy then could have could a property for distance between part groups in edit->styles.

My initial suggestion would allow for someone to put this on any staff. Your idea asks MS to decide if the user put the instruments in a standard order, or override user order and put the system text in there sounds like a problem waiting to happen. Letting MS decide just sounds like opportunities for problems that are not necessary. Another possibility is to add another feature to MS such as making the [ bracket a group identifier that would automatically have system text attached to it? I'm not really a fan of this, and I believe my method is simpler for a developer to implement.

The space between the voice and strings is already easy to implement in MS. The engraver simply put in a spacer (in MS lingo) to keep the ties from overlapping the lyrics plus a little more space for the tempo. Notice that is the only place with a large space between sections, as is expected in classical scores.

I was mainly just putting out an alternative...I can't decide right now what is the best way...maybe there will be other opinions. Although I didn't necessarily say that MS would decide for user.

I personally like the idea of letting the [ bracket identifier have a boolean variable which can be enabled to have system text display above the topmost staff in the bracket.

Also, shift+drag the violin 1 staff down to add more space before it score-wide (spacers are per system only). You can also set that extra distance in the staff properties. I don't see any need for a new abstraction here; everything necessary should be doable using existing mechanisms as far as I can see.

Taking about Finale - the tempo and rehearsal marks there don't work with staff list BUT when you start your document you can click "add vertical space" before Strings, for example, and all the tempo, repeats and rehearsal marks will be copied to that staff

Fermatas? As conductor, I would highly recommend against not putting them on every staff in the score.. But if you really want that effect, you can always add them as text already.

In reply to by ♪𝔔𝔲𝔞𝔳𝔢𝔯 ℭ𝔯𝔞𝔣𝔱𝔢𝔯♪

I don't recall seeing a classical score where all visible instruments did not have a fermata. The only problem with making it a system item is that it is not unusual for some instruments to have the fermata on an 8th note while others have it on a whole note while others still have it on a note between the two. I agree with Marc that it should be up to the user to specify where each fermata goes.

That also happens with rehearsal marks as well. Much like tempo markings, they are usually duplicated halfway down the score, so the conductor doesn't have to move his/her eyes all the way to the top to see if a mark is present whilst reading the instruments at the bottom. A not so elegant workaround for that consists of duplicating the elements you want repeated down below and making them not system wide, so they only exist in the conductor score. This solution is not so elegant because all the system-wide elements are placed at the topmost score, which require you to do some guesswork on how much you need to offset the text to get there.

Maybe an option that would allow us to set when these specific marks should repeat after 'n' systems would be interesting.

Internally, there is very little difference in how rehearsal marks, tempo text, and other "system" elements are processed. The easiest & most natural solution given the implementation would be to add a staff property that controls how system elements are treated. Right now we show only if the top visible staff. It would be pretty simple to add options like "always show", or maybe even something like "show if top staff in a bracketed group" (so for instance, viola would still show if violins were hidden because they were empty).

Ideally there would also be per-element overrides - "this particular system element should only display on top staff". Ultimately it could be possible to have a whole list of staves for each elements where you check which staves you want it to appear on, but a) that seems like overkill from a user perspective, b) I have my doubts how well it would work as you add / rearrange staves, c) it is a bigger change. But I think just having the staff property would solve a lot of this with relatively little effort.

That solves the issue with more effort :-). But it's a good suggestion too. The staff property to display system text solves that issue only, not the naming or automatic treatment of barlines.

No automatic solution yet, just the workaround of adding staff texts to the score and making them invisible in the parts. But it's definitely still on the radar and comes up in planning discussions reasonably often, hopefully someday we'll figure out a good design for this.

In reply to by minionmax

@minionmax, not offense, but Yuck! Having 50 check boxes for a Wagner Opera score in the inspector isn't a realistic way to fix this. I would suggest an option in staff/part properties that says "Show system items." The logic is that you usually only want these items repeated once or twice even in a very large score so you can pick the first horn staff and first violin staff to repeat system items (which is rather common).

A checkbox in the inspector for system items that says "Repeat this item at bottom of system" would then handle the case where the user wants system items below the system.

I've seen discussion among the developers of including this in 4.0 which means inclusion in 3.6 isn't out of the question.

The only place I know that has a checkbox for each staff is in Measure properties. The developers are looking for a way to get rid of this dialog box. There is some logic to it being there but I think there should be a better way to do this (perhaps using the timeline?). In measure properties it's just a laundry list of staff 1, staff 2 and so forth with no identification. Once again, this isn't bad for a string quartet but terrible for a large symphonic piece.

Has this been resolved yet? I've seen some software solutions have a 'system stave'. You put sytem text/markings on that stave (which is visible as a line when editing but not when printing) . You can have more than one of these in the intstruments list and an item added to the System stave will show on all 'copies' of it.

There is something in place to handle this in MU4. So far, only when using a template, and it's handled automatically in that case. No way to control this otherwise, although that could still change.

In MU4, is there a way to trick it into thinking the score was generated from a particular template? I have a score from MuseScore 3 generated from the old "Symphony Orchestra" template, and I would like to get this functionality in it without having to copy everything into a score generated from the new template.

Edit: Nevermind, I figure out that adding these lines (see screenshot) to your .mscx file adds this functionality. I just had to Ctrl-X Ctrl-V all of my system text.

Attachment Size
Screenshot 2022-12-17 160751.png 7.25 KB

Just to be clear about workaround for others:
1. You must unzip *.mscz file (rename to *.zip file if you don't see the option)
2. Edit *.mscx file with any text editor
3. Paste just after and before these lines:

4. Replace PUT_STAFF_ID_HERE with the number of staff you want to have system objects duplicates. Search for this number down the *.mscx file. For example:

<--- This is the number you need to put in this case



  Violini 1     &lt;--- This is the name of the part you are looking for</code>

5. Save *.mscx file
6. Zip everything you unzip (files and catalogues)
7. Rename *.zip file to *.mscz file


In reply to by martinanpl

Sorry, the forum does not accept plain html and deleting posts... Once again:
1. You must unzip *.mscz file (rename to *.zip file if you don't see the option)
2. Edit *.mscx file with any text editor
3. Paste just after </Order> and before <Part id="1"> these lines:

<Instance staffId="PUT_STAFF_ID_HERE" barNumbers="false"/>

  1. Replace PUT_STAFF_ID_HERE with the number of staff you want to have system objects duplicates. Search for this number down the *.mscx file. For example:

<Part id="16">
<Staff id="18">
<--- This is the number you need to put in this case
<StaffType group="pitched">
<bracket type="0" span="5" col="0"/>
<bracket type="2" span="2" col="1"/>
<trackName>Violini 1</trackName>
<--- This is the name of the part you are looking for

  1. Save *.mscx file
  2. Zip everything you unzip (files and catalogues)
  3. Rename *.zip file to *.mscz file
  4. Open with MuseScore 4