On Sunday 15 October 2006 22:59, Marcus Macauley wrote: > Nicolas Sceaux wrote: > And because it's possible to manually type notes within a music function > in Scheme, e.g.: > > function = > #(define-music-function (parser location var1) (integer?) > #{ > c'4 d' e' > #}) > > It seems like it should also be possible to substitute variables for those > notes, such as: > > #(define-music-function (parser location var1) (integer?) > #{ > $firstnote #(list-ref notes 1) #(list-ref notes 2) > #}) > > > From what I can tell, the key is the "ly:music" data type, but I don't > know how to to use that from within Scheme, if it's even possible, much > less how (if possible) to convert e.g. strings to ly:music. > > The "ly:export" function may also have something to do with it, but if so, > I haven't figured out quite what.
normally, the return value of a scheme expression is thrown away by the parser; ly:export is used to mark expressions that instead should be interpreted as music. So what you wanted above is something like: #(define-music-function (parser location var1) (integer?) #{ $firstnote #(ly:export (list-ref notes 1)) #(ly:export (list-ref notes 2)) #}) Note that ly:export is built into make-music-function, so in that case you don't have to worry about it. -- Erik _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user