音乐理论中的音阶、音高与音程知识解析
1. 音阶与音高基础
1.1 自然音程距离
在音乐理论中,自然音程距离是一个重要概念。给定两个音 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 总是计算正模数,这恰好符合该距离语义的要求。
1.2 自然音缓存
总共可以构造 49 个独特的自然音实例。在后续构建音符时,会创建许多自然音高,每个音高都有一个自然音。为避免不必要的高存储分配,因为这 49 个音实例不会改变,所以可以在代码库中重复使用自然音。自然音缓存 DiatonicToneCache 提供了这种重用机制。
DiatonicToneCache 是一个单例类,只有一个实例,该实例仅创建一次且不对外暴露,仅作为按名称访问音的缓存机制。它有一个属性 __di
超级会员免费看
订阅专栏 解锁全文
163

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



