音乐中的音程与调式:原理、实现与应用
音程的表示与实现
音程在音乐理论和编程实现中都有着重要的地位。为了能在字典或集合中使用音程实例,需要确保类类型是可哈希的。这就涉及到 __hash__() 方法的重载,以下是相关规则:
1. 在实例的生命周期内,哈希码的值不能改变。
2. 符合相等定义的实例必须具有相同的哈希码值,即 __eq__() 和 __hash__() 方法要保持一致。
3. 哈希码的值应该基于不可变的值。
以下是代码示例:
def __hash__(self):
return hash(str(self))
在音程的加法运算中,可能会出现闭包违规的情况,即两个音程无法相加。这时可以通过抛出异常来处理,示例代码如下:
if (b_dc, b_ct) not in Interval.INTERVAL_MAP:
raise Exception('Illegal Addition {0} + {1} ({2}, {3})'.format(a, b,
diatonic_count + 1,
chromatic_co
超级会员免费看
订阅专栏 解锁全文
44

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



