关于计算音乐调式音阶与判断级数的脚本设计记录贴

 因为计算调式很麻烦,自己有时候又懒得想,所以想用python来实现自动计算调式音阶和判断级数

先是通过if控制流的知识写了个脚本,这个可以基本判断级数(不带升降号),比如E大调的F就是2级(虽然实际是F#)。

Key = {'C':1, 'D':2, 'E':3, 'F':4, 'G':5, 'A':6, 'B':7}
def keyCount(key_f, key_l):
    try:
        kf_v = Key[key_f]
        kl_v = Key[key_l]
    except KeyError:
        return f'输入的调式"{key_f}"或音名"{key_l}"不在字典中'
    if kf_v > kl_v:
        result = kl_v + 7 - kf_v +1
    elif kf_v < kl_v:
        result = kl_v - kf_v +1
    elif kf_v == kl_v:
        result = key_f
    return result

key_f = input('请输入调式').upper()
key_l = input('请输入音名').upper()

result = keyCount(key_f,key_l)
print(f'{key_l}在调式{key_f}里是{result}级')

后面又想了想,我是不是可以写一个大调和小调的字典

natural_major = ['C':1, 'C#':1.5,'D':2,'D#':2.5, 'E':3, 'F':4, 'F#':4.5,'G':5, 'G#':5.5,'A':6,'A#':6.5, 'B':7] 
natural_miner = [....pass]

然后将大调音阶的品排列方式“全全半全全全半”与小调“全半全全半全全”写成一个方法,然后这个字典通过这个方法就可以得到大小调的音阶?

思考中...(持续更新)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值