Hallo matrices,
schön, daß es Dir gefällt. Perfekt ist es allerdings nicht. Ich wüßte zum Beispiel gern warum der Abstand zwischen SystemStartBracket und SystemStartBar angewachsen ist, obwohl das hinzugefügte markup eine Ausdehnung von null hat. Ich war gezwungen das dann wieder auszugleichen.
Mit Hilfe von David Nalesnik von der englischen Liste weiß ich jetzt aber, warum es mir nicht gelang die SystemStartBracket wieder auf default zurückzusetzen: Denn nicht nur ist eine einzelne SystemStartBracket ein Spanner-Objekt, sondern der ganze SystemStart ist ein einziger großer Spanner und muß als solcher behandelt werden.
Im folgenden habe ich zwei Befehle zum auswählen in den \with-Ausdruck einer jeden StaffGroup geschrieben: der eine schreibt Solo bzw. Choro überall, der andere nur in der ersten Zeile (im Moment aktiv).
Falls Du den Text ("Solo" "Choro"), die Schriftart oder die Größe änderst, mag es notwendig sein im solo-group-markup bzw choro-group-markup den Wert von make-translate-markup zu ändern.
\version "2.14.2"
\paper {
indent = 22
%left-margin = 1.3\cm
}
#(define ((system-start markup) grob)
(if (ly:stencil? (ly:system-start-delimiter::print grob))
(let* ((start-bar (ly:system-start-delimiter::print grob))
(start-bar-extent (ly:stencil-extent start-bar Y))
(start-bar-middle (/ (interval-length start-bar-extent) -2)))
(ly:stencil-combine-at-edge
(ly:stencil-translate-axis (ly:system-start-delimiter::print grob) 1 X)
Y RIGHT (grob-interpret-markup grob markup) start-bar-middle))
#f))
#(define solo-group-markup
(make-line-markup
(list
(make-with-dimensions-markup '(0 . 0) '(0 . 0)
(make-translate-markup (cons -4 0)
(make-fontsize-markup -1
(make-italic-markup
(make-rotate-markup 90
"SOLO"))))))))
#(define choro-group-markup
(make-line-markup
(list
(make-with-dimensions-markup '(0 . 0) '(0 . 0)
(make-translate-markup (cons -4.95 0)
(make-fontsize-markup -1
(make-italic-markup
(make-rotate-markup 90
"CHORO"))))))))
#(define ((group-callback markup) grob)
(let* ((orig (ly:grob-original grob))
(siblings (if (ly:grob? orig)
(ly:spanner-broken-into orig)
'())))
(if (and (>= (length siblings) 2)
(not (eq? (car (reverse siblings)) grob)))
(if (ly:stencil? (ly:system-start-delimiter::print grob))
(let* ((start-bar (ly:system-start-delimiter::print grob))
(start-bar-extent (ly:stencil-extent start-bar Y))
(start-bar-middle (/ (interval-length start-bar-extent) -2)))
(ly:stencil-combine-at-edge
(ly:stencil-translate-axis (ly:system-start-delimiter::print grob) 1 X)
Y RIGHT (grob-interpret-markup grob markup) start-bar-middle))
#f)
(ly:system-start-delimiter::print grob)
)))
one = \relative c' {
a1 \repeat unfold 20 { a }
}
two = \relative c' {
b \repeat unfold 20 { b }
}
three = \relative c' {
c \repeat unfold 20 { c }
}
four = \relative c' {
d \repeat unfold 20 { d }
}
oneAll = \relative c' {
a \repeat unfold 20 { a }
}
twoAll = \relative c' {
b \repeat unfold 20 { b }
}
threeAll = \relative c' {
c \repeat unfold 20 { c }
}
fourAll = \relative c' {
d \repeat unfold 20 { d }
}
\score {
<<
\new StaffGroup
\with {
% write "SOLO" only at the first line
\override SystemStartBracket #'stencil = #(group-callback solo-group-markup)
% write "SOLO" at all lines
%\override SystemStartBracket #'stencil = #(system-start solo-group-markup)
}
<<
\new Staff \with { instrumentName = "Sopran" } \one
\new Staff \with { instrumentName = "Alt" } \two
\new Staff \with { instrumentName = "Tenor" } \three
\new Staff \with { instrumentName = "Bass" } \four
>>
\new StaffGroup
\with {
% write "CHORO" only at the first line
\override SystemStartBracket #'stencil = #(group-callback choro-group-markup)
% write "CHORO" at all lines
%\override SystemStartBracket #'stencil = #(system-start choro-group-markup)
}
<<
\new Staff \with { instrumentName = "Sopran" } \oneAll
\new Staff \with { instrumentName = "Alt" } \twoAll
\new Staff \with { instrumentName = "Tenor" } \threeAll
\new Staff \with { instrumentName = "Bass" } \fourAll
>>
>>
\layout {
\context {
\Score
\override VerticalAxisGroup #'remove-first = ##t
}
\context {
\Staff
\RemoveEmptyStaves
}
}
}
Gruß,
Harm