跳转到主要内容

Python实现的音理学。音符、音程、音阶和和弦。

项目描述

musthe

Python实现的音理学。音符、音阶和和弦。

它仍在开发中,因此请随意阅读代码、分叉并提交拉取请求!它们非常受欢迎!

安装

要安装

$ pip install musthe

开发安装

要作为开发安装

(可选) 创建一个虚拟环境

$ 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')

它返回一个音符实例的列表,因此如果你想得到一个更干净的结果,应该做类似的事情

>>> 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' 中给出

贡献者

按字母顺序排列

许可证

请参阅许可证文件。

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

musthe-1.0.0.tar.gz (8.0 kB 查看哈希值)

上传时间 源代码

构建分发

musthe-1.0.0-py2.py3-none-any.whl (6.8 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持