我试图创建一个函数,例如,\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 #}
)
关于为什么这不起作用的任何想法?
我已尝试使用" "
和{ }
替换#{ #}
无效。
答案 0 :(得分:0)
我设法通过
获得了一些东西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)
)
)
#}
)
它至少有效。