On Dec 30, 2011, at 11:47 PM, Pavel Roskin wrote: > Hello! > > I'm trying to implement cross-staff stems that would not get > disconnected when the distance between staves changes. > > Ideally, I need a function that would extend the stem from the note in > the lower staff exactly until it meets the stem of the note on the > staff above. > > As a simpler solution, I want the stem length to be as long as > the distance between staves plus or minus a constant. > > Since I need both the context and the particular note, I decided to go > with the \applyOutput approach and filter out non-stems. > > That's where I got so far: > > #(define (longerstem grob grob-origin context) > (if (memq 'stem-interface (ly:grob-interfaces grob)) > (set! (ly:grob-property grob 'length) > (cdr (assoc 'Y-extent (ly:context-grob-definition context > 'VerticalAlignment)))))) > > << \applyOutput #'Voice #longerstem c4 >> > > I get this in the output: > > programming error: no pure Y common refpoint > > Does anyone have an idea how to deal with it? >
You can use Scheme engravers. I use them for exactly this sorta thing. input/regression/scheme-engraver.ly in the source code for LilyPond (you can google this file to find it on a few servers). Cheers, MS _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user