Hallo Arnold,
vielen Dank für Deine Hinweise!
Die Höhe einer StaffGroup auszulesen ist dann ganz einfach, wenn man sich an den SystemStartBar hält. Aber es löst das Problem nicht.
Um den Code zu vereinfachen habe ich ein anderes Beispiel genommen: Das BreathingSign soll durch eine Linie ersetzt werden, die sich über alle Systeme einer StaffGroup erstreckt. (Im Moment wieder manuel eingestellt)
Die Höhe der aktuellen StaffGroup kann ich durch die start-bar-callback-Definition ablesen (start-bar-size). Diesen Wert habe ich dann benutzt um den SystemStartBar um die eigene Höhe zu verschieben.
Aber ich kann ihn auch wirklich nur benutzen, um den SystemStartBar zu manipulieren bzw ich verstehe nicht wie ich auf diesen Wert zugreifen kann, wenn ich die Linie für das BreathingSign bestimmen will.
Alle bisherigen Versuche führten zu einem Speicherzugriffsfehler.
Im übrigen denke ich, daß die »before-line-breaking«-Prozedur nicht zum Ziel führen wird. »after-line-breaking« mag funktionieren. Ich bin jetzt immer über »stencil« gegangen.
\version "2.14.2"
\header {
title = \markup \vspace #5
}
#(define (start-bar-callback grob)
(let* ((start-bar (ly:system-start-delimiter::print grob))
(start-bar-extent (ly:stencil-extent start-bar Y))
(start-bar-size (interval-length start-bar-extent))
(start-bar-red (ly:stencil-in-color start-bar 1 0 0)))
(ly:stencil-translate-axis start-bar-red start-bar-size Y)))
% führt zu:
% \override Score.SystemStartBar #'stencil = #start-bar-callback
bs =
#(define-music-function (parser location ext)(number?)
#{
#(define breathing-sign-markup
(make-line-markup
(list
"\\bs"
(make-with-dimensions-markup '(0 . 0) '(0 . 0)
(make-with-color-markup blue
(make-draw-line-markup (cons 0 $ext)))))))
\override BreathingSign #'text = #breathing-sign-markup
\breathe
#})
%-------------------------- Test -----------------------------------------------
one = {
\relative c' {
\override Score.SystemStartBar #'stencil = #start-bar-callback
a2 b c\bs #-13.0 d \break
a,, b'' c\bs #-22.5 d
}
}
two = {
\relative c {
\clef bass
a2 b c d
a'' b,, c d
}
}
\score {
\new StaffGroup <<
\new Staff \one
\new Staff \two
>>
}
Gruß,
Harm