如何在LilyPond中实现先还原号再小节线的调号转换格式
LilyPond实现传统调号转换格式(还原号→小节线→升号)
默认情况下,用以下代码实现降B大调转G大调时,LilyPond会把还原号与升号都放在小节线之后:
\score { \relative c'' { \key bes \major g1 \key g \major g1 } }
但传统记谱要求先显示还原号,接着小节线,最后升号。你之前尝试的插入空小节线和十六分休止符的方法,会导致还原号与小节线间距过大。可以通过调整LilyPond的调号对齐属性解决这个问题,代码如下:
\score { \relative c'' { \key bes \major g1 % 设定调号与小节线的对齐顺序,让调号排在小节线前面 \once \override Staff.KeySignature #'break-align-symbols = #'(key-signature bar-line) \once \override Staff.KeySignature #'break-align-orders = #'((key-signature 0) (bar-line 1)) % 切换到C大调显示还原号,暂不显示小节线 \key c \major \bar "" % 切换到G大调显示升号,同时显示小节线 \key g \major \bar "|" g1 } }
代码说明:
\once \override Staff.KeySignature #'break-align-symbols指定调号需要和小节线参与对齐排版\once \override Staff.KeySignature #'break-align-orders设定优先级:调号(优先级0)排在小节线(优先级1)之前- 先切换到C大调显示还原号,用
\bar ""隐藏小节线;再切换到G大调显示升号并显示小节线,完美实现还原号→小节线→升号的传统格式,且间距正常。
如果需要进一步微调还原号与小节线的距离,可添加以下属性调整:
\once \override Staff.KeySignature #'space-alist = #'( (right-edge extra-space . 0) (bar-line extra-space . -0.5) )
内容的提问来源于stack exchange,提问作者Kapustin Alexander
相关产品推荐
相关产品推荐

