Engrave Mode> Note Spacing. A strange blank appears during manual note spacing(Alt+↑). Bug?

Engrave Mode> Note Spacing. In a situation where each voice has different note values (4th and 8th), and the system fullness indicator exceeds 100%, if I move the square handle by pressing Alt + ↑ several times, a strange and large blank appears at a random position. Isn’t it a bug?

(Note spacing bug? strange blank appears)Untitled Project 5.dorico (366.9 KB)

It does not happen when the system fullness indicator does not exceed 100%.

It’s not a bug. It’s because the system is ridiculously over-full, and the algorithm gives up. Anything over 110% or so is too much for the computation to handle.

It’s not just this scenario. I run into it occasionally when I’m dealing with overfull systems in hymnal engraving. There is, as Daniel would say, a rather boring technical reason for this, which has to do with something called a “minimum distance violation.”

Anyways, just reduce the note spacing value to get it closer to 100%.

Thank you for a reply, @dankreider.

I still think this is a bug, and this issue is not due to the computational ability of Dorico’s justification algorithm. Rather, I think this issue is related to the Voice Column Index.

Try setting the first lower note of the system to “Voice Column Index 1” (i.e. make the system’s first rhythmic position to have multiple voice columns.). Just doing this will completely eliminate the behavior of this issue (even if the system is ridiculously over-full!).

Is it really technically impossible for the Dorico team to fix this issue?

(Multiple voice column_ Note spacing bug?)Untitled Project 5.dorico (366.8 KB)

It’s not a bug. It’s an undesirable behavior, but there’s a reason.

Rather, is it really necessary for you to make a system 300% full?

This spacing behavior is being addressed, by the way.

1 Like

Why should the development team divert their attention to fixing something that is the result of a user testing the limits of the system? Of course you can break the algorithm if you really want to, but you’re never going to see this kind of situation unless you set the numbers to completely nonsensical values, as you’ve done here.

What is it that you hope to achieve? What’s the real world use case?

6 Likes

Whether this issue is a bug or not, it’s certain that this behavior is an undesirable behavior, and I’d like it to be fixed if it can be fixed.

Are there any Topics in Dorico Forum (or the other place) discussing this spacing behavior? Please let me know the URL if you can.

300% was a one extreme example chosen on purpose to show this problematic behaviour clearly. As I wrote in the first post, this behaviour happens when it exceeds 100%. A GIF below is an example of 111%. A subtle but undesirable spacing distortion does occur even with about 110% (Compare the width of the first beat and the width of the second beat in the 6th bar.). And it’s even more troublesome because it’s so subtle distortion that it’s easy to miss it. But a strict music engraver must notice it and fix it.

(single system_111 % system fullness)Untitled Project 5.dorico (365.1 KB)

A situation like above (i.e. with manual note spacing and about 110% system fullness) can occur during the music engraving process in the real world, right? Especially when we change how many bars contained in one system by editing system break.

(two systems_110 % system fullness)Untitled Project 5.dorico (365.9 KB)

This is an example of manually editing the note spacing of the first note in the first system (pressing [Alt+↑] 3 times in this case) and then changing the number of bars in the first system from 5 to 6 by editing system break. The system fullness increases from green 92% to red 110%. And this undesirable spacing behaviour occurs (Compare the width of the first beat and the width of the second beat in the first bar.).

1 Like

The point of the system fullness indicator is to tell you whether Dorico can reliably space the system or not.

If the indicator is red, Dorico cannot reliably space the system. Aside from anything else, you’ve handed it a rule - X spaces per quarter - and by forcing extra bars/notes onto the system you are forcing it to break the rule. The system fullness indicator gives a percentage, but it also tells you how many spaces it needs to find vs how many spaces there are actually are. As soon as the number on the left is higher than the number on the right, you are forcing it to break rules, and it’s telling you that it can’t do that.

The solution is simple: keep the system indicator green. If you have to force more bars onto a system and you’re picky about Dorico doing the calculation the best it possibly can, add a Note Spacing Change that reduces the default space per quarter, in order that the system fullness indicator can be kept green.

I still don’t understand what you’re aiming to achieve, here. It feels (to me, at least) like you’re driving through lots of red traffic lights and then complaining that the other drivers are against you.

I do agree that unexpected jumping at slightly overfull systems is indeed a problem. It’s one I encounter semi-regularly, and one I’ve raised to Daniel.

Not 300% though…

1 Like

When a system is overfull, it’s much more likely to create what we call a “minimum distance violation”, which means that Dorico needs to move two consecutive spacing columns further apart than their ideal distance because something would otherwise cause the two columns to collide. In the normal run of things, you’d typically see this only with lyrics, but when you have tightly spaced music with lots of accidentals or other left and right protrusions, you can run into these kinds of violations in other situations. Whatever the cause of the violations, this means that Dorico has to move the columns further apart than the ideal distance for a note of that duration.

Dorico can do this until the system is 100% full, because any extra space that is left over can be allocated to some of the columns to make the system exactly 100% full. As soon as the system is more than 100% full, it has to take a different approach: it still tries to maintain the minimum distance violations so that things don’t collide, but it then has to take away space from all of the non-violating columns, with the result that the overall result is very different.

The only alternative to this would be for us to add a mode to note spacing that always disregards all minimum distance violations, i.e. that will always space the music according to the ideal values defined for note spacing, which would mean that Dorico would not create extra space not only for lyrics but also for e.g. accidentals on the following column. The effect of this option would be that Dorico would space the music precisely according to the rhythms, not making extra space for collisions between things like backnotes, accidentals, lyrics, etc. But the advantage would be that you would find the transition between < 100% and > 100% full completely smooth, i.e. nothing would move unexpectedly as you cross the threshold.

There is no “third way” where you can still have all of the advantages of Dorico’s automatic collision resolution and then magically not have a transition between two approaches that can create changes that you cannot anticipate.

We have already implemented the option to space the system ignoring minimum distance violations in our development builds, so this option will be available in future versions of the software. I must stress that on the whole I would not recommend using this new option unless you have very specific requirements.

1 Like

Thank you for the detailed explanation, @dspreadbury. I understood that I have to deactivate “minimum distance violations” completely to get the results I wanted.
And I’m much looking forward to trying out future Dorico’s option!