Hallo fairsein,
Wie bekommt man aber nun die ^\markup { \finger "3 - 1" }- Ausdrücke auf die gleiche Höhe?
Der Ausdruck "3-1" bedeutet doch einen "stummen" Wechsel vom dritten auf den ersten Finger!?
Wenn es gelingt, diesen Ausdruck als Fingersatz und nicht als TextScript zu kodieren, so kann man die sich auf Fingersätze beziehenden Befehle anwenden ohne zwischen `Fingering´ und `TextScript´ differenzieren zu müssen.
Mit
2.14.2 kann man folgenden Code benutzen:
\version "2.14.2"
switchFinger =
#(define-music-function (parser location arg)(markup?)
(let ((finger-a (car (string-split arg #\- )))
(finger-b (cadr (string-split arg #\- )))
(dash (markup #:normal-text #:fontsize 3 "-"))
(finger (make-music 'FingeringEvent)))
(set! (ly:music-property finger 'tweaks)
(acons 'text (markup #:concat (finger-a dash #:hspace 0.1 finger-b))
(ly:music-property finger 'tweaks)))
finger))
\relative c'' {
c-1
d-\switchFinger "1-3"
% \set fingeringOrientations = #'(right)
<e-\switchFinger "1-2" g-\switchFinger "2-3" b-\switchFinger "3-4">
f-4
}In
2.16.0 funktioniert das zwar auch, aber mit der neuen stable kann man sehr viel einfacher Kodieren und es besteht danach auch keine Notwendigkeit mehr für das "-" vor \switchFinger.
\version "2.16.0"
switchFinger =
#(define-event-function (parser location arg)(markup?)
(let ((finger-a (car (string-split arg #\- )))
(finger-b (cadr (string-split arg #\- )))
(dash #{ \markup { \normal-text \fontsize #3 "-" } #}))
#{
\tweak #'text \markup
\concat {
#finger-a
#dash
\hspace #0.1
#finger-b
}
-0
#}))
\relative c'' {
c-1
d\switchFinger "1-3"
% \set fingeringOrientations = #'(right)
<e\switchFinger "1-2" g\switchFinger "2-3" b\switchFinger "3-4">
f-4
}Anmerkung: In beide Definitionen habe ich `hspace´ eingefügt, da mir der output damit mehr zusagte. Falls es jemanden stört, kann man es einfach rauslöschen.
HTH,
Harm