smarter breaks: "soft-hyphen"/"don't break", etc.

• Dec 28, 2019 - 03:21

Far fetched and not easy to do.

My main use for MuseScore is engraving SATB choral works for my amateur choir for better intelligibility (readability and layout), providing separate parts/editions for each of SATB.

For each edition, I am trying to optimize layout to be logical, musical, by manually going through the edition and putting breaks to places that make sense (say, avoid breaking in the middle of a busy section - instead postpone until a less busy section; unless this forces a new page; play with scaling in page settings to neatly fit things into pages; avoid page breaks during busy sections; etc.).

These breaks end up being at different places for different parts, so I have to do them manually.

It would be nice to have some smarter breaks, e.g. "don't break here" or "try to avoid a break here", or the opposite, I could add a "this would be a good place for a break, if a break is needed". Kind of like a soft-hyphen or a non-breaking-space or "don't break this line" in the document layout/DTP/prepress world.

These would express some kind of a cost/benefit score of a break there, and then the entire layout could try to optimize some cost function of these costs/benefits. Also page count or needed page turns could be a part of that calculation. (E.g. I layout many of our pieces to be two-page, nicely held in the hand without turning pages, so a bad break is better than flowing to a third page, etc. but once you have a third page anyway, flowing to a fourth page would have less of a cost). In an even more futuristic scenario this optimization could also change the scaling of the score (within some limits) to neatly fit onto pages.

It would be even nicer, if the layout process would be able to reason about the music to some degree, and do these breaks somewhat automatically. (E.g. with heuristics, like, say, many empty measures, or a rest at the end of the measure would be a good place to break.)

Lik I said, far fetched and not easy to do.

Would there be value to anyone else in something like this?


As for automation, I think the heuristics will become quite complex and I fear for the real-time working of it. Then again, that's easily solved by making it an on-request processing thing triggered by the user.

As for a don't break / keep together thing; I know during the early 3.0 phase there was such an element in the code (and I believe it still is somewhat in there today), but it's implementation wasn't finished in time, so it got disabled for release. So far nobody has picked up working on it again.

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