Re: making arpeggios with straight lines
Perfect, thank you! On Sun, Jun 11, 2023 at 12:33 PM Jean Abou Samra wrote: > Le dimanche 11 juin 2023 à 12:18 -0400, John Asmuth a écrit : > > Hi everyone, I'm trying to draw an up or down arrow next to a chord. This > is common notation in classical guitar for strum direction. > > It seems that the most likely way to make this happen is to use \arpeggio > and set the arpeggio stencil to draw a straight line. I saw > https://lists.gnu.org/archive/html/lilypond-user/2019-12/msg00080.html > that gives some hints about how to do stencils but maybe a more clear > tutorial or set of examples would help. > > Or, perhaps, there's a better way to do this. I am, of course, open to any > suggestion. > > Try something like this? > > \version "2.24.1" > > arrow = > \tweak stencil > #(lambda (grob) >(match-let* > ((staff-space >(ly:staff-symbol-staff-space grob)) > ((and positions (bottom . top)) >(interval-scale (ly:grob-property grob 'positions) >staff-space)) > (dir (ly:grob-property grob 'arpeggio-direction))) > (grob-interpret-markup > grob > #{ > \markup \overlay { > \path #0.3 > #`((moveto ,0 ,bottom) >(lineto ,0 ,top)) > \translate #(cons 0 (interval-index positions dir)) > \general-align #Y #(- dir) > \arrow-head #Y #dir ##t > } > #}))) > \arpeggio > > arrowUp = \tweak arpeggio-direction #UP \arrow > arrowDown = \tweak arpeggio-direction #DOWN \arrow > > { 2\arrowUp q\arrowDown } > > Best, > > Jean >
Re: making arpeggios with straight lines
Le dimanche 11 juin 2023 à 12:18 -0400, John Asmuth a écrit : > Hi everyone, > I'm trying to draw an up or down arrow next to a chord. This is common > notation in classical guitar for strum direction. > > It seems that the most likely way to make this happen is to use \arpeggio and > set the arpeggio stencil to draw a straight line. I saw > [https://lists.gnu.org/archive/html/lilypond-user/2019-12/msg00080.html](https://lists.gnu.org/archive/html/lilypond-user/2019-12/msg00080.html) > that gives some hints about how to do stencils but maybe a more clear > tutorial or set of examples would help. > > Or, perhaps, there's a better way to do this. I am, of course, open to any > suggestion. Try something like this? ``` \version "2.24.1" arrow = \tweak stencil #(lambda (grob) (match-let* ((staff-space (ly:staff-symbol-staff-space grob)) ((and positions (bottom . top)) (interval-scale (ly:grob-property grob 'positions) staff-space)) (dir (ly:grob-property grob 'arpeggio-direction))) (grob-interpret-markup grob #{ \markup \overlay { \path #0.3 #`((moveto ,0 ,bottom) (lineto ,0 ,top)) \translate #(cons 0 (interval-index positions dir)) \general-align #Y #(- dir) \arrow-head #Y #dir ##t } #}))) \arpeggio arrowUp = \tweak arpeggio-direction #UP \arrow arrowDown = \tweak arpeggio-direction #DOWN \arrow { 2\arrowUp q\arrowDown } ``` Best, Jean signature.asc Description: This is a digitally signed message part