Immanuel Litzroth <immanuel.litzr...@gmail.com> writes: > This seems to do the wrong thing: > >> > \version "2.19.81" > testme = #(define-music-function > (parser location music) > (ly:music?) > #{ > \transpose c c' {#music } {#music } > #}) > \testme g' >> > printing out two g'' instead of a g'' and a g'
Functions like transpose act destructively on their argument, so you need a copy or the original will get changed. Write $music to get a copy, or use ly:music-deep-copy . > Also I found it strange that {#music} is not accepted as an argument with > the > following error: >>tmp.ly:6:16: error: GUILE signaled an error for the expression beginning > here >> {# >> music} >>Unbound variable: music} > It seems to parse the closing } as part of the variable name. Correct. Scheme syntax is very simple. Some characters like ()" act as delimiters, but most others are only split into words with intervening spaces. LilyPond syntax is different, but writing # or $ hands control over to the Scheme parser. -- David Kastrup _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user