Hi Alexis, 

Schneidy has created a snippet for that issue:
http://lsr.di.unimi.it/LSR/Item?id=991

There's a little drawback: You have to (manually) adjust the bracket height
to match the staff group height. 
I've tried a little modification to avoid this: You can add the wings to the
topmost and lowermost staff in the group: 

%
-----------------------------------------------------------------------------------

\version "2.18.2"

#(define-markup-command (staff-group-bracket-upper layout props
bracket-height)(number?)
   "Draw upper wing for StaffGroup bracket."
   (interpret-markup layout props
     (markup
      (#:with-dimensions (cons -0.001 0) (cons 0.001 0)
        (#:override (cons (quote filled) #t)
          (#:path 0.01 `(
                          (moveto  0.00  ,(+ bracket-height 0.35))
                          (curveto  0.00  ,(+ bracket-height 0.43)  0.07 ,(+
bracket-height 0.42)  0.10 ,(+ bracket-height 0.42))
                          (curveto  0.70  ,(+ bracket-height 0.42)  1.10 ,(+
bracket-height 0.60)  1.76 ,(+ bracket-height 1.50))
                          (curveto  1.82  ,(+ bracket-height 1.58)  1.89 ,(+
bracket-height 1.50)  1.85 ,(+ bracket-height 1.45))
                          (curveto  1.14  ,(+ bracket-height 0.40)  0.93 ,(+
bracket-height 0.18)  0.45 ,bracket-height)
                          (lineto   0.00  ,bracket-height)
                          (closepath)
                          )))))))

#(define-markup-command (staff-group-bracket-lower layout props
bracket-height)(number?)
   "Draw lower wing for StaffGroup bracket."
   (interpret-markup layout props
     (markup
      (#:with-dimensions (cons -0.001 0) (cons 0.001 0)
        (#:override (cons (quote filled) #t)
          (#:path 0.01 `(
                          (moveto   0.00  ,(* bracket-height -1))
                          (curveto  0.00  ,(+ (* bracket-height -1) -0.43) 
0.07 ,(+ (* bracket-height -1) -0.42)  0.10 ,(+ (* bracket-height -1)
-0.42))
                          (curveto  0.70  ,(+ (* bracket-height -1) -0.42) 
1.10 ,(+ (* bracket-height -1) -0.60)  1.76 ,(+ (* bracket-height -1)
-1.50))
                          (curveto  1.82  ,(+ (* bracket-height -1) -1.58) 
1.89 ,(+ (* bracket-height -1) -1.50)  1.85 ,(+ (* bracket-height -1)
-1.45))
                          (curveto  1.14  ,(+ (* bracket-height -1) -0.40) 
0.93 ,(+ (* bracket-height -1) -0.18)  0.45 ,(* bracket-height -1))
                          (closepath))))))))

addUpperWing =
#(define-music-function
  (parser location repeat-bar-type)
  (string?)
  (cond
   ((string=? repeat-bar-type "[")
    #{
      \once \override Staff.BarLine.stencil =
      #(lambda (grob)
         (ly:stencil-combine-at-edge
          (ly:bar-line::print grob)
          X LEFT
          (grob-interpret-markup grob
            #{
              \markup
              % \translate #(cons 0 repeat-bar-translate)
              \staff-group-bracket-upper #1.8
            #})))
    #})
   ((string=? repeat-bar-type "]")
    #{

      \once \override Staff.BarLine.stencil =
      #(lambda (grob)
         (ly:stencil-combine-at-edge
          (ly:bar-line::print grob)
          X RIGHT
          (grob-interpret-markup grob
            #{
              \markup
              \rotate #180
              % \translate #(cons 0 repeat-bar-translate)
              \staff-group-bracket-lower #1.8
            #})))
    #})
   (else
    #{
      \once \override Staff.BarLine.stencil = #ly:bar-line::print
    #})))

addLowerWing =
#(define-music-function
  (parser location repeat-bar-type)
  (string?)
  (cond
   ((string=? repeat-bar-type "[")
    #{
      \once \override Staff.BarLine.stencil =
      #(lambda (grob)
         (ly:stencil-combine-at-edge
          (ly:bar-line::print grob)
          X LEFT
          (grob-interpret-markup grob
            #{
              \markup
              \staff-group-bracket-lower #1.8
            #})))
    #})
   ((string=? repeat-bar-type "]")
    #{

      \once \override Staff.BarLine.stencil =
      #(lambda (grob)
         (ly:stencil-combine-at-edge
          (ly:bar-line::print grob)
          X RIGHT
          (grob-interpret-markup grob
            #{
              \markup
              \rotate #180
              \staff-group-bracket-upper #1.8
            #})))
    #})
   (else
    #{
      \once \override Staff.BarLine.stencil = #ly:bar-line::print
    #})))

%%% Test:
\new StaffGroup <<
  \new Staff \relative c' {
    c4 d e f
    \repeat volta 2 {
      \addUpperWing #"["
      g a b c
      d e f g
      \addUpperWing #"]"
    }
    s8
  }
  \new Staff \relative c {
    \clef F
    c4 d e f
    \repeat volta 2 {
      g a b c
      d e f g
    }
    s8
  }
  \new Staff \relative c, {
    \clef F
    c4 d e f
    \repeat volta 2 {
      \addLowerWing #"["
      g a b c
      d e f g
      \addLowerWing #"]"
    }
    s8
  }
>>

%
-----------------------------------------------------------------------------------

Cheers, 
Klaus



--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/Winged-repeat-bar-line-unique-over-multiple-staves-tp188804p188828.html
Sent from the User mailing list archive at Nabble.com.

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to