Hi,
I have this engraved, based on code from Valentin Petzel a while back

#(define (Guitar_fingering_engraver context)
   (let ((stem #f)
         (fingering #f)
         (old-fingering '()))
     (make-engraver
      (acknowledgers
       ((finger-interface engraver grob source-engraver)
        (set! fingering grob)
        )
       ((stem-interface engraver grob source-engraver)
        (set! stem grob)))
      ((process-music engraver)
       (if (and fingering stem)
           (begin
               (set! old-fingering (assoc-get 'fingering (ly:grob-property
stem 'details) '()))
               (ly:grob-set-property! stem 'details
                                  `((fingering . ,(append old-fingering
(list fingering)))
                                     . ,(ly:grob-property stem 'details))))
           )
       (if stem
           (begin
               (display (assoc-get 'fingering (ly:grob-property stem
'details)))
               (display "\n")))
       (set! stem #f)
       (set! fingering #f)))))

In the if scope right at the start of process-music, I'm trying to make a
list of all the fingerings seen for the current stem, but the (display
commands only ever show one fingering grob where on chords I would expect
several instead (one per fingered note).

Could someone help me see what am I doing wrong here?

I also tried replacing (set! fingering #f) with (set! fingering '()) and
using
(append! fingering (list grob)) but that also didn't seem to do much useful

Cheers
L


-- 
Luca Fascione

Reply via email to