Ich habe mir Schlagpfeile über einen markup definiert:
arrUp=_\markup {
\fontsize #5
\override #'(thickness . 2)
\combine
\arrow-head #Y #UP ##t
\draw-line #'(0 . -4)
}
und auch die Diskussion unter https://archiv.lilypondforum.de/index.php?topic=1493.0 (https://archiv.lilypondforum.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!
Hallo gfuellerer,
Siehe hier: http://lilypond.1069038.n5.nabble.com/arpeggio-line-td57703.html#a57704
%% \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
}
Frohe Weihnachten!
Pierre
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 (http://lsr.di.unimi.it/LSR/Item?id=409)
Aber ich kenn' es auch anders.
ich würde Arpeggio überschreiben:
\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
}
>>
HTH,
Harm
P.S.
Hab' gerade gesehen, daß Pierre meinen früheren Code verlinkt hat.
Der obige ist neuer und eleganter :)
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:
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.
Mit lilypond 2.19.34 klappt es wunderbar!
Zitat
Beim Code von Harm bekomme ich in Version 2.18.2 folgende Fehlermeldung, die ich nicht verstehe:
[...]
Deshalb hatte ich ja auch \version "2.19.32" geschrieben, damit klappt es.
Bitte gebe immer, die von Dir verwendete Version an!
Gruß,
Harm
Hallo harm,
Ist es möglich, dass der Schlagpfeil vor dem Fingersatz platziert wird?
\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
\set fingeringOrientations = #'(left)
%\override Arpeggio.thickness = 2
<e'' c''-1 a'-3 e'-2 a>16 \strikeUp
}
\new Voice {
\set fingeringOrientations = #'(left)
\voiceTwo <a-2>16
}
>>
Klar, mittels:
%% #(define ((strike direction) grob) ....
strikes =
#(define-event-function (dir)(integer?)
#{
-\tweak stencil #(strike dir)
-\tweak X-extent #'(-0.5 . 0.5) %% better do override??
-\tweak script-priority #101
\arpeggio
#})
strikeUp = \strikes #UP
strikeDown = \strikes #DOWN
Den Code habe ich noch etwas eingedampft.
Gruß,
Harm
Zitat von: harm6 am Donnerstag, 24. Dezember 2015, 16:24
Ich finde die Schlagpfeile ja übersichtlicher, wenn sie über oder unter dem System stehen...
Finde ich auch und kommt häufig vor. In der Gitarrenliteratur stehen meistens die Pfeile
darüber/darunter, wenn viele Schläge hintereinander kommen, also wenn ein Schlagmuster vorliegt. Für Schlussakkorde/einzelne Akkorde habe ich meistens den Pfeil
neben den Noten gesehen.
Das nur am Rande zum unerschöpflichen Thema: "Was ist üblich in der Gitarrennotation?" ::)
LG