I am trying to make my first steps in actually modifying some Scheme.  I am 
using a procedure taken from the snippets repository to add a cross to a stem 
(e.g. to indicate sprechgesang):


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

speak = {
  \once \override Stem.stencil =
    #(lambda (grob)
       (let* ((x-parent (ly:grob-parent grob X))
              (is-rest? (ly:grob? (ly:grob-object x-parent 'rest))))
         (if is-rest?
             empty-stencil
             (ly:stencil-combine-at-edge
              (ly:stem::print grob)
              Y
              (- (ly:grob-property grob 'direction))
              (grob-interpret-markup grob
                                     (markup #:center-align #:fontsize -2
                                             #:musicglyph "noteheads.s2cross"))
              -2.3))))
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


This works fine, writing "\speak c4" for instance.


However, I'd like to be able to parameterise the position of the cross which is 
hard-coded as -2.3, so that I can write "\speak #-3.8 c" for instance.  I've 
tried a couple of ways to write it, but I can't find one that works.  I suppose 
that I will need something like "lambda (grob posn)" to define the parameter 
for use at the end, but I can't see how to get the value of posn from the 
LilyPond source into the Scheme procedure.


Help?


Thanks,
Paul

Reply via email to