Deutsches Lilypond Forum (Archiv)
Notationsspezifisch => Noten für Gitarre => Thema gestartet von: gfuellerer am Donnerstag, 24. Dezember 2015, 13:29
-
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://liarchiv.joonet.de/index.php?topic=1493.0 (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!
-
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!
-
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
-
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