Fingering spanner
Appearance
Draw a straight or dashed line between two fingerings.
Syntax is
-\guide dashed? offset -f
If Boolean argument dashed? is set to #t, draw a dashed line. The target fingering number is given by f, the offset from f to the start fingering is offset, which is coordinate pair (the X-value of this pair is thus always negative).
This function should be only used after the complete music has been typeset. Any change in the formatting will make the X-offsets invalid.
\version "2.24"
% LSR Credits: PPS in May 2015
guide =
#(define-music-function (dashed? coord fingering)
(boolean? pair? ly:music?)
"Make a line or dashed spanner, starting from the end
fingering and ending at the start fingering.
One should define the ending point with x and y coordinates."
(let ((fingering-ev (make-music 'FingeringEvent))
(finger (ly:music-property fingering 'digit)))
#{
\tweak stencil
#(lambda (grob)
(grob-interpret-markup grob
#{
\markup
\concat {
\line {
\translate #'(0 . 0.5)
\override #'(thickness . 1.3)
\with-dimensions #'(0 . 0) #'(0 . 0)
#(if dashed?
#{
\markup
\override #'(on . 0.8)
\override #'(off . 0.4)
\draw-dashed-line $coord
#}
#{ \markup \draw-line $coord #})
}
\hspace #0.4
#(number->string finger)
}
#}))
$fingering-ev
#}))
%%%% Test:
voiceI = {
\set fingeringOrientations = #'(up)
<cis'-3>16 <e'-0> <a-2> b
<c'-\guide ##f #'(-4 . 1) -2
-1>8
cis' d' dis' e' f' |
fis' g'
<gis'-\guide ##t #'(-39.5 . -2.5) -2
-\guide ##t #'(-39.5 . -2.5) -1>
<a'-3
-\guide ##f #'(-3.5 . -0.2) -1> bes' b'
<c''-\guide ##t #'(-13 . -0.8) -3
-\guide ##t #'(-13 . -0.8) -1>
<cis''-2-4> |
}
voiceII = {
r4 a16 a, ais a, b a, bis a, cis' a, d' a, |
dis' a, e' a, eis' a, fis' a, g' a, gis' a, a' a, g' a, |
}
{
\clef "G_8"
\key d \major
<< \voiceI \\ \voiceII >>
}