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

Reply via email to