lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Tie suicide location


From: Thomas Morley
Subject: Re: Tie suicide location
Date: Sun, 19 Jul 2020 11:12:50 +0200

Am So., 19. Juli 2020 um 10:38 Uhr schrieb Kevin Barry <barrykp@gmail.com>:
>
> On Sun, 2020-07-19 at 18:08 +1000, Andrew Bernard wrote:
> > What is this error really about? Is there any way to perform a
> > textual
> > search to pin it down?
>
> The error occurs when LilyPond tries to find the points to attach a tie
> to and can't find a notehead. The two situations in which this might
> occur would be:
> - you've removed the noteheads
> - the tie spans 3 or more systems (each system will have a part of the
> tie, but since there are only notes at the beginning and the end, the
> system in the middle has a tie with no noteheads)
>
> Kevin

Hi Kavin, Andrew,

I don't think the first mentioned case happens here, at least
{ \omit NoteHead b1~ b }
returns
lilypond: /home/hermann/lilypond-git/build/../flower/include/interval.hh:256:
T Interval_t<T>::center() const [with T = double]: Assertion
`!is_empty ()' failed.
Aborted (core dumped)
Not the problem Andrew reported.

For the second case below may help:

foo =
  \override Tie.after-line-breaking =
      #(lambda (grob)
        ;; For a dead Tie return the measure number and moment within
the measure
        ;; of the starting point. Additionally color the remaining parts red.
        (let* ((orig (ly:grob-original grob))
             (siblings (if (ly:grob? orig) (ly:spanner-broken-into orig) '()))
             (dead-tie
               (if (pair? siblings)
                   (remove grob::is-live? siblings)
                   '())))
          (if (pair? dead-tie)
              (begin
                (format #t
                  "\n\tThe broken Tie starting here: ~a has a dead part.\n"
                  (grob::rhythmic-location (ly:spanner-bound orig LEFT)))
                (map
                  (lambda (tie) (ly:grob-set-property! tie 'color red))
                  siblings)))))

\layout {
  \context {
      \Voice
      \remove "Forbid_line_break_engraver"
  }
}

\new Staff
<<
  { \foo b1~ b b1*2~ b1 }
  { s1 \break s1 s1 \break s1 \break s1 }
>>

If you already have some procedure set to Tie.after-line-breaking, it
will get disturbed ofcourse.

HTH,
  Harm



reply via email to

[Prev in Thread] Current Thread [Next in Thread]