%{ #(define (test grob grob-origin context) (if (grob::has-interface grob 'note-head-interface) (set! grob-origin grob)) (let* ((event (ly:grob-property grob 'cause)) ;(music ;(ly:event-property event 'music-cause)) ;(es (ly:music-property music 'elements)) ;(pos (ly:grob-property grob 'staff-position)) ) ;(display es) ; (map display-scheme-music es) ;(set! (ly:grob-property grob 'transparent) #t)))) (display "\n*******\n") (display grob)(newline) (display (ly:grob-parent grob X)) )) #(define text "->") music = { \override TextScript #'outside-staff-priority = ##f \override TextScript #'X-offset = #3 %\override Voice.TextScript #'X-extent = #'( -4 . 4 ) \textLengthOn \override TextScript #'Y-offset = #(lambda (grob) (let* ((paper-col (ly:grob-parent grob X)) (elts (ly:grob-object paper-col 'elements)) (rhythmic-head grob)) (for-each (lambda (idx) (let ((elt (ly:grob-array-ref elts idx))) (if (grob::has-interface elt 'rhythmic-grob-interface) (set! rhythmic-head elt)))) (reverse (iota (ly:grob-array-length elts)))) (- (/ (ly:grob-staff-position rhythmic-head) 2) (interval-center (ly:grob-robust-relative-extent grob grob Y))))) %%\applyOutput #'Voice #test c'1-\text d'1-\text e'1-\text f'1-\text g'1-\text a'-\text b'-\text c''-\text d''-\text e''^\text f''^\text } \new Voice \music %} myfunction = #(define-music-function (parser location event-chord numx) (ly:music? number?) #{ \once \override TextScript #'outside-staff-priority = ##f \once \override TextScript #'X-offset = $numx \once \override TextScript #'Y-offset = #(lambda (grob) (let* ((paper-col (ly:grob-parent grob X)) (elts (ly:grob-object paper-col 'elements)) (rhythmic-head grob)) (for-each (lambda (idx) (let ((elt (ly:grob-array-ref elts idx))) (if (grob::has-interface elt 'rhythmic-grob-interface) (set! rhythmic-head elt)))) (reverse (iota (ly:grob-array-length elts)))) (- (/ (ly:grob-staff-position rhythmic-head) 2) ; well, don't know why ; we have to divide by 2? (interval-center (ly:grob-robust-relative-extent grob grob Y))))) $event-chord #}) \score{ \relative c'{ \myfunction c1-\markup{\sans "<-"} #3 \myfunction g'1-\markup{\sans "<-"} #3 \myfunction c1-\markup{\sans "<-"} #3 } } %} %%% CODE END