Hello all. the following function (thanks to Stefano!) inserts the beam-thickness property of a Beam in the list of output-attributes of the corresponding SVG item. It does its job if I place the function soon before a beam symbol "[". But it doesn't work (no errors, but the output-attributes property is not set) if place it before a notename. How can I fix that? Should I map-some-music() and iterate until I find the BeamEvent? I tried that too, but without success. Thanks.
token = #(let* ((ctr 0) (ctr! (lambda () (set! ctr (1+ ctr)) ctr))) (define-music-function (mus) (ly:music?) (let* ((id (format #f "foobar_~a" (ctr!))) (mexp #{ \tweak output-attributes.id #id #mus #} ) (type (ly:music-property mus 'name)) (mexp (case type ('BeamEvent #{ \tweak Beam.after-line-breaking #(lambda (grob) (let* ((outprop (ly:grob-property grob 'output-attributes)) (beam-thickness (ly:grob-property grob 'beam-thickness)) (outprop (append outprop `((beam-thickness . ,beam-thickness))))) (begin (ly:grob-set-property! grob 'output-attributes outprop) (display "\n****\n") (display beam-thickness) (display "\n****\n")))) #mexp #} ) (else mexp)))) mexp))) \relative { c'4 d8-\token [ e ] \token f[ g ] c,4 }