numx(number?) numy(number?)
What I want to do is to eliminate the last argument by setting it to be
equal to the same 'Y-offset (or 'staff-position, it is not clear to me
yet) of the notehead....
Hello José.
Perhaps that snippet
http://lsr.dsi.unimi.it/LSR/Item?id=637
can help you.
Ok, it is not very easy to understand, but by changing only a fews things,
it seems that you can get what you seek. (see attached file).
Good week.
Gilles
%{ #(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
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel