7、音乐理论中的音程与调式研究

音乐理论中的音程与调式研究

音程相关内容

音程在音乐理论和软件实现中有着重要的地位。在软件里, __hash__() 方法重载能为对象创建哈希码。要让类类型可靠地“可哈希化”,这样才能在字典或集合中使用其实例。对于 Interval 类的默认实现,这一点是不适用的。定义哈希码计算有以下规则:
1. 在实例的生命周期内,哈希码值不能改变。
2. 符合相等定义的实例必须有相同的哈希码值,这就要求 __eq__() __hash__() 方法达成一致。
3. 哈希码值应基于不可变值。

由于规则 3,对音程的操作应返回新的独立实例,而不是改变音程实例的半音距离、全音距离或音程类型。下面是使用音程实例文本表示的哈希码值的代码:

def __hash__(self):
    return hash(str(self))

在音程运算中,音程相加可能会出现闭合性违规的情况,也就是两个音程可能无法相加。在代码里,处理这种情况的一种方式是抛出异常。例如在 add_intervals() 函数中:

if (b_dc, b_ct) not in Interval.INTERVAL_MAP:
    raise Exception('Illegal Addition {0} + {1}    ({2}, {3})'.format(a, b,  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值