On 2021-03-01 2:39 pm, N Trocado wrote:
Thank you for your answer.
I do use /once when appropriate, and defining a variable indeed helps
with the typing.
But I was hoping for a way of establishing that all hairpins that
cross time signature changes extend beyond the barline, and if
lilypond took care of this automatically it would be one less thing
for me to worry about 🙂.

So it just the case that you want hairpins to extend over time signatures? A custom engraver could automate that:

%%%%
\version "2.22.0"

extendHairpinsAcrossTimeSignature =
#(lambda (context)
  (let ((hairpins '()))
   (define (extend-hairpin grob)
    (ly:grob-set-property! grob 'to-barline #f))
   (define (add-hairpin grob)
    (set! hairpins (cons grob hairpins)))
   (define (remove-hairpin grob)
    (set! hairpins (remove (lambda (x) (eq? x grob)) hairpins)))
   (make-engraver
    (listeners
     ((time-signature-event engraver event)
      (for-each extend-hairpin hairpins)
      (set! hairpins '())))
    (acknowledgers
     ((hairpin-interface engraver grob source)
      (add-hairpin grob)))
    (end-acknowledgers
     ((hairpin-interface engraver grob source)
      (remove-hairpin grob))))))

\new Staff \with {
  \consists \extendHairpinsAcrossTimeSignature
}
\fixed c' {
  | \time 3/4 g2 a8 \< b | cis'2 \! r4
  | d'4 \> cis' b | \time 2/4 ais2 \!
  | g4 fis8 \< g | \time 3/4 a8 \! b a2 \>
  | g4 \! f e | \time 2/4 d2 \bar "|."
}
%%%%


-- Aaron Hill

Reply via email to