Schlagpfeile

Begonnen von Hilflos-im-Code, Donnerstag, 5. März 2020, 10:55

« vorheriges - nächstes »

Hilflos-im-Code

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.

harm6

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

Hilflos-im-Code

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.