我正在编写一个脚本,它以MIDI音符序列为输入,输出一个和弦符号,用于Impro-Visor,一个开源的爵士乐即兴创作助手。为了利用Impro-Visor的大量和弦词汇量,我一直试图在music21 21的和弦词汇表中添加-- MIDI音高和最常见和弦的解释--使用harmony.addNewChordSymbol方法,但是系统在和弦检测中没有提供新的和弦。例如,如果我尝试一下和声模块的文档中的和弦:
>>>harmony.addNewChordSymbol('BethChord', '1,3,-6,#9', ['MH', 'beth'])
>>>c = chord.Chord(['C3','D#3','E3','A-3'])
>>>print(harmony.chordSymbolFromChord(c))
'A-+/CaddD#'而在这种情况下,我希望得到:'Cbeth'
Music21一贯建议像上面那样的斜弦和弦,而不是我试图添加到词汇表中的任何和弦,大概是因为斜杠左边的和弦类型--在这里是“+”--出现在“OrderedDict in harmony.py”中。有什么方法可以使和弦检测比这些斜弦和弦更喜欢自定义和弦类型(我没有任何处理方法)?
发布于 2022-04-15 02:25:39
我发现,只要告诉music21您的意思是"C“作为根,就能起作用。(否则,它就会试图将"Ab“作为根部叠加在一起。)这样打电话给.root():
>>> harmony.addNewChordSymbol('BethChord', '1,3,-6,#9', ['MH', 'beth'])
>>> c = chord.Chord(['C3','D#3','E3','A-3'])
>>> c.root(c.bass())
>>> harmony.chordSymbolFromChord(c)
<music21.harmony.ChordSymbol CMH>https://stackoverflow.com/questions/71834404
复制相似问题