You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:52:45