我使用 LilyPond 创建练习曲和练习曲。我已经想出了如何允许在 Moveable Do solfege 符号中输入音符,并有一个模板(见下文)支持在音符下方显示唱名符号作为歌词。目前,我必须手动从生成音乐的符号加标记中提取歌词。我已经能够使用一些 python 和 vim 代码(此处未显示)部分自动化此操作,但仍然有些不令人满意。
在我看来,最好的解决方案是在处理文件时使用 LilyPond 的内置方案解释器来提取音高名称。我已经尝试过将 map 与 ly:note-pitchname 一起使用,但到目前为止还没有成功。可能是因为我知道Squat 关于Scheme,尤其是在LilyPond 脚本中使用的。
% Moveable Do as lyrics example
% define some solfege pitchnames
% (in practice, the full set goes into "english.ly")
pitchnames = #`(
(do . ,(ly:make-pitch -1 0 NATURAL))
(re . ,(ly:make-pitch -1 1 NATURAL))
(mi . ,(ly:make-pitch -1 2 NATURAL))
)
#(ly:parser-set-note-names parser pitchnames)
% compose as though in C major
mynotes = \relative do' {\key do \major do2 re4( mi4) }
% transpose to desired key
melody = \transpose do mi { \mynotes }
% I WANT TO AUTOMATICALLY CREATE THE
% THE PITCHNAMES IN THIS BLOCK
% FROM THE CONTENTS OF \mynotes
solfa = \lyricmode {
\set ignoreMelismata = ##t % one syllable per note
do re mi
\unset ignoreMelismata % allow normal placement of other lyrics
}
% Produce score with solfege names as lyrics
\score {
<<
\new Voice = "myVoice" {
\melody
}
\new Lyrics \lyricsto "myVoice" \solfa
>>
}
\version "2.12.3"