Am Dienstag, 19. November 2024, 15:22:16 MEZ schrieb Mark Knoop:
> This works, but crashes with broken hairpins:

Hello Mark,

the issue here is not the break, but the spanner ending on a multimeasure 
rest, which causes in the hairpin not having a right bound. The reason for 
this is that the engraver for dynamics only listenes to note columns, which 
includes notes and rests. It does not include MM rests.

This then causes the code to fail, as (ly:spanner-bound grob RIGHT) will 
return '(). To fix this use

  \override Hairpin.to-barline =
    #(lambda (grob)
       (let* ((right-bound (ly:spanner-bound grob RIGHT))
              (nhds (and (ly:grob? right-bound) (ly:grob-object right-bound 
'note-heads #f))))
         (not nhds)))

This way if there is no right bound the behaviour will be just like as if 
there was a rest.

You will by the way get the same problem when you end the Hairpin on a skip.

Cheers,
Valentin

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to