Menu

#5499 Temp. Staff not stopped when its length’s less than a fourth note

Accepted
nobody
None
Defect
2019-04-23
2019-03-21
No

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.

Related

Issues: #5378

Discussion

  • Malte Meyn

    Malte Meyn - 2019-04-23

    That bug seems to be introduced somewhere between 2.14.2 and 2.16.2. Using the former, all examples look fine.

     
  • Malte Meyn

    Malte Meyn - 2019-04-23

    Some more observations:

    \version "2.21.0"
    
    \markup "The staff extends not only one measure but the whole length."
    
    <<
      {
        b4
        \new Voice { b64 }
        b4
      }
      \repeat unfold 16 b4
    >>
    
    \markup "The order of staves doesn’t matter, and explicitely creating staves doesn’t help."
    
    <<
      \new Staff \repeat unfold 16 b4
      \new Staff {
        b4
        \new Voice { b64 }
        b4
      }
    >>
    
    \markup "The actual duration doesn’t matter if a long duration is scaled down."
    
    <<
      \new Staff {
        b4
        \new Voice { b4*1/16 }
        b4
      }
      \new Staff \repeat unfold 16 b4
    >>
    
    \markup "It matters if a short duration is scaled up."
    
    <<
      \new Staff {
        b4
        \new Voice { b64*16 }
        b4
      }
      \new Staff \repeat unfold 16 b4
    >>