On 2019-07-11 11:52 pm, Immanuel Litzroth wrote:
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'

Consider using $music or ly:music-deep-copy:

%%%%
\version "2.19.83"
testI = #(define-music-function (music) (ly:music?)
  #{ \transpose c c' $music $music #})
testII = #(define-music-function (music) (ly:music?)
  #{ \transpose c c' #(ly:music-deep-copy music) #music #})
\testI d' \testII e'
%%%%


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.

Scheme is pretty permissive with what can be part of a symbol, so this is one case where whitespace does matter.


-- Aaron Hill

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

Reply via email to