Re: TrillPitch* whiteout bug

Thomas Morley <[email protected]>
Newsgroups gmane.comp.gnu.lilypond.bugs
Message-ID <CABsfGyWRY306U8J+0edq38ADf_OabZ-FcGmit0VZvptpo66tNQ@mail.gmail.com>
Am Do., 27. Juni 2024 um 17:05 Uhr schrieb Trevor Bača <[email protected]>:
>
> Hi,
>
> Here is a two-staff example with a bug relating to the way that whiteout
> works with TrillPitchAccidental, TrillPitchHead, TrilPitchParentheses; the
> parenthesized pitched-trill fails to print, leaving behind some type of
> visual artifact:
>
> %%% PITCHED-TRILL WHITEOUT BUG %%%
>
> \version "2.25.16"
> \language "english"
>
> A = {
>     % measure 1
>     c''4
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     c''8
>     % measure 2
>     c''8
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     \once \override Beam.grow-direction = #right
>     c''16 * 29952/5120
>     [
>     c''16 * 16128/5120
>     c''16 * 13312/5120
>     c''16 * 11776/5120
>     c''16 * 10752/5120
>     ]
> }
>
> B = {
>     % measure 1
>     \time 3/4
>     \set Score.proportionalNotationDuration = #(ly:make-moment 1/32)
>     \override TrillPitchAccidental.layer = 2
>     \override TrillPitchHead.layer = 2
>     \override TrillPitchParentheses.layer = 2
>     \clef "bass"
>     r16
>     \once \override TrillPitchAccidental.whiteout = ##t
>     \once \override TrillPitchHead.whiteout = ##t
>     \once \override TrillPitchParentheses.whiteout = ##t
>     \pitchedTrill
>     cs4..
>     \glissando
>     \startTrillSpan ds
>     \afterGrace
>     e4
>     {
>         f8
>         \glissando
>     }
>     % measure 2
>     \time 6/4
>     d16
>     r8.
>     \stopTrillSpan
>     r1
>     r4
> }
>
> \new Score
> <<
>     <<
>       \new Staff { \A }
>       \new Staff { \B }
>     >>
> >>
>
> %%% END %%%
>
> [image: pitched-trill-whiteout-bug.png]
>
> What causes the bug to go away?
>
> Many things, apparently.
>
> Removing the upper staff causes the bug to go away:
>
> %%% OK WITHOUT UPPER STAFF %%%
>
> \version "2.25.16"
> \language "english"
>
> A = {
>     % measure 1
>     c''4
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     c''8
>     % measure 2
>     c''8
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     \once \override Beam.grow-direction = #right
>     c''16 * 29952/5120
>     [
>     c''16 * 16128/5120
>     c''16 * 13312/5120
>     c''16 * 11776/5120
>     c''16 * 10752/5120
>     ]
> }
>
> B = {
>     % measure 1
>     \time 3/4
>     \set Score.proportionalNotationDuration = #(ly:make-moment 1/32)
>     \override TrillPitchAccidental.layer = 2
>     \override TrillPitchHead.layer = 2
>     \override TrillPitchParentheses.layer = 2
>     \clef "bass"
>     r16
>     \once \override TrillPitchAccidental.whiteout = ##t
>     \once \override TrillPitchHead.whiteout = ##t
>     \once \override TrillPitchParentheses.whiteout = ##t
>     \pitchedTrill
>     cs4..
>     \glissando
>     \startTrillSpan ds
>     \afterGrace
>     e4
>     {
>         f8
>         \glissando
>     }
>     % measure 2
>     \time 6/4
>     d16
>     r8.
>     \stopTrillSpan
>     r1
>     r4
> }
>
> \new Score
> <<
>     <<
>       % \new Staff { \A } % <= THIS IS THE ONLY LINE THAT IS CHANGED
>       \new Staff { \B }
>     >>
> >>
>
> %%% END %%%
>
> [image: ok-without-upper-staff.png]
>
> Strangely, the bug also goes away when the second glissando is removed:
>
> %%% OK WITHOUT SECOND GLISSANDO %%%
>
> \version "2.25.16"
> \language "english"
>
> A = {
>     % measure 1
>     c''4
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     c''8
>     % measure 2
>     c''8
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     \once \override Beam.grow-direction = #right
>     c''16 * 29952/5120
>     [
>     c''16 * 16128/5120
>     c''16 * 13312/5120
>     c''16 * 11776/5120
>     c''16 * 10752/5120
>     ]
> }
>
> B = {
>     % measure 1
>     \time 3/4
>     \set Score.proportionalNotationDuration = #(ly:make-moment 1/32)
>     \override TrillPitchAccidental.layer = 2
>     \override TrillPitchHead.layer = 2
>     \override TrillPitchParentheses.layer = 2
>     \clef "bass"
>     r16
>     \once \override TrillPitchAccidental.whiteout = ##t
>     \once \override TrillPitchHead.whiteout = ##t
>     \once \override TrillPitchParentheses.whiteout = ##t
>     \pitchedTrill
>     cs4..
>     \glissando
>     \startTrillSpan ds
>     \afterGrace
>     e4
>     {
>         f8
>         % \glissando % <= THIS IS THE ONLY LINE THAT IS CHANGED
>     }
>     % measure 2
>     \time 6/4
>     d16
>     r8.
>     \stopTrillSpan
>     r1
>     r4
> }
>
> \new Score
> <<
>     <<
>       \new Staff { \A }
>       \new Staff { \B }
>     >>
> >>
>
> %%% END %%%
>
> [image: ok-without-second-glissando.png]
>
> The bug also goes away when the rhythm of the upper staff is changed:
>
> %%% OK WITH RHYTHMIC SIMPLIFICATION %%%
>
> \version "2.25.16"
> \language "english"
>
> A = {
>     % measure 1
>     % c''4
>     % c''16
>     % c''16
>     % c''16
>     % c''16
>     % c''16
>     % c''16
>     % c''8
>     c''2. % <= THIS IS THE ONLY NEW LINE
>
>     % measure 2
>     c''8
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     c''16
>     \once \override Beam.grow-direction = #right
>     c''16 * 29952/5120
>     [
>     c''16 * 16128/5120
>     c''16 * 13312/5120
>     c''16 * 11776/5120
>     c''16 * 10752/5120
>     ]
> }
>
> B = {
>     % measure 1
>     \time 3/4
>     \set Score.proportionalNotationDuration = #(ly:make-moment 1/32)
>     \override TrillPitchAccidental.layer = 2
>     \override TrillPitchHead.layer = 2
>     \override TrillPitchParentheses.layer = 2
>     \clef "bass"
>     r16
>     \once \override TrillPitchAccidental.whiteout = ##t
>     \once \override TrillPitchHead.whiteout = ##t
>     \once \override TrillPitchParentheses.whiteout = ##t
>     \pitchedTrill
>     cs4..
>     \glissando
>     \startTrillSpan ds
>     \afterGrace
>     e4
>     {
>         f8
>         \glissando
>     }
>     % measure 2
>     \time 6/4
>     d16
>     r8.
>     \stopTrillSpan
>     r1
>     r4
> }
>
> \new Score
> <<
>     <<
>       \new Staff { \A }
>       \new Staff { \B }
>     >>
> >>
>
> %%% END %%%
>
> [image: ok-with-slight-rhythmic-simplification.png]
>
> In fact, changing almost any one single thing about the original example
> makes the invisible-pitched-trill bug go away.
>
> Does anyone have any idea what is happening here? Or should I open an issue
> in the tracker?
>
> Trevor.
>
> --
> Trevor Bača
> www.trevorbaca.com
> soundcloud.com/trevorbaca

Hi Trevor,

here all of TrillPitchHead/Accidental/Parentheses are set to the same
layer value. This means its arbitrary what is printed above each
other. This documented somewhere, iirc, too lazy to search ...

Set TrillPitchHead/Accidental to a higher value than
TrillPitchParentheses and all works always.
Furthermore you only need whiteout for TrillPitchParentheses:

\version "2.25.16"
\language "english"

A = {
    % measure 1
    c''4
    c''16
    c''16
    c''16
    c''16
    c''16
    c''16
    c''8
    % measure 2
    c''8
    c''16
    c''16
    c''16
    c''16
    c''16
    c''16
    \once \override Beam.grow-direction = #right
    c''16 * 29952/5120
    [
    c''16 * 16128/5120
    c''16 * 13312/5120
    c''16 * 11776/5120
    c''16 * 10752/5120
    ]
}

B = {
    % measure 1
    \time 3/4
    \set Score.proportionalNotationDuration = #(ly:make-moment 1/32)
    \override TrillPitchAccidental.layer = 3
    \override TrillPitchHead.layer = 3
    \override TrillPitchParentheses.layer = 2
    \clef "bass"
    r16
    \once \override TrillPitchParentheses.whiteout = ##t
    \pitchedTrill
    cs4..
    \glissando
    \startTrillSpan ds
    \afterGrace
    e4
    {
        f8
        \glissando
    }
    % measure 2
    \time 6/4
    d16
    r8.
    \stopTrillSpan
    r1
    r4
}

\new Score
<<
    <<
      \new Staff { \A }
      \new Staff { \B }
    >>
>>

Thus no bug, afaict.

Best,
  Harm
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.