\hideNotes hides too many dots

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

\hideNotes hides too many dots

Simon Albrecht-2
Hello,

this is an exemplary use case for \hideNotes:

%%%%%%%%%%%%%%%%%
\version "2.19.55"

\new Staff <<
   \new Voice {
     \voiceOne
     c''16 e''16~
     \hideNotes
     e''4.
   }
   \new Voice {
     \voiceTwo
     c''8~ \oneVoice <c'' e''>4.
   }
 >>
%%%%%%%%%%%%%%%%%

However, \hideNotes also manages to hide the dot on the second e'',
which I don’t quite know why, since it should be printed from the second
voice.

Best, Simon


_______________________________________________
bug-lilypond mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/bug-lilypond

dot-missing.png (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: \hideNotes hides too many dots

Thomas Morley-2
2017-06-18 12:32 GMT+02:00 Simon Albrecht <[hidden email]>:

> Hello,
>
> this is an exemplary use case for \hideNotes:
>
> %%%%%%%%%%%%%%%%%
> \version "2.19.55"
>
> \new Staff <<
>   \new Voice {
>     \voiceOne
>     c''16 e''16~
>     \hideNotes
>     e''4.
>   }
>   \new Voice {
>     \voiceTwo
>     c''8~ \oneVoice <c'' e''>4.
>   }
>>>
> %%%%%%%%%%%%%%%%%
>
> However, \hideNotes also manages to hide the dot on the second e'', which I
> don’t quite know why, since it should be printed from the second voice.

As far as I understand, LilyPond drops one dot when merging the two dotted e''

See the terminal-output of:

#(define ((dots prop) dot-column)
  (let* ((array (ly:grob-object dot-column 'dots))
         (lst (if (ly:grob-array? array)
                  (ly:grob-array->list array)
                  '()))
         (dots
           (filter (lambda (g) (grob::has-interface g 'dots-interface)) lst)))
    (format #t "\n\tdots ~a ~a" prop dots)))

displayDotsBeforeAndAfterLineBreaking = {
  \override Staff.DotColumn.before-line-breaking = #(dots 'before-line-breaking)
  \override Staff.DotColumn.after-line-breaking = #(dots 'after-line-breaking)
}

\new Staff <<
  \displayDotsBeforeAndAfterLineBreaking
  \new Voice {
    \voiceOne
    c''16 e''16~
    \override Dots.color = #green
    e''4.
  }
  \new Voice {
    \voiceTwo
    c''8~
    \override Dots.color = #red
    <c'' e''>4.
  }
>>

Actually in the DotColumn are only two dots remaining: one from the
_upper_ Voice for e'' and one from the _lower_ Voice for c''

\hideNotes in the upper Voice now hides the dot for e''

I've no clue how this _could_ be fixed.
I failed to identify the code responsible for dropping one dot either.
While researching I noticed removing Dot_column_engraver or suiciding
DotColumn does not change this behaviour. So DotColumn seems to be not
the guilty one.

At least a work-around:

\new Staff <<
  \new Voice {
    \voiceOne
    c''16 e''16~
    \hideNotes
    \revert Dots.transparent
    e''4.
  }
  \new Voice {
    \voiceTwo
    c''8~
    <c'' e''>4.
  }
>>

Cheers,
  Harm

_______________________________________________
bug-lilypond mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/bug-lilypond
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: \hideNotes hides too many dots

Robin Bannister-2
Thomas Morley wrote:
> I've no clue how this _could_ be fixed.
> I failed to identify the code responsible for dropping one dot either.


In 2.18.2 this is note-collision.cc, which comments:
 > when merging identical heads, dots on the down-stem head disappear

Further down, dot_wipe_head triggers suicide rather than transparency.


Cheers,
Robin

_______________________________________________
bug-lilypond mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/bug-lilypond
Loading...