2018-03-24 17:19 GMT+01:00 paolo prete <paoloprete...@gmail.com>: > Hello, > > as you can see from the below snippet, the bracket of the sustain pedal is > not properly extended when the last note is shifted. > Is this a bug? Is there a way to fix it or a work-around ?
Iiuc, the PianoPedalBracket is left/right bound by PaperColumns. If you move NoteColumn, then you move it relative to it's PaperColumn, but PaperColumn is _not_ changed. Thus the PianoPedalBracket doesn't move along. Not a bug but a consequencee of the current implementation. Btw, this was changed between 2.14 and 2.16. Most likely with https://sourceforge.net/p/testlilyissues/issues/2153/ I did some more research/comparison with Hairpins, which may be bounded by PaperColumns as well. Obviously there is some more fine-grained hierarchy coded how to bound Hairpins. Something like: DynamicText present? -> NoteColumn? ->PaperColumn Nevertheless this does not explain the behaviour of the Hairpin in the last Dynamics-context below. Or probably I don't fully understand what's going. Make that a 'likely' lol The code prints a lot of info, visible in pdf/readable in terminal. You may try to uncomment the commands in the first Dynamics-context, might be a work-around. How to do final adjustments Kieren already demonstrated by using 'shorten-pair. Old syntax is used and some definitions added to make it work even with 2.14. #(use-modules (ice-9 pretty-print)) #(define-public (grob::name grob) "Return the name of the grob @var{grob} as a symbol." (assq-ref (ly:grob-property grob 'meta) 'name)) #(define print-info (lambda (grob) (format #t "\ncurrent default-bounds:\n~y" (list (grob::name grob) (ly:spanner-bound grob LEFT) (ly:spanner-bound grob RIGHT))))) #(define nc-bounds! (lambda (grob) (let* ((left-b (ly:spanner-bound grob LEFT)) (left-elts (ly:grob-object left-b 'elements)) (left-elts-ls (if (ly:grob-array? left-elts) (ly:grob-array->list left-elts) '())) (left-nc (filter (lambda (g) (grob::has-interface g 'note-column-interface)) left-elts-ls)) (right-b (ly:spanner-bound grob RIGHT)) (right-elts (ly:grob-object right-b 'elements)) (right-elts-ls (if (ly:grob-array? right-elts) (ly:grob-array->list right-elts) '())) (right-nc (filter (lambda (g) (grob::has-interface g 'note-column-interface)) right-elts-ls))) ;(print-info grob) (if (pair? left-nc) (ly:spanner-set-bound! grob LEFT (car left-nc))) (if (pair? right-nc) (ly:spanner-set-bound! grob RIGHT (car right-nc)))))) \score { << \new Staff \with { instrumentName = "Staff 1 " } { c'2\sustainOn f' \once \override Score.NoteColumn #'X-offset = 10 c''\sustainOff } \new Staff \with { instrumentName = "Staff 2 " } { c'\< f' c''\mf } \new Staff \with { instrumentName = "Staff 3 " } { c'\< f' c''\! } \new Dynamics \with { instrumentName = "Dyn 1 " } { %\override Dynamics.PianoPedalBracket #'after-line-breaking = #nc-bounds! %\override Dynamics.PianoPedalBracket #'shorten-pair = #'(0 . -1) s\sustainOn s s\sustainOff } \new Dynamics \with { instrumentName = "Dyn 2 " } { s\< s s\mf } \new Dynamics \with { instrumentName = "Dyn 3 " } { s\< s s\! } >> \layout { \context { \Dynamics \consists "Instrument_name_engraver" \override VerticalAxisGroup #'nonstaff-nonstaff-spacing = #'((padding . 2)) \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing = #'((padding . 4)) \override Hairpin #'after-line-breaking = #print-info \override PianoPedalBracket #'after-line-breaking = #print-info } \context { \Voice \override Hairpin #'after-line-breaking = #print-info } \context { \Staff \override PianoPedalBracket #'after-line-breaking = #print-info } \context { \Score timing = ##f pedalSustainStyle = #'mixed \override PaperColumn #'stencil = #ly:paper-column::print } } } Cheers, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user