Ich habe gerade versucht ein Skript von https://archiv.lilypondforum.de/index.php?topic=2140.0 zu verwenden.
\version "2.20.0"
#(define ((strike direction) grob)
(let* ((pos (ly:grob-property grob 'positions))
(thick (ly:grob-property grob 'thickness 1)))
(grob-interpret-markup grob
(markup
#:combine
#:translate
`(0 . ,(interval-end pos))
#:override `(thickness . ,thick)
#:draw-line
`(0 . ,(- (interval-length pos)))
#:translate
(cons
0
((if (= direction 1) interval-end interval-start)
(interval-widen pos 0.5)))
#:fontsize thick
#:arrow-head Y direction #f))))
strikeUp =
#(define-event-function ()()
#{
-\tweak stencil #(strike UP)
-\tweak X-extent #'(-0.5 . 0.5)
\arpeggio
#})
strikeDown =
#(define-event-function ()()
#{
-\tweak stencil #(strike DOWN)
-\tweak X-extent #'(-0.5 . 0.5)
\arpeggio
#})
m = {\time 3/8
\clef "treble_8"
gis'16 \strikeUp 16\strikeDown a16\strikeUp 16\strikeDown e,16 \strikeUp 16\strikeDown <a' e'>16\strikeUp 16\strikeDown <a, e,>16\strikeUp 16\strikeDown }
\new Staff <<
\new Voice {
\m
}
\new TabStaff
<<
{ \m}
>>
>>
>>
Zwei Probleme treten auf.
1. Die Länge der Pfeile ist zu kurz oder ich hätte sie gerne länger.
2. Die Anordnung der Pfeile in der Tabulatur ist nicht systematisch zu den Zahlen, sondern variiert, je nach Saite.
Hallo,
der Code aus dem Archiv war nie dafür gedacht im TabStaff verwendet zu werden.
Hier ein komplett überarbeiteter Code.
\version "2.20.0"
#(define* (strike direction #:optional (staff-space-factor 0.75))
(lambda (grob)
(let* ((staff-space (ly:staff-symbol-staff-space grob))
(staff-space-fraction (* staff-space-factor staff-space))
(line-thick (ly:staff-symbol-line-thickness grob))
(pos (interval-scale (ly:grob-property grob 'positions) staff-space))
(thick (ly:grob-property grob 'thickness 1))
(arrow-glyph
(format #f "arrowheads.open.1~a1"
(if (negative? direction) "M" "")))
(font (ly:grob-default-font grob))
(arrow-head-stil (ly:font-get-glyph font arrow-glyph))
(arrow-x-ext (ly:stencil-extent arrow-head-stil X))
(y-moved-arrow-head-stil
(ly:stencil-translate-axis
arrow-head-stil
((if (= direction 1) interval-end interval-start)
(interval-widen pos staff-space-fraction))
Y))
(arpeggio-stil-x-ext
(ly:stencil-extent y-moved-arrow-head-stil X)))
(ly:grob-set-property! grob 'X-extent arpeggio-stil-x-ext)
(ly:stencil-add
(make-line-stencil
(* thick line-thick)
0
(+ staff-space-fraction (interval-end pos))
0
(- (interval-start pos) staff-space-fraction))
y-moved-arrow-head-stil))))
strikeUp =
-\tweak stencil #(strike UP)
\arpeggio
strikeDown =
-\tweak stencil #(strike DOWN)
\arpeggio
m = {
\time 3/8
\clef "treble_8"
gis'16 \strikeUp 16\strikeDown
a16\strikeUp 16\strikeDown
e,16 \strikeUp 16\strikeDown
<a' e'>16\strikeUp 16\strikeDown
<a, e,>16\strikeUp 16\strikeDown
}
\markup "DEFAULTS"
strikeUp =
-\tweak stencil #(strike UP 2)
\arpeggio
strikeDown =
-\tweak stencil #(strike DOWN 2)
\arpeggio
<<
\new Staff \m
\new TabStaff \m
>>
overrides = {
\clef "treble_8"
gis'16 \strikeUp
gis'16 \strikeDown
gis'16
-\tweak positions #'(0 . 4)
\strikeUp
gis'16
-\tweak font-size #3
-\tweak positions #'(2 . 3)
\strikeDown
gis'16
-\tweak X-offset -0.5
-\tweak font-size #-1
-\tweak positions #'(2 . 3)
\strikeUp
gis'16
-\tweak X-offset -0.7
-\tweak font-size #3
-\tweak positions #'(2 . 3)
-\tweak thickness 2
\strikeUp
}
\markup "TWEAKS"
<<
\new Staff \overrides
\new TabStaff \overrides
>>
Da er im wesentlichen neu geschrieben ist, mußt Du ihn noch auf möglich bugs hin testen.
HTH,
Harm
Vielen Dank. Es funktioniert bei mir. Falls mit Bugs gemeint, ob die Ausrichtung immer passt,... Das Material, wo sich das raustellen könnte, werde/muss ich noch schreiben. Nochmals vielen Dank.