[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: |
Mon, 20 Jul 2020 12:32:35 +0200 |
Hi Andrew,
did it help?
Cheers,
Har,
Am So., 19. Juli 2020 um 11:12 Uhr schrieb Thomas Morley
<thomasmorley65@gmail.com>:
>
> 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