Engraving improvements in MuseScore Studio 4.4
New features
Anchors
Main implementation: Issue 16796 / PRs 21633 & 23174
Items such as dynamics and text no longer have to be attached ('anchored') to a note or rest, but can also be attached to rhythmic subdivisions within any duration. They will remain fixed at these rhythmic positions even as the layout changes.
This means it is now simple to achieve notation such as this (crescendo for two beats, diminuendo for two):
A special 'end of duration' position can be used to achieve notation such as this:
The 'end' position is actually available for any subdivision, so you can even achieve things like this, if you need to:
The available anchor points are shown when Shift is pressed when relevant types of item are selected. By default, points are available every half beat (according to the prevailing time siganture; for example, in 4/4 they will be every eighth note). They are visualised in an alternating dark/light pattern:
To be able to work with these effectively, there have been many changes to behaviour and interactions, which are summarised here (but see the Handbook for more details):
- Shift+Left/Right: moves an item or handle between anchor points
- Shift+Alt+Left/Right: moves an item or handle to the end of the previous (or next) subdivision
- Shift+Ctrl+Left/Right: moves a hairpin back or forward a whole bar
- If a dynamic already exists at an anchor point within a duration, and a hairpin is added to the start of that duration, the hairpin will extend to the dynamic, rather than going past it to the next note or rest
- Hairpins will retain the positions of their endpoints even when durations change around them (and will no longer sometimes get lost after saving/reopening)
Layout of dynamics
Main implementation: Issue 22175 / PRs 22662 & 23046
Dynamics can now be assigned to specific voices. By default, a new dynamic applies to all voices of all staves of the instrument, unless Ctrl is pressed when it is added, in which case it will be attached to the same voice as the currently selected note or rest.
Existing dynamics can be assigned to specific voices via the Properties panel: to any of voices 1-4, or to all voices on the current stave only (relevant for multi-stave instruments), or to all voices on all staves (the default). Dynamics will be coloured according to their assigned voices; dynamics assigned to all voices are purple (by default).
According to their assignment context, dynamics now have better default placement:
- Dynamics which are assigned to a specific voice will go above or below the stave accordingly (voices 1 and 3 above, voices 2 and 4 below; an exception is made for a voice 1 dynamic if there are no other voices present; this will remain below)
- Dynamics on vocal staves will now go above the stave by default
- Dynamics and expression text on grand-staff instruments which have the default 'All voices' assignment will now automatically be centered between the staves (unless they have been given a custom y-offset)
These behaviours are all controllable in Style > Dynamics & hairpins if desired.
The position of any specific dynamic can also be controlled explicitly via the Properties panel.
The alignment of adjoining dynamics has been improved. Hairpins will now align automatically with the dynamic or hairpin on either side (this happened before, but not between adjoining hairpins):
If desired, you can break the alignment at either side of a hairpin via the Properties panel:
The same alignment behaviour has also been implemented for gradual tempo changes. These will now align with the tempo marking that follows them (and this can also be disabled in the same way via Properties):
These alignment controls can also be accessed by the context menu that appears when right-clicking a hairpin or gradual tempo change.
Layout of accidentals
Main implementation: PR21042
The layout system for accidentals has been rewritten completely. This results in a much more elegant and compact layout, especially in complex chords, and is also more configurable. The SMuFL cutouts are now used so that accidentals can tuck above/below each other more elegantly.
Some examples from the tests:
There are some new arrangement options in Style > Accidentals:
And if you find an isolated case of an arrangement you don't like you can adjust the column in which an accidental appears via the Properties panel:
Lyrics improvements
Main implementation: Issues 21045, 21166 / PR 22434
Several new options have been added in Style > Lyrics to control the display of lyrics lines (dashes and underscores), including:
- Whether to hide them when there is insufficient space
- A minimum underscore length
- Where the first dash should be shown when continuing to a new system (past the first note)
- Whether a dash should be shown before a syllable on the first note of a new system
New style options for fretboard diagrams
Implementation: Issues 14152, 21088 & 23295 / PR 23381
The styles for how fretboard diagrams are drawn has been rationalised, the ability to add fingerings has been implemented, and several new options have been added:
In particular, there is more control over the thickness of lines, the exact formatting of fret numbers, the ability to show fingerings under the strings, a 'slur' style for barrés, and the 'dangling' strings at the bottom of the frame can be turned off. There are now specific text styles for fret numbers and fingerings.
Header and footer improvements
Implementation: Issue 23325 / PRs 23390 & 23475
Multi-line copyright text can now be added both via the New Score Wizard and also in File > Project properties (technically this was possible before, but only in a very clunky and unpleasant way).
Discrete text styles for Copyright and for Page number have both been added. These styles will apply to header or footer text which uses the $c (or $C) and $p (or $P) tags. All other header and footer text will use the Header and Footer text styles (which are both now a 'generic' 9pt Roman, by default). This is only a partial solution to the header/footer styling problem, but enables a lot more flexbility.
'French'-style beams
Implementation: PR 21226
This style of beam, where the stem is drawn only up to the nearest beam (a style used by several French publishers, historically), is now available as a setting in Score > Beams.
When opening MuseScore 3 files, parentheses no longer become 'baked in' to the note and can easily be removed.
Instrument label options
Implementation: Issue 18289 / PR 22550
Hiding instrument labels used to require explicitly blanking them out for all instruments (which, as well as being tedious, would then cause confusion when looking at the Instruments panel, for example). There are now options in Style > Score to specify whether how, or whether, instrument labels should be shown on the first system of a section and on subsequent ones:
The default templates have all been updated accordingly - all instruments now keep their names, but the new options are used to control whether they are actually shown or not.
Ghost notes and dead notes in guitar notation
Implementation: Issue 16500 / PR 21371
Parentheses around fret marks now use the SMuFL notehead parenthesis symbols, rather than text parentheses, which can be more accurately aligned. The X symbol for a 'dead note' is now a text X, to appear consistent alongside fret numbers.
Interactions have been refined:
- Adding brackets to a note on a tab stave makes the note a 'ghost note', adding brackets to the fret mark and to the corresponding note on any linked staves
- Shift+X on a note on a tab stave creates a 'dead note' (X), also changing the notehead on any linked staves to a cross
These both work as toggles.
Barline options for key/time signature changes
Implementation: Issue 18941 / PR 21188
Options are now available to automatically show a double barline before key signature and time signature changes, in Style > Barlines:
Other improvements
Cross-stave notation improvements
Implementation: Issues 14694, 18687, 21061, 21901 & 23553 / PRs 21860, 21443, 23529, 23575 & 23740
Music with cross-stave notation is now vertically spaced to allow enough space for the beams while honouring minimum stem-length requirements on either side. This avoids collisions and removes the need to add spacers.
Previously:
Now:
Cross-stave beams can now be explicitly set to go above or below the staves to which they apply, as well as between (which remains the default). In all cases the beams will be positioned consistently according to the prevailing rules, which removes the need to manually adjust them.
Accidentals are now correctly shown according to the context of the stave on which the notes appear; for example:
Refined shapes and skylines
There have been many small improvements to how shapes and skylines have been calculated, meaning that layout can be more flexible and subtle overall. In particular:
- Ties and slurs have a more refined shape, as do accents. Articulations in general now react to the presence of ties, and are better placed around slurs (Issue 18727 / PR 20481) - no more tedious adjustment of offsets required
- Key signatures are now treated as a separate shape for each accidental, rather than just a bounding box round the whole thing (PR 22853)
- The shape of accidentals now uses the SMuFL cutouts, and brackets are treated as separate shapes (PR 20966)
- The shape of text items is now more refined, so that different components (e.g. some text plus a dynamic mark) each have their own rectangle, rather than a bounding box around the whole item (PR 23069)
- Skylines are calculated in a more granular way and now also incorporate a minimum horizontal clearance when calculating the vertical distances between adjacent staves (PRs 23035, 23046 & 23099); in future versions this will be refined to have different values according to item type
See the respective PRs for technical details and examples.
Resizing and rotating music symbols
Implementation: Issues 17116 & 18462 / PR 21110
Symbols added from the Master Palette can now be freely resized and rotated, via the Properties panel. (Also, the music font will default to whichever font us currently in use in the score, but this can also be overridden for a specific symbol.)
Increased use of SMuFL symbols within text
Implementation: Issues 17885, 19366 & 21757 / PRs 20934 & 21758
Many notation items are 'text-like', and can be presented as plain text (using a normal text font), but are also included in the SMuFL specification and can therefore be taken from the music font, where they can be stylised and scaled appropriately to match other music symbols. The templates have been updated accordingly: i.e. all instruments will now have labels, but if they are to be hidden, the new settings will be set appropriately.
This is now done for the following items:
- Pedal markings
- Ottavas
- Codas and segno markings
- Tuplet numbers (optionally)
In Styles > Text styles, each style now has a 'Musical symbols scale' setting, which should generally be left at 100%. This means symbols will appear at the size at which they were designed, and this is independent of the point size of the style, which only applies to 'normal' text.
For tuplet numbers, this behaviour is optional and is currently turned off by default (tuplet numbers will use a text font in new scores). The setting to control this is in Style > Text styles > Tuplet.
Scaling for frames
Implementation: Issue 12685 / PR 23852
Frames now have an option, available in Properties, to 'Scale with stave size'. It is turned off by default for title frames (in new scores), but is on for all other frames (which matches previous behaviour).
The main reason for this change is that it is normally desirable to have a title frame of a fixed height, since the size of the text inside the frame does not change with stave size either. In particular, when changing to a small spatium value (which might even happen automatically when creating a new score with lots of staves), the title frame would shrink and the text would no longer fit inside it:
This problem is prevented by making the size of the frame independent of the stave size.
Note: when opening old scores, this setting will not be changed for title frames (i.e. all frames will have this setting turned on).
Sticking alignment improvements
Implementation: Issue 20887 / PR 23825
Percussion sticking is now aligned to a common baseline across the system (as with lyrics); sticking text is also, by default, now centered on the notehead.
Previously:
Now:
Separating layout of similarly-stemmed voices
Implementation: PR 23001
Current MuseScore behaviour is that simultaneous chords with the same stem direction (i.e. voice 1 and 3) will be drawn 'combined' as though they were a single chord, offsetting noteheads and dots as necessary. This facilitates certain situations, for example where you might require a 'chord' with some dotted and some undotted notes, or with different noteheads; but it is sometimes a problem when you don't want this behaviour, as 'undoing' the offsets is tedious and can require eyeballing values.
We have now made this a general setting in Style > Notes > Alignment in chords (it remains on by default), and a local one accessible in Properties:
If this is turned off, chords will be arranged only according to the logic required for their voice. You are then free to offset either or both of them as you require. For example:
Separate options for thickness of slurs and ties
Implementation: Issue 18769 / PR 20693
The thicknesses of slurs and ties can now be set independently, in Style > Slurs & ties:
Control of grace note slashes
Implementation: PR 20890
The slash is now a togglable property for all grace notes; if used on a single note within a beamed group, it toggles the slash on the beam.
Other layout and interaction fixes
- Issue 9941 / PR 21449: Invisible notes in one voice no longer affect dot placement for notes in another
- Issues 12955 & 23760 / PR 23743: Bar numbers are now laid out outside all other notation, and therefore should not collide with nor displace any other items (e.g. articulations!)
- Issue 13243 / PR 21455: A vertical frame at the end of the last system of a score will no longer bypass the 'Last system fill threshold'
- Issue 16396 / PR 21347: Visibility setting is applied correctly to all segments of spanners when reformatting causes them to cross a system break
- Issue 17812 / PR 23218: Single note tremolos are now considered in horizontal justification
- Issue 17827 / PR 23114: Grace note stems are now only extended to the second-outermost stave line (where necessary), rather than to the middle line
- Issue 17423 / PR 22181: Lyrics in one verse can now overlap the horizontal boundaries of lyrics in other verses
- Issue 17941 / PR 23624: Multi-bar rests now have correct margins at the start of a system
- Issue 18269 / PR 23749: Slurs no longer prevent kerning of accidentals when they are on the beam side
- Issue 18280 / PR 23197: Minimum stem length is now respected for all inside notes in beams
- Issue 18236 / PR 21440: Minimum tie length is no longer unnecessarily enforced for invisible ties
- Issue 18620 / PR 24014: Custom text of time signatures now synchronises between score and parts
- Issue 18723 / PR 23768: Improves kerning around clef changes and accidentals/ledger lines
- Issue 18739 / PR 22804: Start and end repeat barlines now correctly overlap when between multi-measure rests
- Issue 18764 / PR 23803: Prevents noteheads (including auxiliary ornament notes) from kerning over augmentation dots
- Issue 19039 & 19222 / PR 23107: Items no longer become vertically displaced after a stave type change
- Issue 19178 / PR 21064: Corrects elements being added to the wrong voice when linked staves, hidden voices and parts are involved
- Issue 19180 / PR 23718: Changing voices in parts now works correctly, when only specific voices are being shown
- Issue 19182 / PR 23554: 'Gap' rests are now promoted to real rests in parts when all other voices are hidden
- Issues 19367 & [23040](https://github.com/musescore/MuseScore/pull/23875 / PR 23875: Fixes issues with line thicknesses being inconsistent with different spatium values
- Issue 19406 / PR 21860: Notes in chords containing seconds which are part of a cross-stave beamed group which starts on a rest will remain properly arranged when the beam is manually adjusted
- Issue 19503 / PR 22296: Soft hyphen character in lyrics no longer breaks layout
- Issue 19834 / PR 20734: Chord changes made in a transposed part are now correctly 'untransposed' in the score
- Issues 20016 / PR 21149: Corrects handling of displaying bar numbers where an anacrusis is involved
- Issue 20311 / PR 23907: Fixes a collision where a local time signature is added to a stave without a key signature, when other instruments do have key signatures
- Issues 20358 & 20923 / PR 21156: Notes split from a beam will now have their flags shown immediately (not only after relayout)
- Issue 20596 / PR 23899: Ties to grace notes now remain properly connected on linked staves or in parts; visibility of stems and flags for grace notes is now properly synchronised to parts
- Issue 20706 / PR 22940: Replacing an instrument with one which has a different transposition will now correctly update key signatures in parts
- Issue 20742 / 22841: Jump markers no longer appear twice on multi-measure rests of length 1
- Issue 20747 / PR 21192: Cross-stave ties are now laid out correctly
- Issue 20748 / PR 24046: When 'Avoid staves' is turned off for tuplets, they will now still avoid collisions with elements that are not staves
- Issue 20893 / PR 20946: Grace note slashes are now correctly positioned on notes which have no flag or beam
- Issue 21008 / PR 23412: Fixes an issue where glissandos and two-note tremolos would be missing from instruments added to existing parts
- Issue 21056 / PR 21447: Changing durations in secondary voices no longer creates an unnecessary bar rest in that voice in the following bar
- Issue 21116 / PR 21138: Fixes note positioning issues in chords containing seconds when beam properties are adjusted on the first note of a system
- Issue 21137 / PR 23783: Fixes problems related to 'gap rests' (markers created when notes in secondary voices are deleted) which could cause corruptions in parts
- Issue 21164 / PR 21169: Articulation distances are now scaled correctly on resized staves
- Issue 21250 / PR 21288: Cross-stave arpeggios no longer cause unnecessary extra space between staves
- Issue 21251 / PR 21287: Invisible arpeggios no longer affect placement of visible ones
- Issues 21309 & 22952 / PR 23651: Fixes issues where beams joined across a system break would cause corrupted layout
- Issue 21311 / PR 23874: Chordlines (fall, plop, doit etc) are no longer lost from notes in repitch mode
- Issue 21327 / PR 22181: Fixes a layout error with lyric underscore lines vs tuplets
- Issue 21373 / PR 23639: 'Outside'-style ties will now end after accidentals on outer notes of a chord
- Issue 21394 / PR 22860: Where up- and down-stemmed voices cross over in tab staves, fret marks in one voice are now offset to keep voices distinct (as on standard staves)
- Issue 21439 / PR 21440: Invisible augmentation dots no longer cause unnecessary offset of ties
- Issues 21441 & 22585 / PRs 23418 & 23720: Note-anchored lines no longer disappear unpredictably (when crossing page breaks, or in continuous view)
- Issue 21529 / PR 23672: Fixes an issue where splitting a bar could cause corruption in already-generated parts
- Issue 21563 / PR 23815: Chordlines can now be attached to grace notes without crashing
- Issue 21585 / PR 23101: Stem direction is now correct for beamed slashed notes on drum staves
- Issue 21683 / PR 21729: Multi-bar rests no longer collide with clef changes that follow
- PR 21692: Ties between chords either side of a system break which are both cross-stave are now drawn on the correct stave
- Issue 21754 / PR 21755: A system containing only a single horizontal frame will no longer be given a bracket
- Issue 21760 / PR 21762: Fretboard diagrams are now positioned below voltas
- Issue 21767 / PR 21768: Invisible voltas no longer affect vertical alignment of visible ones
- Issue 21769 / PR 21770: Pralltriller lines now use the correct symbol when they continue across a system break
- Issue 21485 / PR 21728: Making barlines invisible on specific staves no longer corrupts horizontal spacing
- Issue 21572 / PR 23895: Changing the colour of beamed chords will now only change the colour of the selected elements (not the entire beamed group)
- Issue 21914 / PR 21955: Chord symbol style now updates immediately when a style file is loaded
- Issue 21962 / PR 22839: The 'Reset all formatting' function no longer removes jumps from a part
- Issue 22079 / PR 22490: Notes of the same pitch, same number of dots, and a black notehead, will now overlap even if they are different sizes (e.g. if one is a cue-size note)
- Issue 22080 / PR 22083: Beaming and rhythmic grouping is now correct in pick-up bars
- Issue 22115 / PR 21633: Voltas at the beginning of a system now start after a key signature
- PR 22201: Fixes incorrect layout of multi-measure rests when migrating some older files
- Issue 22247 / PR 22554: Right-aligned jumps ('Fine', 'D.C.', etc) now align to the barline, not the end of the system, where the barline is followed by a key/time/clef change
- Issue 22368 / PR 23681: Fixes an issue where changes to grace notes under spanners (e.g. a trill line) would not synchronise with parts
- Issue 22379 / PR 23166: Voltas now begin after clef changes, if the change is after the barline
- Issue 22419 / PR 22566: Multi-line fingerings now stack properly on cross-stave chords
- Issue 22432 / PR 22434: Lyric underscore lines no longer collide with other items on the stave (e.g. slurs)
- Issue 22601 / PR 22602: The line component of text lines now follows the alignment of the text component
- Issue 22811 / PR 22866 System text and system text lines now have a consistent default size; system text lines added to range selections are now properly initialised as system objects
- Issues 23119 & 23396 / PR 23125: All properties of cresc./dim. lines are now written to file
- Issue 23333 / PR 23595: Properties are now correctly scaled on resized staves when saving
- PR 23363: Implements sensible default placement of brass lifts/falls, and adds these to the 'Arpeggios & glissandos' palette
- PR 23392: Laissez vibrer ties now have a more sensible default placement (and are considered in horizontal justification, to avoid collisions with items that follow)
- Issue 23401 / PR 23453: Ties once again move to the appropriate voice when their notes are moved to another voice
- Issue 23645 / PR 23650: Harp pedal diagrams and fretboard diagrams no longer break their bars out of multi-bar rests
- Issue 23733 / PR 23734: 'Reset shapes and positions' and 'Reset entire score to default layout' will now reset leading space for all relevant items
- Issue 23767 / PR 23787: The 'Explode' and 'Implode' functions now copy dynamics and text annotations, also taking their voice assignment into account
- Issue 23846 / PR 23868: Corrects the application of the lyrics odd/even styles during input
MusicXML improvements
- Issue 20699 / PR 22858: Corrects barline spans on import
- Issue 21187 / PR 21189: The 'none' notehead type is now recognised on import
- Issue 21193 / PRs 22864 & 22943: Chords with invisible stems are now exported as stemless
- Issue 21390 / PR 23730: Fixes a bug where cresc and dim lines would not be exported at all if their line was set to invisible
- PR 22536 & 22673: Percussion sticking is now inferred on import
- PR 22576: Sets the notehead scheme of notes from the MusicXML
notehead
tag - PR 22577: Properly reads visibility setting for
direction
elements - PR 22632: Improves inference conditions for tempo text
- PR 22647: Implements import and export of buzz rolls
- PR 22666: Improves import and export of system markings
- PRs 22719 & 23366: Improves instrument recognition on import
- PR 22722: Improves inference of expression text
- PR 22737: Removes unnecessary duplicated articulations
- PR 22752: Scales tempo text to fit within frame margins
- PR 22873: Improve tempo text inference
- PR 22874: Infers playing techniques on import
- PR 22876: Prevents duplicated inferred 'cresc.' and 'dim.'/'decresc.' text
- PR 22908: Corrects stem direction on drumset staves
- PRs 23207 & 23249: Improves mapping of dynamics from Finale
- PR 23227: Recognises manually-formatted fractions and maps to combined glyphs
- PR 23231: Infer 'shift' fingerings (starting with a hyphen or dash)
- PR 23237: Infers credit words as rights, and puts rights in footer if there is no other copyright text
- PR 23251: Discards y-offset for composer text, to avoid it escaping the title frame
- PR 23286: Discards redundant instrument changes
- PR 23300: Infers 'range' dynamics, e.g. mf-f
- PR 23310: Identifies system object positions on import
- PR 23311: Corrects position of barlines which erroneously appear mid-bar
- PR 23363: Brass lifts/falls are now recognised during import
- PR 22376: Improves recognition of accidentals in instrument names on import
- PR 23532: Prevents a crash when reading elements which are after the final tick of the score
- PR 23946: Prevents a crash when reading complex nested tuplets
- PR 24041: Improvements to music font symbol mapping
Comments
Looking forward to the release! So much improvements!
Wow!! Lots of major layout improvements here! Thanks guys!
Came to the forum to find a solution for the first item you mentioned (specifically hairpin anchors under a whole note).
Thought I'd let y'all know that your hard work is greatly appreciated! Looking forward to 4.4!
v/r KFS
I've been following the changes. The idea of creating your own style for page numbers (and copyrights) is good. However, disabling the possibility of using HTML code for text formatting is not good. For example, I like to write the title in italics and the names of the parts in plain text. MS is no longer accepting this. Will it be permanent?
In reply to I've been following the… by mtuliosax
I mean on headers and footers
This is all very, very good news! A million thanks to all the people who have been working away at fixing these engraving issues. Your diligence about getting even the tiniest things right is heartwarming and inspiring. (Now if only we could get a little of the same concern for users' needs, and some of the same attention to detail, from the folks who deal with the playback side of things!...)
I have a question about anchors and an idea.
"By default, points are available every half beat (according to the prevailing time signature; for example, in 4/4 they will be every eighth note)."
Is there any possibility to have anchor points every quarter beat or custom?
It seems that this works if you put time signature 8/8 instead of 4/4 (and then hide it). But I wonder is there any more convenient solution?
Also it would be expected that there are some kind of "Start position (rhythmic)" and "End position (rhythmic)" property in properties. Here you could allow users to specify a fraction expressions like "1+3/16" or "2-1/32" (basically anything that evaluates to a fraction). This approach would solve the problem of my question in the most generic way.
In reply to I have a question about… by hstanekovic
We have discussed these things, and in a future release there will certainly be further refinements and configurability along these lines. Half of the beat is a bit 'one-size-fits-all' - probably too fiddly in an x/16 time signature, and perhaps a bit too broad for x/2. But one does have to ask, how commonly does one really, in practice, have to position something with that level of rhythmic precision?
Since anchor points are created for notes on staves other than the one the item itself is on, one workaround that may help you for now would be to fill another stave with 16ths, in the bar(s) where you're working, then delete them once you're done.
In reply to We have discussed these… by oktophonie
Thanks for info. If anchor points survive deleting notes then your tip sounds good. At least the notes do not have to exist and be hidden as was before but can be deleted.
In reply to Thanks for info. If anchor… by hstanekovic
They do!
Really excited for these updates!
Thanks so much to all the people that made this possible!