\version "2.19.46" % angle brackets cause SVG error so reformat: % # becomes [Mom 1] #(define (reformat-moment mom) (let* ((mom (format #f "~a" mom)) (mom (string-drop mom 2)) (mom (string-drop-right mom 1))) (string-concatenate (list "[" mom "]")))) % grob name + absolute moment + (system) coordinates should be enough for a unique id... #(define (get-unique-id grob) (let ((sys (ly:grob-system grob))) (format #f "~a/~a,(~a,~a)" (grob::name grob) (reformat-moment (grob::when grob)) (ly:grob-relative-coordinate grob sys X) (ly:grob-relative-coordinate grob sys Y)))) assignIDs = #(let ((grob-names (map car all-grob-descriptions))) #{ #@(map (lambda (x)#{ \override #(list 'Score x 'id) = #get-unique-id #}) grob-names) #}) { \assignIDs a1 \break a \break a }