LilyPond:从音乐中提取音高名称
我使用LilyPond创建练习成绩和练习曲。我已经想出了如何允许在Moveable Do solfege表示法中输入音符,并且有一个模板(见下文),它支持在音符下面显示solfege符号作为歌词。目前,我必须手动从符号加上生成音乐的标记中提取歌词。我已经能够使用一些python和vim代码(这里没有显示)部分自动化,但它仍然有点令人不满意。
在我看来,最好的解决方案是使用LilyPond的内置Scheme解释器在处理文件时提取音高名称。我已经尝试过使用地图与ly:note-pitchname,但到目前为止还没有成功。可能是因为我知道对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"
没有找到相关结果
已邀请:
2 个回复
醒荒捆府绣
更新: 事实证明,可以使用标记功能来控制字体属性,例如通过改变
至
可能还有其他方法可以完成相同的事情,但这很简单,并且做我需要的。在这一点上,我认为这个问题得到了回答。请注意,未来版本的LilyPond可能会修复NoteNames错误,并且无需为此目的使用Scheme。
稳赣苍卯改