解析和操纵音乐和弦
Chordal的Python项目详细描述
和弦
一个简单的python库,用于接收和操作根据Christopher Harte's 2010 thesis以明文格式存储的音乐和弦。
安装
python -m pip install ChordalPy
格式
这个库可以解析的和弦是一种特定的纯文本格式,详细说明了here;但是,这里有一个快速而肮脏的运行。
每个和弦有三个部分:根、音程和低音。它们用一个冒号和一个类似这样的斜线隔开
root:intervals/bass
根
根就是任何字母名。它可以是'C'
或'G#'
或'Fbbbbb'
。
间隔
“间隔”部分由一组公共间隔的缩写组成,后面是对parantesses中这些间隔的任何更改。例如,一个大三位一体加上一个锐利的第六个将是maj(#6)
。添加的间隔可以执行以下操作之一:
速记名单可在先前参考的pdf文件第105页找到。
低音
低音是一个音程度(任何数字1-9)和0个或更多的修饰语(#
或b
)
关于间隔的注释
有一个有趣的快速音乐间隔,这意味着它们不能完全用一个数字来表达。相反,它们需要一个由两个整数组成的元组。
在查看这个库的源代码时,您经常会发现这样标记的间隔。第一个整数表示注释之间的字母名数目(例如,在从C
到G
的间隔中,第一个整数是5
),第二个整数是半步的数目(所以在从C
到G
的间隔中,第二个整数是^
使用这个方法,你可以看到你将如何区分两个增强音高。例如,C
到E
和C
到Fb
。从C
到E
的间隔是(3, 4)
,而从C
到Fb
的间隔是(4, 4)
。
库使用
分析和弦并打印其成员
importChordalPymy_chord=ChordalPy.parse_chord("C:maj")spelling=my_chord.get_spelling()print("C:maj has notes %s"%spelling)
直接实例化和弦
importChordalPy# C major in first inversion (C:maj/3)root="C"intervals=[(1,0),(3,4),(5,7)]bass="E"my_chord=ChordalPy.Chord(root,intervals,bass)
Chord
类
打印弦的字符串表示形式
print(str(my_chord))# C:[(1, 0), (3, 4), (5, 7)]/E
打印和弦的拼写
print(my_chord.get_spelling())# ['C', 'E', 'G']
打印弦的二进制音符数组
print(my_chord.get_note_array())# [1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0]
打印弦间隔的伪哈希值
print(my_chord.get_pseudo_hash())# ecca
在一个和弦的根上找到一个给定间隔的音符
print(my_chord.note_from_interval([5,8]))# ecca
另请参见
项目
Chordgen.com-一个使用机器学习来生成和弦音阶的网络工具。The machine learning model接受了使用此库创建的数据的培训。
数据集
使用此库可解析格式的数据集的非详尽列表: