Dissonance

homeblogmastodonthingiverse



def pure(n):
    return n == 0 or (n > 0 and (pure(n-12) or pure(n-19) or pure(n-28)))
#                                2             3             5

def dissonance(chord):
    i = 0
    while reduce(lambda a,b: a or not pure(b+i), chord, False): i += 1
    return i

notes = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B", "B#"]

for i in xrange(12):
    print "C  %2s"%notes[i], "="*dissonance([0,i])

print
print "C E G", "="*dissonance([0,4,7])

C   C
C  C# ===============================================
C   D ====================================
C  D# ============================
C   E ========================
C   F ===================
C  F# ==================================================
C   G ============
C  G# ============================
C   A ===================
C  A# ============================
C   B ====================================

C E G ========================



[æ]