\version "2.15.27" %\version "2.15.28" %% Span ----------------------------------- %% Syntaxe: \bbarre #"text" { notes } - text = any number of box barre= #(define-music-function (barre location str music) (string? ly:music?) (let ((spanned-music (let ((first-element #f) (last-element #f) (first-found? #f)) (music-map (lambda (m) (if (eqv? (ly:music-property m 'name) 'EventChord) (begin (if (not first-found?) (begin (set! first-found? #t) (set! first-element m))) (set! last-element m))) m) music) (if first-found? (begin (set! (ly:music-property first-element 'elements) (cons (make-music 'TextSpanEvent 'span-direction -1) (ly:music-property first-element 'elements))) (set! (ly:music-property last-element 'elements) (cons (make-music 'TextSpanEvent 'span-direction 1) (ly:music-property last-element 'elements))))) music))) (make-music 'SequentialMusic 'origin location 'elements (list #{ \once \override TextSpanner #'style = #'line \once \override TextSpanner #'bound-details = #'((left (Y . 0) (padding . 0.25) (attach-dir . -2)) (right (Y . 0) (padding . 0.25) (attach-dir . 2))) \once \override TextSpanner #'bound-details #'right #'text = \markup { \draw-line #'( 0 . -.5) } \once \override TextSpanner #'bound-details #'left #'text = \markup { $str } #} spanned-music)))) \relative c' { \barre #"BI" { f,4 bes es g } c c c\startTextSpan c c\stopTextSpan }