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

Reply via email to