Scheme 使用Lilypond音乐替代功能传递和弦并返回音乐
我试图在Lilypond中编写函数,将和弦(或音高列表)作为参数,并将所述和弦插入节奏中返回音乐。更具体地说,我希望以如下方式调用该函数:Scheme 使用Lilypond音乐替代功能传递和弦并返回音乐,scheme,guile,lilypond,music-notation,Scheme,Guile,Lilypond,Music Notation,我试图在Lilypond中编写函数,将和弦(或音高列表)作为参数,并将所述和弦插入节奏中返回音乐。更具体地说,我希望以如下方式调用该函数: \chordFunction <c ef f af> % or \chordFunction #'(c ef f af) \chordFunction %或 \弦函数#'(c ef f af) 返回Lilypond代码,如下所示: \tuplet 3/2 {<c ef f af>4 <c ef f af>8~} <
\chordFunction <c ef f af>
% or
\chordFunction #'(c ef f af)
\chordFunction
%或
\弦函数#'(c ef f af)
返回Lilypond代码,如下所示:
\tuplet 3/2 {<c ef f af>4 <c ef f af>8~} <c ef f af>2
\tuplet 3/2{4 8}2
我试过了
jazzsyncoA =
#(define-music-function
(parser location chord)
(symbol-list-or-music?)
#{
\tuplet 3/2 {$<chord>4 $<chord>8~} $<chord>2
#}
)
jazzsyncoA=
#(定义音乐功能
(分析器位置和弦)
(符号列表还是音乐?)
#{
\元组3/2{$4$8~}$2
#}
)
但这会让你失望
error: GUILE signaled an error for the expression beginning here
\tuplet 3/2 {$
<chord>4 $<chord>8~} $<chord>2
错误:GUILE表示从这里开始的表达式有错误
\元组3/2{$
4 $8~} $2
以及我尝试调用时的其他错误。我应该如何编写函数来实现这一点?我处理这个问题是否不当?
我已经看过了,但我看不出任何潜在的用途。我认为你的方向或多或少是对的。您可以看看如何开始编写纯Scheme函数来解决此问题和其他问题 至于您的函数,如果您想使用像
\chordFunction
这样的函数,那么您可以ly:music?
作为谓词:
\version "2.18.0"
\language "english"
jazzsyncoA = #(define-music-function (parser location my-notes) (ly:music?)
#{
\tuplet 3/2 { #my-notes q8~ } q2
#}
)
\score {
\new Staff {
\clef "bass"
\key c \minor
\new Voice = "one" {
\jazzsyncoA <c ef f af>4
}
}
}
\version“2.18.0”
\语言“英语”
jazzsyncoA=#(定义音乐函数(解析器位置我的笔记)(ly:music?)
#{
\元组3/2{#我的笔记q8~}q2
#}
)
\得分{
\新员工{
\低音谱号
\c键\小调
\新语音=“一”{
\爵士乐4
}
}
}
这将给出与图片中相同的结果。我在版本2.19.82上测试了它,但我猜它也可以在2.18.0上使用。希望能有帮助