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