用python实现的音乐理论。音符、音程、音阶和和弦。
musthe的Python项目详细描述
须
用python实现的音乐理论。音符、音阶和和弦。
它仍在开发中,所以请随意阅读代码、fork和发出pull请求!他们很受欢迎!
安装
要安装:
$ pip install musthe
开发安装
作为开发安装:
(可选)创建虚拟机v:
$ python -m venv env
$ source env/bin/activate
然后安装:
$ pip install -e .
如何使用
它非常简单,所有内容都是以面向对象的方式编码的,例如:
$ python
>>> from musthe import *
>>> a = Note('A') #Default A4
>>> a
Note("A4")
>>> str(a)
'A'
假设你想要制造张力,所以你想要A的完美第五或小七,所以你要:
>>> fifth = Interval('P5')
>>> seventh = Interval('m7')
>>> a+fifth
Note("E5")
>>> str(a+fifth)
'E'
>>> str(a+seventh)
'G'
尽管很重要的一点是,这些音符的八度是不同的:
>>> a.octave
4
>>> (a+seventh).octave
5
现在让我们看看基本和弦用法:
>>> Chord(Note('A'), 'M')
Chord(Note('A'), 'M')
>>> Chord(Note('A'), 'M').notes
[Note("A4"), Note("C#5"), Note("E5")]
>>> Chord(Note('Bb'), 'dim').notes
[Note("Bb4"), Note("Db5"), Note("Fb5")]
您可以使用字符串构造和弦:
>>> Chord('C#aug7') == Chord(Note('C#'), 'aug7')
True
默认和弦类型为“M”(主和弦)。
现在让我们试试天平:
>>> s = Scale(Note('B'), 'major')
>>> [s[i] for i in range(len(s))]
[Note('B4'), Note('C#5'), Note('D#5'), Note('E5'), Note('F#5'), Note('G#5'), Note('A#5')]
>>> s[0]
Note('B4')
>>> s[-11]
Note('E3')
它返回一个note实例列表,因此如果希望得到更清晰的结果,应该执行如下操作:
>>> s = Scale(Note('B'), 'major')
>>> [str(s[i]) for i in range(len(s))]
['B', 'C#', 'D#', 'E', 'F#', 'G#', 'A#']
检查给定音阶中是否包含音符和和弦:
>>> Note('D#3') in s
True
>>> Note('F3') in s
False
>>> Chord('C#m') in s
True
>>> Chord('CM') in s
False
现在让我们尝试一些高级的东西:给定一个和弦列表,找到包含这些和弦的所有音阶:
>>> chords = [Chord('Cm'), Chord('Fm7'), Chord('Gm')]
>>> for scale in Scale.all():
... if chords in scale:
... print(scale)
...
C natural_minor
Eb major
如果您已经安装了lilypond,那么您可以使用这个程序制作一些旋律,lilypond_example.py中给出了一个示例
贡献者
按字母顺序排列
许可证
请参阅许可证文件