Four years ago, it was impossible to write a music function that
affected the music event it was attached to.  (if I understand
this post correctly):
http://lists.gnu.org/archive/html/lilypond-devel/2004-08/msg00019.html

Is this possible now?  I'm running into this problem.

I have a scheme function for nicely-spaced dynamic+text marks (ie
mp dolce), but it adds the dynamic to the note *after* it appears
in the score -- to add "f legato" to the E, I need to write
  c \flegato e d c
instead of
  c e\flegato d c

Can anybody see a nice solution to this?  Omiting the initial
(make-music 'SequentialMusic) puts the dynamic on the right note,
but the OverrideProperty stops working.  Writing the dynamic in
front of the note produces good output, but it breaks the lilypond
postfix-ish notation.

Cheers,
- Graham

#(define (make-dynamic-extra dynamic string)
  (make-music
  'SequentialMusic
  'elements
    (list
     (make-music
       'OverrideProperty
       'pop-first #t
       'grob-property-path (list (quote X-offset))
       'once #t
       'grob-value -1
       'symbol 'DynamicText)
     (make-dynamic-script (markup
       #:box #:line(
                    dynamic
                    #:text string)))
     )))
flegato  = #(make-dynamic-extra "f"  "legato")

\relative c' {
  % adds dynamic to the D -- wrong
  c e\flegato d c
  % adds dynamic to the E -- good output, but code looks bad
  c \flegato e d c
}


_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to