[Top][All Lists]
[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
- Does LaissezVibrerTie need a 'cross-staff callback?,
Neil Puttock <=