Fri, 6 Feb 2004 18:17:03 +0100, darius a dit : > This is a typical case where Lilypond functions would come as > a useful addition to variables. The text would be a parameter, > in something such as:
> MySeq(x) = \notes {a^\x b c d a a} > Perhaps the right way of dealing with this would be to handle > them as symbolic macros rather than true functions. > Besides, if we ever need recursion, we can always revert to > Scheme :-) > Is this so bizarre that I'm the only Lilypond user who thinks > this might prove useful ? There has been several times on this list requests of this kind of TeX-like `macros', and the general answer was: use scheme. I think that LilyPond's extensibility with scheme is under-used. The main reason is that it's not very convenient, now, to build music expressions in scheme. I remember few weeks ago Paul asking how to parametrize an expression like: \property Voice.TextScript \override #'padding = #x the parameter--^^^ With a little extra music-expression-maker library, a possible solution was: #(define*-public (text-pad pad #:optional once) (ly:export (mus:context-override Voice TextScript padding pad #:once once))) And then, you could use it in a \notes block: \score { \notes { c'^"salut" % normal padding #(text-pad 3.0 #t) c'^"salut" % 3.0 padding, once c'^"salut" % normal padding #(text-pad 4.0) c'^"salut" c'^"salut" % 4.0 padding, always } } You can do amazing things in scheme, which as built-in support for functions, macros, etc, so there is no need of lilypond functions. I plan to work on a library and documentation of 'lilypond in scheme'. (I hope that might be useful). nicolas _______________________________________________ Lilypond-user mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/lilypond-user