如何在LilyPond中为类和弦记谱的特定声部上色并合并声部
解决LilyPond中合并声部并为特定声部独立上色的问题
问题原因分析
核心问题在于:
\partCombine会将两个声部合并为单个Voice对象,导致颜色覆盖设置会作用于整个合并后的声部,因此第一部分上色错误。- 第二部分的双Voice并行写法虽然能正确上色,但无法自动生成
\partCombine那样紧凑的类和弦记谱。
解决方案
在同一Staff下创建两个独立的Voice,配合\voiceOne和\voiceTwo标记声部,既能实现类和弦的合并显示,又能独立控制每个声部的颜色属性,同时支持不同节奏,跨行时也能保持正确上色。
修正后的代码示例
\version "2.25.20" \score { \new Staff { \clef "treble" \time 2/4 \key bes \major \transposition bes % 合并声部+正确上色(支持跨行、不同节奏) << \new Voice = "colored-voice" { \voiceOne \override NoteHead.color = #red bes'8 8 8 8 es, es es es % 跨行验证:颜色设置自动延续 bes'8 8 8 8 es, es es es \revert NoteHead.color } \\ \new Voice = "normal-voice" { \voiceTwo g'8 8 8 8 8 8 8 8 g'8 8 8 8 8 8 8 8 } >> } }
关键要点说明
- 独立Voice隔离属性:用
\new Voice分别创建两个声部,避免\partCombine的属性共享问题,每个声部的颜色设置仅作用于自身。 - 自动合并记谱:
\voiceOne和\voiceTwo会让LilyPond自动处理声部的紧凑显示,效果与\partCombine的类和弦记谱一致。 - 跨行属性保持:颜色设置在
\revert前会持续生效,无需在每行重复设置,适合大型乐谱。 - 支持不同节奏:两个声部可以使用完全不同的节奏型,依然能正确合并显示并保持上色:
\version "2.25.20" \score { \new Staff { \clef "treble" \time 2/4 \key bes \major \transposition bes << \new Voice = "colored-voice" { \voiceOne \override NoteHead.color = #red bes'4 es,4 bes'8 es,8 bes'8 es,8 \revert NoteHead.color } \\ \new Voice = "normal-voice" { \voiceTwo g'8 8 8 8 8 8 8 8 g'4. g'8 } >> } }
内容的提问来源于stack exchange,提问作者Marko
相关产品推荐
相关产品推荐

