Many thanks David and Harm At 14:41 on 19 Nov 2024, Thomas Morley wrote:
> Or even: > \override Hairpin.to-barline = > #(lambda (grob) > (let* ((right-bound (ly:spanner-bound grob RIGHT)) > (nhds (ly:grob-object right-bound 'note-heads #f))) > (not nhds))) This works, but crashes with broken hairpins: \version "2.25.20" { \override Hairpin.minimum-length = #5 \override Hairpin.to-barline = ##t r2 e'2\ff\>~ 2~ 2~\p-\tweak color red \<^\markup \tiny "wrong: continue to notehead" 8\! r8 r4 e'2\ff\>~ 2~ 2\p\<^\markup \tiny "correct: stop at barline" r2\! \break \override Hairpin.to-barline = ##f e'2\ff\>~ 2~ 2~\p\<^\markup \tiny "correct: continue to notehead" 8\! r8 r4 e'2\ff\>~ 2~ 2\p-\tweak color red \< ^\markup \tiny "wrong: stop at barline" r2\! \break \override Hairpin.to-barline = #(lambda (grob) (let* ((right-bound (ly:spanner-bound grob RIGHT)) (nhds (ly:grob-object right-bound 'note-heads #f))) (not nhds))) e'2\ff\>~ 2~ 2~\p\<^\markup \tiny "correct" 8\! r8 r4 e'2\ff\>~ 2~ 2\p\< ^\markup \tiny "correct" r2\! %% broken hairpin crashes %% GNU LilyPond 2.25.20 (running Guile 3.0) %% Processing `hairpin.ly' %% Parsing... %% Interpreting music...[8][16][24] %% /usr/share/lilypond/2.25.20/ly/init.ly:66:2: error: Guile signaled an error for the expression beginning here %% # %% (let ((book-handler (if (defined? 'default-toplevel-book-handler) %% In procedure ly:grob-object: Wrong type argument in position 1 (expecting Grob): () r2 e'1~\< 1~ 1~ 1~ 1~ \break 1~ 1~ 1~ 1~ 1~ 1 R1\! e'1~\< 1~ 1~ 1~ 1~ 1~ 1~ \break 1~ 1~ 1~ 1~ 8\! r r4 r2 } -- Mark Knoop