音乐理论中的音程与音调表示
在音乐理论和软件开发中,音调和音程的准确表示和计算至关重要。下面将详细介绍相关的概念和实现方法。
1. DiatonicTone 与全音距离
DiatonicTone 提供了一系列方法,其中对 __eq__() 、 __ne__() 和 __hash__() 的重写很有用,可用于比较音调的同一性。全音距离的概念也很重要,给定两个音调 tone1 和 tone2 ,从 tone1 到 tone2 的全音距离是它们之间全音字母的数量减 1,假设 tone2 在 tone1 之后。例如,从 C 到 D 的全音距离是 1,从 Cb 到 Db 也是 1。从 E 到 D 的全音距离是 6,全音字母路径为 [E, F, G, A, B, C, D] 。在 Python 中,全音距离的计算公式为:
[
diatonic_dist = (tone2.diatonic_index - tone1.diatonic_index) \% 7
]
Python 总是计算正模数,这正是该距离语义所要求的。
2. DiatonicToneCache
总共可以构造 49 个唯一的 DiatonicTone 实例。在构造音符时会创建许多全音音高,每个音高都有一个全音音调,这会导致不必要的高存储分配。由于这 49 个音调实例不会改
超级会员免费看
订阅专栏 解锁全文
86

被折叠的 条评论
为什么被折叠?



