> On 22.01.2016 16:11, Simon Albrecht wrote: >> The feature is designed for a very specific case: Renaissance vocal music, >> one voice per staff, no chords, no dynamics etc. With this callback, I crop >> those stems which protrude beyond the staff, such as to allow for still >> closer vertical spacing.
Ok, are there any rests? If so, you’ll get this error: In procedure ly:grob-array-ref in expression (ly:grob-array-ref note-heads 0): /var/folders/x0/800486lw8xj7t90059bpdlb00000gn/T/frescobaldi-tHHLRO/tmpJg6Ur_/document.ly:7:23: Wrong type argument in position 1 (expecting Grob_array): () since rests actually have stem grobs (that usually don’t produce visible output) but they have no grob array of note heads. Below is a version that overrides note head grobs which avoids this rest problem. Also it looks like you don’t need to bother with the note column, as it seems these both work directly: (note-heads-grob-array (ly:grob-object stem-grob 'note-heads)) (stem-grob (ly:grob-object note-head-grob ‘stem)) Cheers, -Paul %%%%%%%%%%%%% \version "2.19.35" #(define shorten-stem (lambda (note-head) (let* ((stem (ly:grob-object note-head 'stem)) (staff-pos (ly:grob-staff-position note-head)) (stem-len (ly:grob-property stem 'length)) (delta (case (abs staff-pos) ((3) -0.3) ((2) -1) ((1) -1.5) ((0) -1.8) (else 0)))) (ly:grob-set-property! stem 'length (+ stem-len delta))))) mus = { a'4 b' c'' d'' r } { \time 5/4 \mus \override NoteHead.before-line-breaking = #shorten-stem \mus } %%%%%%%%%%%% _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user