lilypond-devel
[Top][All Lists]
Advanced

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

Does LaissezVibrerTie need a 'cross-staff callback?


From: Neil Puttock
Subject: Does LaissezVibrerTie need a 'cross-staff callback?
Date: Mon, 6 Sep 2010 22:01:39 +0100

'sHi everybody,

I'm getting cyclic dependency problems with laissez vibrer ties
attached to cross-staff notes which seems harmless in a minimal
snippet, but more serious in a real music example.  It appears to have
been introduced following the fix for issue #881, which made the
LaissezVibrerTie print callback pure using a wrapper around
ly:tie::print.

Here's a minimal example which produces unobjectionable output, but
spits out programming errors:

\version "2.13.33"

<<
  \new Staff = "up" \relative c'' {
    c8
    \change Staff = "down"
    c,8\laissezVibrer
    \change Staff = "up"
    c'8 c
  }
  \new Staff = "down" { s2 }
>>

-> programming error: cyclic dependency: calculation-in-progress
encountered for #'direction (Stem)

-> c,8\laissezVibrer

In a real score, it's more serious, since it's preventing automatic
kneed beams from working; in this case the (voluminous) errors are for
adjacent-pure-heights:

-> programming error: cyclic dependency: calculation-in-progress
encountered for #'adjacent-pure-heights (VerticalAxisGroup)

Though I can fix this easily using a 'cross-staff callback which reads
the Stem's value,

\override LaissezVibrerTie #'cross-staff =
#(lambda (grob)
    (let* ((note-head (ly:grob-object grob 'note-head))
            (stem (ly:grob-object note-head 'stem)))

      (and stem
             (ly:grob-property stem 'cross-staff))))

I wondered whether this is the right approach;  perhaps we should
rethink the fix for issue #881 instead.

Cheers,
Neil



reply via email to

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