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
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-user