当两个变量的总和大于或等于12时减去12

Ale*_*exC 4 python theory set music-notation

我来自音乐背景,因此对将音乐背景理论实现到Python脚本中很感兴趣。

基本上,音符的变量分配给数字(C = 0,C sharp = 1等)。但是,音乐集理论只适用于数字11,因为B = 11,下一个C将再次等于0。

我已经分配了一些变量,它们看起来像这样。

# pitch classes
Bs = C = 0
Cs = Db = 1
D = 2
Ds = Eb = 3
E = Fb = 4
F = Es = 5
Fs = Gb = 6
G = 7
Gs = Ab = 8
A = 9
As = Bb = 10
B = Cb = 11

# intervals
m2 = 1 
mj2 = 2 
m3 = 3 
mj3 = 4
P4 = 5 
T = 6
P5 = 7
m6 = 8
mj6 = 9
m7 = 10
mj7 = 11
Run Code Online (Sandbox Code Playgroud)

我希望能够一起添加音符和音程,例如B加一个完美的5。这通常是11 + 7 = 18,但是我希望它等于6(因为6 = F尖锐,而B和F尖锐是相距5分)。

我想我需要这样的东西,但是我不知道如何实现它。

if answer >= 12:
    answer - 12
Run Code Online (Sandbox Code Playgroud)

有人有什么想法吗?有没有更好的方法可以做到这一点?

Dom*_*Cat 5

有一个模运算符%它可以做到这一点(另请参见此处):

print((11 + 7) % 12)
Run Code Online (Sandbox Code Playgroud)

或更一般而言:

def add_wrap_overflow(x,y):
    return (x+y) % 12
Run Code Online (Sandbox Code Playgroud)