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

{ <c' c''>2\arrowUp q\arrowDown }
```

Best,

Jean



Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to