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

Lilypond和弦网格名称自定义覆盖技术问询

替换LilyPond和弦指板网格上方的自定义和弦名称

针对你遇到的和弦指板(FretBoards)上方显示自动生成和弦名的问题,以下是两种实现目标的解决方案:


方案1:设置自定义文本名称(如"A:Quartal")

直接在和弦定义中指定chordName属性,FretBoards上下文会自动读取这个值替换默认生成的名称。修改和弦定义部分:

%%% A Quartal 自定义名称
aQuartal = \relative c' { 
  \set chordName = #"A:Quartal"  % 自定义和弦名称
  < a d g c f >1-\markup { \super "Quartal" } 
}
\storePredefinedDiagram #default-fret-table \aQuartal
#guitar-tuning
#"x; 12-1; 12-1; 12-1; 13-2; 13-2;"

修改后,指板网格上方会显示你设置的"A:Quartal",而非自动生成的"A7 sus 4 b10 b13"。


方案2:生成规范的级数标记(如"A^min11b6")

如果需要使用LilyPond标准和弦命名格式显示级数标记,改用\chordmode定义和弦,而非直接编写音符组。示例如下:

%%% 用chordmode定义带升降级的和弦
aMin11b6 = \chordmode { a:min11 \flat 6 }
\storePredefinedDiagram #default-fret-table \aMin11b6
#guitar-tuning
#"x; 12-1; 12-1; 12-1; 13-2; 13-2;"

然后在music和formNames中调用该和弦:

formNames = \chordmode {
  \set chordNameExceptions = #chExceptions
  \aMin11b6
}

music = {
  \set chordNameExceptions = #chExceptions
  \aMin11b6  \bar "||"
}

此时指板网格上方会自动显示规范格式的"A^min11b6"。


完整修改代码示例

整合两种方案的完整代码如下:

%%%%%%%%% ChordGrid Name Issue Code
\include "predefined-guitar-fretboards.ly"

%%% 方案1:自定义名称的Quartal和弦
aQuartal = \relative c' { 
  \set chordName = #"A:Quartal"
  < a d g c f >1-\markup { \super "Quartal" } 
}
\storePredefinedDiagram #default-fret-table \aQuartal
#guitar-tuning
#"x; 12-1; 12-1; 12-1; 13-2; 13-2;"

%%% 方案2:带级数标记的和弦
aMin11b6 = \chordmode { a:min11 \flat 6 }
\storePredefinedDiagram #default-fret-table \aMin11b6
#guitar-tuning
#"x; 12-1; 12-1; 12-1; 13-2; 13-2;"

%%% Exceptions
chExceptionMusic = {
  \aQuartal
  \aMin11b6
}

chExceptions = #( append
                  ( sequential-music-to-chord-exceptions chExceptionMusic #t)
                  ignatzekExceptions)


formNames = \chordmode {
  \set chordNameExceptions = #chExceptions
  \aQuartal
  \aMin11b6
}

music = {
  \set chordNameExceptions = #chExceptions
  \aQuartal  \bar "|"
  \aMin11b6  \bar "||"
}

\version "2.22.2"  % necessary for upgrading to future LilyPond versions.

\book {
    \header { title = "ChordGrid Name Issue" }

%%% Chords
    \score { <<
        %%% Chord Names
        \new ChordNames {
            \set chordChanges = ##t
            \formNames
        }

%%% Chord diagrams
        \new FretBoards {
            \override FretBoards.FretBoard.size = #'1.2
            \override FretBoard.fret-diagram-details.number-type = #'roman-
            \music
         }
        
%%% Staff
        \new Staff \with { instrumentName = #'"Ex. 1" } {
            \clef "treble_8"
            \new Voice {
            \music
            }
         }

%%% TAB
    \new TabStaff { \music }
    >>
    
    \layout {
        \context {
            \Score
            \override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/16)
        }
     }
  }
}

内容的提问来源于stack exchange,提问作者BlueEnamel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:35:18