When using a temporary Staff supposed to end when the music expression’s finished, that Staff actually won’t stopped if it contains a Voice whose length is anything less than a fourth note (no matter the time signature).
\version "2.21.0" << { c'4 \new Voice { c'8 } c'4 c'8 c'4 } { c'4 c'4 c'4 c'4 c'4 c'4 c'4 c'4 } >>
Or with \\
:
<< { c'4 << { c'8 } \\ { c'8 } >> c'4 c'8 c'4 } { c'4 c'4 c'4 c'4 c'4 c'4 c'4 c'4 } >>
If the voices are of inequal length, only the shorter one triggers the bug:
<< { c'4 << { c'8 } \\ { c'4 } >> c'4 c'8 c'4 } { c'4 c'4 c'4 c'4 c'4 c'4 c'4 c'4 } >>
If using \new Voice
rather than \\
, the bug appears only when the Voice explicitely created is the one whose length is less than a fourth note. In the following example, switching the \new Voice
to the Voice with two eight notes (and leaving the other one just being implicitely created), fixes the bug:
<< { c'4 << \new Voice { \voiceTwo c'8 } { \voiceOne c'8 c' } >> c'4 c' } { c'1 c' } >>
Replacing the shortest voice with any duration of 4 and above (or padding it with skips or rests) prevents the bug from being triggered.
Someone else has been investigating this on -user-fr:
https://lists.gnu.org/archive/html/lilypond-user-fr/2019-03/msg00064.html
It could possibly be related with [#5378], but it’s clearly not the same bug.
That bug seems to be introduced somewhere between 2.14.2 and 2.16.2. Using the former, all examples look fine.
Some more observations: