Hej.
Aus
Snippet 650 habe ich mir die Pfeile abgeguckt, die am Ende eines divisi-Abschnitts in den Streichern das Einschwenken auf die erste Stimme markieren sollen. Will ich das nun mitten im Takt machen, muss ich zusätzlich
\bar ""\noBreak vor dem
\divisiStopPfeil einfügen – das führt dann aber in Parallelstimmen zu einem (unsichtbaren, aber nicht breitenlosen) Taktstrich, an dem automatische Balken beendet werden und allerlei solche Späße.
Um das grundsätzlich zu beheben, müsste ich es schaffen, die Wirkung des Taktstrichs auf nur einen Staff zu beschränken (unwahrscheinlich) – oder den Pfeil vom Taktstrich unabhängig machen und als Makrup an etwas anderes hängen... Kann mir da jemand helfen?
Besten Dank
– Gereon
\version "2.18.2."
#(define-markup-command (arrow-at-angle layout props angle-deg length fill)
(number? number? boolean?)
(let* (
(PI-OVER-180 (/ (atan 1 1) 34))
(degrees->radians (lambda (degrees) (* degrees PI-OVER-180)))
(angle-rad (degrees->radians angle-deg))
(target-x (* length (cos angle-rad)))
(target-y (* length (sin angle-rad))))
(interpret-markup layout props
(markup
#:translate (cons (/ target-x 2) (/ target-y 2))
#:rotate angle-deg
#:translate (cons (/ length -2) 0)
#:concat (#:draw-line (cons length 0)
#:arrow-head X RIGHT fill)))))
divisiStopPfeil = {
\once \override Staff.BarLine.stencil =
#(lambda (grob)
(ly:stencil-combine-at-edge
(ly:bar-line::print grob)
X RIGHT
(grob-interpret-markup grob #{
\markup\with-dimensions #'(0 . 0) #'(0 . 0) {
\translate #'(0 . .14)\arrow-at-angle #60 #(sqrt 8) ##t
}#})
0))
}
musik = \relative c'' { d,8 f a d b a g f g }
<<
\new Staff << \repeat unfold 2 { \musik } >>
\new Staff << { \retrograde \musik \bar ""\noBreak \divisiStopPfeil \stopStaff } >>
>>