|
From: | Mike Solomon |
Subject: | Re: shorten a broken hairpin at a linebreak? |
Date: | Tue, 30 Aug 2011 08:59:58 +0200 |
On Aug 29, 2011, at 11:56 PM, David Nalesnik wrote:
How about: \version "2.14.0" #(define (has-interface? grob interface) (member interface (assoc-get 'interfaces (ly:grob-property grob 'meta)))) #(define (find-system grob) (if (has-interface? grob 'system-interface) grob (find-system (ly:grob-parent grob X)))) #(define (first-musical-column grobl) (if (not (eqv? #t (ly:grob-property (car grobl) 'non-musical))) (car grobl) (first-musical-column (cdr grobl)))) #(define (change-bound grob) (let* ((system (find-system grob)) (cols (ly:grob-array->list (ly:grob-object system 'columns))) (musical-column (first-musical-column (reverse cols)))) (ly:spanner-set-bound! grob RIGHT musical-column))) #(define (my-callback grob) (let* ( ;; have we been split? (orig (ly:grob-original grob)) ;; if yes, get the split pieces (our siblings) (siblings (if (ly:grob? orig) (ly:spanner-broken-into orig) '()))) (if (and (>= (length siblings) 2) (not (eq? (car (reverse siblings)) grob))) (change-bound grob)))) { \override Hairpin #'after-line-breaking = #my-callback a\< \repeat unfold 31 { a } \break \key fis \major \repeat unfold 74 { a } a\p } Cheers, MS |
[Prev in Thread] | Current Thread | [Next in Thread] |