我正在尝试创建一个函数,例如,generateNote #3 #4
将生成一个 f4 - 这将有助于编写函数以快速生成比例等。
generateNote =
#(define-music-function
(parser location note)
(number?)
(define notes
'((0 . "c4")
(1 . "d4")
(2 . "e4")
(3 . "f4")
(4 . "g4")
(5 . "a4")
(6 . "b4")))
#{ #(cdr (assoc (modulo note 7) notes)) #}
)
这不起作用,因为error: music function cannot generate f4
.但是,以下方法确实有效:
generateF =
#(define-music-function
(parser location)
#{ f4 #}
)
关于为什么这不起作用的任何想法?
我已经尝试将" "
与{ }
交换,#{ #}
无济于事。
我设法得到了一些东西
generateNote =
#(define-music-function
(parser location note duration)
(number? number?)
(define notes
'((0 . "c")
(1 . "d")
(2 . "e")
(3 . "f")
(4 . "g")
(5 . "a")
(6 . "b")))
#{
$(ly:parser-include-string
parser
(string-append
(cdr (assoc (modulo note 7) notes))
(number->string duration)
)
)
#}
)
它至少有效。