Feature Request: Intuitive text editing for lyric scores

• Jul 14, 2020 - 19:15

The vertical frame is a good start to incorporating text editing, but it leaves a lot to be desired. I'm in the process of transcribing an operetta score, and it's a challenge to include the dialogue between the musical numbers. I even have to add manual line breaks within a text box. I wouldn't expect a musical score editor to function like InDesign or even Word, but I would like to see more and improved options for text editing and layout design. Just a few starting points:
-- automatic line breaks when end of frame is reached
-- add tabs and possibly adjustable tab stops
-- allow frames to break over pages (and flow text accordingly)
-- smart layout adjustment when parts are created (preserve frame sizes, avoid overlapping score)
-- option to hide staves in parts for completely empty lines (ex. if 'Voice A' doesn't appear in song/movement X, the title of the movement still shows, but no staves show, and the following text frame begins immediately)
-- text line spacing within paragraphs (ex. double space, single space, 1.5 space), and between paragraphs (ex. add 12pt space after each paragraph)
And, if we want to get really fancy:
-- quick text styles to apply for fast and easy formatting


Some of this has been on the list of things to consider for some time, especially word wrap, and more control over appearance of elements in parts. Also line spacing.

But text styles are already a thing, just use the Inspector to assign whatever text style you want, including a bunch of "user" styles you can set up yourself.

In reply to by Marc Sabatella

Glad to hear this, Marc, thanks! As for the styles, yes, there's the 'master style' settings, but (so far, at least) that applies to text elements. For example, I can set a 'Title' (master) style, and it applies when I add Title text. But if I'm working within a text frame, I might want to add a style to a word (or string of words), or to a whole paragraph. (Think quick styles in Word.) For example, in a script, I might want to have a stage direction style which includes centre alignment, italics, and 8pt space below. AFAIK there's no way to add this style to part of a text frame (besides selecting each style element individually).

Having heard about the possibility for improvements in layout editing in MuseScore 3.6, I thought I might add a few additional comments here:

-- vertically centred alignment within grand staff (ex. a dynamic placed below the top staff is centred vertically, rather than, say, 3.5 sp below the staff line; thus, when the space between staves changes, the position of the dynamic changes as well)
-- frames shouldn't change size when creating parts (currently, when creating a part from a master score, all vertical frames in the part resize to the default height)
-- frames should automatically resize to fit contents (or the option should be available to enable auto-sizing frames)
-- ability to apply styles to instruments within a part (ex. one style for a vocal line, a different style for an instrument line, and a different style for a grand staff)
-- add strike-through to text styles (with bold/italic/underline)
-- alignment options: select multiple objects and choose 'align top/middle/bottom//left/centre/right' to selection
-- enable columns on pages, or some other way of accomplishing this: ex. page size a3 landscape with two a4 columns (i.e. 2 a4 pages side by side on an a3 page)
-- expand search function to include text (ex. search for lyrics, for stave/system text, etc.); could also include find/replace functions
-- improve presentation and spacing of lyrics (cf. https://musescore.org/en/node/308263)
-- merge instruments within a part (without affecting the master score): ex. master score contains 'cello' and 'contrabass' instruments; create a 'part' for 'cello/bass' with merged instrument lines (bass becomes voice 2); would also be helpful if playback sound could be preserved (i.e. voice 1 = cello soundfont, voice 2 = bass soundfont)
-- similarly, an option to merge staves selectively in parts (without affecting the master score); ex. 1: cello/bass on same staff when in unison, but on separate staves when divisi; ex. 2: two voices singing in dialogue (as in a musical or opera) can appear on the same line (with a stave text indicating the change of character; could be connected to 'change instrument' in order to allow change of playback sound), but on different lines when they sing together (because different words/notes/rhythms would be messy on one staff line)
-- improve multi-measure rests for long sections (currently, multi-measure rests are broken by some stave/system texts, key/time signature changes, rehearsal marks, tempo changes, measures with fewer/more beats, etc.); thus, an instrument tacet for an entire movement or section just needs to see one long multi-measure rest of ex. 48 bars, rather than many multi-measure rests of 5, 3, 8, 5, etc. bars)
-- similarly, allow for replacement of a long multi-measure rest with 'tacet' text
-- similarly, allow hiding of staff lines during long rests; ex. an instrument tacet for an entire movement doesn't need to see the multi-measure rest or staff lines, just the word 'tacet' under the movement title

I'm sure more ideas will come; these are the things I've encountered and wished for in my current project. :)

In reply to by tjdickinson

These are all good ideas! A few comments:

  • in theory, we copy "some" formatting to parts when generating them, but after that they are independent. initial frame sizes are probably a good candidate to copy on part generation at least. beyond that we really need a more general way to control what is linked and what isn't

  • text frames do automatically size to contents, the others don't by design because often you want them fixed, but an option to also allow them to resize automatically could be useful

  • if by columns you refer to text, that's possible to some extent already, just add two text elements to a single frame

  • alignment is already mostly possible via the Inspector, maybe start a new thread to discuss specific use cases that might be falling through the cracks

  • the merging of instruments is interesting, we actually have the opposite now (voices on a staff can become separate parts), maybe there is a way already to somehow make what you describe happen. do you have examples from published music to show what you mean? here again, a separate thread to discuss is probably best

  • the "tacet" idea is especially good. we're working on some other imnprovements for multimeasure rests right now, I'll be sure to bring this up

In reply to by Marc Sabatella

Thanks for your feedback, Marc!
-- Indeed, for frame sizes, the contents don't change between parts, so it doesn't make much sense that the frame size should change. IMO, the default is that everything should be linked except that which could change (independently) in a part (without affecting the master score), namely, page/staff breaks and layout stretch. Perhaps when adding a frame to a part, a dialogue window could ask whether the frame should be added to all parts or only to 'this' part. (Thus, if I want to add a specific instruction to, say, the vocal parts, but not to the instrument parts, I could do that.)
-- I don't quite understand what you mean by "others don't [automatically resize to contents] by design because often you want them fixed". If a frame contains any object (text/image), then it's not likely I'd want the frame to be a different size in a part compared to the master; I'd want it to still fit the contents. If the frame is empty, then the height designated in the master should be reflected in the part, with the option to resize the frame only in the part (without affecting the frame height in the master or other parts).
-- By columns, I mean page layout. For example, layout of a piano score to be 2 (portrait) a4 pages on a (landscape) a3 page. While this can naturally be done when printing, the use of it in the program would be for assigning margins: I want the 'inside' margin to apply only to the a3 page, not to the individual a4 'pages'.
-- I'll start a new thread for the alignment ideas!
-- I'll also start a separate thread for the merging of parts!
-- Thanks for your support on the 'tacet' idea! :)

In reply to by tjdickinson

Well, there are actually quite a few things that could potentially be different between score and part, and that's why we tend to be conservative and only link the ones that practically have to be in sync. Changing frame attributes between score and parts is actually quite common. People use this to, for example, have blocks of text that appear in the score but not parts. But yes, eventually, we want to provide a way to provide user control over this sort of thing.

When I said "others don't automatically resize to contents", I mean, frames other than text frames. So, vertical and horizontal frames are fixed size, by design. They are often used to create a particular amount of space independent of their contents (and indeed, often they are used in cases where they no contents, just empty space). If they automatically resized, this would break all the uses where people depend on them to create a fixed amount of space. But, indeed, someday an optional property you could set that caused them to automatically resize to contents might be possible. Meanwhile, though, is there a reason not to just use text frames when you want things automatically sized?

The multi-column layout thing is certainly something that also could be added someday, but as you sayk it's something normally handled by print utilities. If the one you rate using doesn't give control of these margins, you might consider trying another that does. This sort of thing really shouldn't have to be designed and implemented by every single application, there really should be (and almost certainly is) a good general purpose solution out there, where Adobe Acrobat or whatever.

In reply to by Marc Sabatella

Thanks, as always, for your thorough and helpful comments, Marc!

I wonder if we may be talking past each other a bit about the frame sizes--and perhaps what I'm experiencing is actually a bug and not meant to happen by design. In the style settings, the default frame height (for new frames) is 10sp. In my master score, I've added a host of vertical frames with text objects in them*. In the inspector, I set the height of each frame to fit its contents. Then, whenever I create parts, all the frames have reset to 10sp height, and I have to manually--painstakingly--go through and reset the height of each frame in each part.

For the autosizing, that would happen when a frame is created and objects added to the frame. But at that point, after any manual adjustments to that frame (whether it has contents or not), it seems to me that the frame should stay that size in any created parts. In the attached score example, compare what you see in the master score after the overture (search for '2x' and then scroll up), to what you see in the created 'Piano' part in the same location. Even the empty vertical frame just below the last line of the overture, which is set to 2sp height in the master score, has defaulted to 10sp in the part.

*As to why I used vertical frames instead of text frames, there are two reasons. First reason is simply because I am (or was) new at using MuseScore when I started this project, so not everything was created optimally. (You might recall the issue I mentioned before about the horizontal frames within vertical frames causing unexpected behaviour and crashing.) I had originally put multiple text objects in one vertical frame, and when that created layout problems (because the frames don't break over pages), I switched to one(-ish) text object per frame.

Second reason is that my 'one(-ish)' object is really two objects because the text is a script. Thus, there's a text object for the character names, and then a text object containing the dialogue. Currently, there's no way of creating a hanging indent within a text frame, and the text frames don't understand 'tabs'. Ideally, I would like to be able to have 'Character name. [tab] ^Dialogue which aligns with ^ after line breaks, and after tabs on lines after a paragraph break'.

Attachment Size
Cox_and_Box_Full.mscz 2.77 MB

In reply to by tjdickinson

One point of confusion here is that there is no style setting for default frame height. Maybe you are thinking of the margin or gap settings? Confusingly, it's called "margin" in Format / Style / Page, but "gap" in the Inspector, and "margin" is used for something else that also has not style setting (it controls the interior margin). The style setting in question affects space between the frame and whatever is above or below it.

But anyhow, regarding height - yes, as I said previously, I agree it probably makes sense that when first generating the parts, this should be one of the things copied. Then after that left unlinked so they can be adjusted independently.

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