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