音乐编码之道(二十一)|Music21 音程
音程,或者说是两个音高之间的音程距离,是音乐理论的基本概念,至少可以追溯到古希腊时期,因此也是
upASecond = interval.GenericInterval('second')
s2 = s.transpose(upASecond)
s2.show()
中的基本概念。
不同形式的音乐理论分析,如调性理论、模式理论和半音音乐(无调性)理论使用不同类型的音程。因此, music21
中有一系列可用于不同情境的音程类。它们都位于 interval 模块中,该模块还包含一些方便的工具,用于创建和比较音程。用户指南的本章解释了如何创建和使用音程对象。
The music21
类 ¶
我们将打破从简单对象开始的传统,而是从最灵活但也最复杂的对象开始,简称为 Interval
,因为如果你要学习一个音程,最好是最有用的一个。
我们可以通过将音程的缩写作为字符串来创建一个 Interval
对象。例如,如果我们想建模一个纯五度,我们将使用字符串 Interval
:
"P5"
from music21 import *
i = interval.Interval('P5')
i
现在我们可以看到音程对象的一些属性:
<music21.interval.Interval P5>
i.niceName
'Perfect Fifth'
i.name
'P5'
i.semitones
7
i.isStep
这是一个假设从十四世纪末到十九世纪末的音乐背景的规则:
False
i.isConsonant()
这个音程要加起来成为一个八度,我们需要什么?那就是补充音程:
True
i.complement
一个音程的音级是指它的半音数量,取较小的音程或其补充音程的半音数量:
.intervalClass
i.intervalClass
一个cents是半音的1/100:
5
i.cents
我们可以用reverse()方法获得一个降序的音程:
.reverse()
i.reverse()
假设这个音程是B4和另一个音之间的距离,那么那个音是什么?
<music21.interval.Interval P-5>
i.noteStart = note.Note('B4')
i.noteEnd
或者我们可以使用这个间隔来转换任何给定的音