Hallo zusammen,
es ist mir gelungen die Bracket in der neuen Zeile zudrehen!

Dazu habe ich die Definition für
shift-right-at-line-begin aus
/scm/output-lib.scm verändert. Eine Definition für
my-bar-glyph-alist, die sich in ihrem einzigen Inhaltspunkt noch nicht mal vom Original unterscheidet, war nur nötig um der Definition
my-bar-line::calc-glyph-name grob einen Bezugspunkt zu liefern.
Jetzt gelingt es auch ein neues
\Break zu bestimmen mit einem üblichen
\bar ":|:" und
\break als "Auslöser".
Nun kann man alles schöner und einfacher gestalten. Es gibt auch keine Verschiebung nach rechts mehr und beim Taktwechsel erscheint die Taktangabe genauso wie in der default-Einstellung.
Beim Schreiben würde ich ganz normal die Noten mit den neuen
repeatBrackets setzen und nur dort wo
\combinedRepeatBracket an ein Zeilenende kommt durch
\stopRepeatBracket\Break ersetzen, alternativ
#'line-break-permission = ##f und alles per Hand regeln.
@Robert
Das ist zwar ein übler Hack und noch weit entfernt von einem "
Makro à la [\once] \override BarLine #'style = #'bracket oder auch \bracket \bar ":|.|:"", aber im Moment weiß ich nichts besseres. Und es funktioniert!
\version "2.12.3"
\layout {
indent = 10
short-indent = 10
}
\paper {
ragged-right =##f
}
#(define-markup-command (lthskip layout props amount) (number?)
;; lthskip = "line-thickness skip"
(let ((l-th (ly:output-def-lookup layout 'line-thickness)))
(ly:make-stencil "" (cons 0 (* amount l-th)) '(0 . 0) )))
#(define my-bar-glyph-alist
'((":|:" . (":|" . "|:"))))
#(define (my-bar-line::calc-glyph-name grob)
(let* (
; inlined this from lily-library.scm, since it isn't public
(index-cell (lambda (cell dir)
(if (equal? dir 1)
(cdr cell)
(car cell))))
(glyph (ly:grob-property grob 'glyph))
(dir (ly:item-break-dir grob))
(result (assoc glyph my-bar-glyph-alist))
(glyph-name (if (= dir CENTER)
glyph
(if (and result (string? (index-cell (cdr result) dir)))
(index-cell (cdr result) -1)
#f)))
)
glyph-name))
#(define (rotate-at-line-begin g)
"Rotate an item, but only at the start of the line."
(if (and (ly:item? g)
(equal? (ly:item-break-dir g) RIGHT))
(ly:grob-set-property! g 'rotation (list 180 0 0))
))
startRepeatBracket = {
\once \override Staff.BarLine #'stencil =
#(lambda (grob)
(ly:stencil-add
(ly:stencil-combine-at-edge
(ly:bar-line::print grob)
Y UP
(grob-interpret-markup grob (markup
#:musicglyph "brackettips.up"))
-0.1 0)
(ly:stencil-combine-at-edge
(ly:bar-line::print grob)
Y DOWN
(grob-interpret-markup grob (markup
#:musicglyph "brackettips.down"))
-0.1 0)))
\bar "|:"
}
stopRepeatBracket = {
\once \override Staff.BarLine #'stencil =
#(lambda (grob)
(ly:stencil-add
(ly:stencil-combine-at-edge
(ly:bar-line::print grob)
Y UP
(grob-interpret-markup grob (markup
#:concat (
#:lthskip 6
#:right-align
#:rotate 180
#:musicglyph "brackettips.down" )))
-0.1 0)
(ly:stencil-combine-at-edge
(ly:bar-line::print grob)
Y DOWN
(grob-interpret-markup grob (markup
#:concat (
#:lthskip 6
#:right-align
#:rotate 180
#:musicglyph "brackettips.up" )))
-0.1 0)))
\bar ":|"
}
combinedRepeatBracket = {
\once \override Staff.BarLine #'stencil =
#(lambda (grob)
(ly:stencil-add
(ly:stencil-combine-at-edge
(ly:bar-line::print grob)
Y UP
(grob-interpret-markup grob (markup
#:concat (
#:lthskip 3
#:concat (
#:right-align
#:vcenter
#:rotate 180 #:musicglyph "brackettips.down"
#:lthskip 3
#:vcenter
#:musicglyph "brackettips.up"))))
-0.1 0)
(ly:stencil-combine-at-edge
(ly:bar-line::print grob)
Y DOWN
(grob-interpret-markup grob (markup
#:concat (
#:lthskip 3
#:concat (
#:right-align
#:vcenter
#:rotate 180 #:musicglyph "brackettips.up"
#:lthskip 3
#:vcenter
#:musicglyph "brackettips.down"))))
-0.1 0)))
\bar ":|:"
}
Break = {
\once\override Staff.BarLine #'glyph-name = #my-bar-line::calc-glyph-name
\once\override Staff.BarLine #'after-line-breaking = #rotate-at-line-begin
\bar ":|:"
\break
}
%------------------------- Test ------------------------------------------------
%#(set-global-staff-size 11.22) %% smallest recommended staff size
#(set-global-staff-size 20) %% default staff size
% #(set-global-staff-size 35.2) %% largest recommended staff size
\score {
\relative c' {
\key cis\major
\mark\markup { \with-color #red \fontsize #'3 "Beispiel I" }
\grace s4
\startRepeatBracket
b'1
\stopRepeatBracket
\Break
\time 2/2
e
\stopRepeatBracket
\bar "|."
}
\layout {
ragged-right = ##t
}
}
\relative c' {
%\key cis\major
\mark\markup { \with-color #red \fontsize #'3 "Beispiel II" }
\grace s4
\startRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
des1 \stopRepeatBracket \Break
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
des1 \stopRepeatBracket \Break
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \combinedRepeatBracket
c1 \stopRepeatBracket
}Grüße,
Harm