Notationsspezifisch > Noten für Gitarre

Schlagpfeile / Schlagmuster

(1/2) > >>

gfuellerer:
Ich habe mir Schlagpfeile über einen markup definiert:


--- Code: ---arrUp=_\markup {
  \fontsize #5
  \override #'(thickness . 2)
  \combine
    \arrow-head #Y #UP ##t
    \draw-line #'(0 . -4)
}
--- Ende Code ---

und auch die Diskussion unter https://liarchiv.joonet.de/index.php?topic=1493.0 gelesen.
Die Schlagpfeile können mittels markup entweder über oder unter den Noten platziert werden. Wie bekomme ich sie über die Notenlinien (vgl. OriginalSchlgapfeile).

Frohe Weihnachten!

Pierre:
Hallo gfuellerer,

Siehe hier: http://lilypond.1069038.n5.nabble.com/arpeggio-line-td57703.html#a57704


--- Code: ---%% \version "2.19.34"
%% oder:
\version "2.18.2"

arpeggioStrikeDown = {
        \override Arpeggio.stencil =
          #(lambda (grob)
            (let* ((pos (ly:grob-property grob 'positions))
                   (ln (grob-interpret-markup grob
                         (markup #:override (cons (quote thickness) 1.3) #:draw-line
                          `(0 . ,(- (interval-length pos))))))
                   (arrow-head (grob-interpret-markup grob (markup
                       #:arrow-head Y DOWN #f))))
            (ly:stencil-add
              (ly:stencil-translate-axis ln (interval-end pos) Y)
              (ly:stencil-translate-axis arrow-head (interval-start pos) Y))))

% Perhaps you may want to adjust the 'X-extent-override
        \override Arpeggio.X-extent = #'(-0.4 . 0.4)

        \override Arpeggio.Y-extent =
        #(ly:make-unpure-pure-container
          ly:grob::stencil-height
          (lambda (grob start end) (ly:grob::stencil-height grob)))
}

arpeggioStrikeUp = {
        \override Arpeggio.stencil =
          #(lambda (grob)
            (let* ((pos (ly:grob-property grob 'positions))
                   (ln (grob-interpret-markup grob
                         (markup #:override (cons (quote thickness) 1.3) #:draw-line
                          `(0 . ,(- (interval-length pos))))))
                   (arrow-head (grob-interpret-markup grob (markup
                      #:arrow-head Y UP #f))))

            (ly:stencil-add
              (ly:stencil-translate-axis ln (interval-end pos) Y)
              (ly:stencil-translate-axis arrow-head (interval-end pos) Y))))

% Perhaps you may want to adjust the 'X-extent-override
        \override Arpeggio.X-extent = #'(-0.4 . 0.4)

        \override Arpeggio.Y-extent =
        #(ly:make-unpure-pure-container
          ly:grob::stencil-height
          (lambda (grob start end) (ly:grob::stencil-height grob)))
}

\relative c' {
        \arpeggioStrikeDown
        <c' e g bes>\arpeggio
        <c, e g bes>\arpeggio

        \arpeggioStrikeUp
        <c' e g bes>\arpeggio

        \arpeggioStrikeDown
        <c, e g bes>
        -\tweak positions #'(-4 . 3)
        \arpeggio

        \arpeggioStrikeUp
        <c e g bes>
        -\tweak positions #'(-3.5 . 2.5)
        \arpeggio

        \arpeggioNormal
        <c e g bes>\arpeggio
}

\relative c {
        \time 3/16

        \arpeggioStrikeDown
        <e c' fis dis'>16\mf
        -\tweak positions #'(-6 . 3)
        \arpeggio
}
--- Ende Code ---

Frohe Weihnachten!
Pierre

harm6:
Ich finde die Schlagpfeile ja übersichtlicher, wenn sie über oder unter dem System stehen, wie hier:
http://lsr.di.unimi.it/LSR/Item?id=409
Aber ich kenn' es auch anders.

ich würde Arpeggio überschreiben:


--- Code: ---\version "2.19.32"

#(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
#})


\new Staff <<
  \new Voice {
    \time 3/8
    \voiceOne
    %\override Arpeggio.thickness = 2
    gis'8 <b e' gis' b' e''>16\strikeUp 16\strikeDown 16\strikeUp 16\strikeDown
  }
  \new Voice {
    \voiceTwo e'8 b16 16 16 16
  }
>>

--- Ende Code ---

HTH,
  Harm

P.S.
Hab' gerade gesehen, daß Pierre meinen früheren Code verlinkt hat.
Der obige ist neuer und eleganter :)

gfuellerer:
Danke für die prompte Rückmeldung - Ich habe den Code von Pierre verwendet.
Beim Code von Harm bekomme ich in Version 2.18.2 folgende Fehlermeldung, die ich nicht verstehe:

--- Code: ---Starte lilypond 2.18.2 [TestSchlagpfeile02_harm.ly]...
»/var/folders/ds/090bttvx3fsfkyn3xs_0m1sr0000gq/T/frescobaldi-mUaw9d/tmpcBPMUQ/TestSchlagpfeile02_harm.ly« wird verarbeitet
Analysieren.../Applications/LilyPond.app/Contents/Resources/share/lilypond/current/scm/ly-syntax-constructors.scm:56:23: In expression (apply (ly:music-function-extract fun) parser ...):
/Applications/LilyPond.app/Contents/Resources/share/lilypond/current/scm/ly-syntax-constructors.scm:56:23: Wrong number of arguments to #<procedure #f ()>
Wurde mit dem Return-Code 1 beendet.
--- Ende Code ---

Mit lilypond 2.19.34 klappt es wunderbar!

harm6:

--- Zitat ---Beim Code von Harm bekomme ich in Version 2.18.2 folgende Fehlermeldung, die ich nicht verstehe:
[...]
--- Ende Zitat ---

Deshalb hatte ich ja auch \version "2.19.32" geschrieben, damit klappt es.

Bitte gebe immer, die von Dir verwendete Version an!

Gruß,
  Harm

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln