Lilypond无法渲染第二段歌词的melismas,求解决方案
LilyPond 2.24.1 双歌词连音渲染问题解决办法
你的代码核心问题在于将两个歌词上下文嵌套在同一个\addlyrics命令的<< >>块中,这种写法不符合LilyPond的语法规范,导致第二段歌词的连音下划线(melismas)无法被正确解析渲染。
修正后的代码示例
\version "2.24.1" % 先定义Staff变量,方便关联多个歌词层 myMelody = \new Staff { \relative c'' { e4 e8 cis \tuplet 3/2 { dis dis dis } | e8 e e2 | a8 a a a \tuplet 3/2 { gis8 gis a } | } } % 渲染旋律 \myMelody % 添加第一段歌词 \addlyrics { Ci- bo~e be- van- da di vi- __ _ ta, bal- sa- mo, __ _ ves- te, di- } % 添加第二段歌词,通过\lyricsto关联到之前定义的Staff \new Lyrics \lyricsto myMelody { Cris- to __ _ Ver- bo del Pa __ - dre, re __ _ _ glo- rio- so fra gli~ang }
关键调整说明
- 拆分歌词上下文:LilyPond中每个歌词段落需要独立的
Lyrics上下文,不能嵌套在同一个\addlyrics中。通过\lyricsto命令可以将新的歌词层精准关联到目标Staff。 - 保持连音写法:你原有的下划线
__(表示多音符连音)和_(单音符连音)写法无需修改,修正上下文关联后就能正常渲染。
替代写法(Staff内部直接添加双歌词)
如果不想使用变量,也可以在Staff内部通过\new Lyrics直接添加第二个歌词层,需指定关联关系:
\version "2.24.1" \new Staff \with { id = "myStaff" } { \relative c'' { e4 e8 cis \tuplet 3/2 { dis dis dis } | e8 e e2 | a8 a a a \tuplet 3/2 { gis8 gis a } | } \addlyrics { Ci- bo~e be- van- da di vi- __ _ ta, bal- sa- mo, __ _ ves- te, di- } \new Lyrics \with { associatedVoice = "myStaff" } { Cris- to __ _ Ver- bo del Pa __ - dre, re __ _ _ glo- rio- so fra gli~ang } }
内容的提问来源于stack exchange,提问作者Jörg Krause
相关产品推荐
相关产品推荐

