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

如何在music21中通过tnIndexToChordInfo获取CHORD_TYPES格式和弦名?

解决方案

直接从chord.tables.tnIndexToChordInfo里拿不到harmony.CHORD_TYPES那种短横线连接的格式,但可以通过处理commonName实现,同时完成中文翻译:

  • 第一步:提取commonName的核心部分(去掉末尾的" chord"),把空格替换成短横线,就能得到类似dominant-seventh的短格式名称
  • 第二步:建立英文短格式到中文和弦名的映射表,完成翻译

示例代码

from music21 import scale, roman, chord

# 常用和弦英文短格式到中文的映射,可按需补充
CHORD_CN_MAP = {
    'major': '大三和弦',
    'minor': '小三和弦',
    'diminished': '减三和弦',
    'augmented': '增三和弦',
    'dominant-seventh': '属七和弦',
    'major-seventh': '大七和弦',
    'minor-seventh': '小七和弦',
    'diminished-seventh': '减七和弦',
    'half-diminished-seventh': '半减七和弦',
}

# 生成和弦
k = scale.MelodicMinorScale('c')
rn = roman.RomanNumeral('V7', k, caseMatters=False)
c = chord.Chord(rn)

# 处理得到短格式英文名称
short_en = rn.commonName.replace(' chord', '').replace(' ', '-')
# 翻译成中文,找不到匹配则保留原英文
short_cn = CHORD_CN_MAP.get(short_en, short_en)

# 设置歌词
c.lyric = f"{rn.figure}\n{short_cn}"

如果想直接从tnIndexToChordInfo取数据,可通过和弦的tnIndex属性定位:

# 通过tnIndex获取对应信息
chord_info = chord.tables.tnIndexToChordInfo[c.tnIndex]
# chord_info[0]就是完整的commonName,后续处理和上面一致
short_en = chord_info[0].replace(' chord', '').replace(' ', '-')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:57:24