1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
#
# Formes numérales des gammes
gammes = [[1, 1, 0, 1, 1, 1, 0], [0, 2, 0, 1, 1, 1, 0], [2, 0, 0, 1, 1, 1, 0],
[4, 0, 0, 0, 0, 1, 0], [1, 0, 1, 1, 1, 1, 0], [0, 1, 1, 1, 1, 1, 0],
[1, 0, 3, 0, 0, 1, 0], [1, 2, 1, 0, 0, 1, 0], [2, 2, 0, 0, 0, 1, 0],
[0, 0, 1, 2, 1, 1, 0], [1, 3, 0, 0, 0, 1, 0], [0, 0, 2, 1, 1, 1, 0],
[1, 2, 2, 0, 0, 0, 0], [0, 0, 4, 0, 0, 1, 0], [1, 4, 0, 0, 0, 0, 0],
[1, 0, 0, 2, 1, 1, 0], [0, 1, 0, 2, 1, 1, 0], [1, 1, 3, 0, 0, 0, 0],
[0, 0, 0, 3, 1, 1, 0], [1, 1, 0, 0, 2, 1, 0], [0, 2, 0, 0, 2, 1, 0],
[0, 2, 0, 2, 0, 1, 0], [2, 0, 0, 0, 2, 1, 0], [1, 0, 1, 0, 2, 1, 0],
[1, 0, 1, 2, 0, 1, 0], [1, 1, 1, 2, 0, 0, 0], [2, 0, 0, 3, 0, 0, 0],
[0, 0, 2, 0, 2, 1, 0], [1, 2, 0, 2, 0, 0, 0], [1, 0, 0, 3, 0, 1, 0],
[1, 0, 0, 1, 2, 1, 0], [1, 1, 0, 3, 0, 0, 0], [1, 1, 2, 1, 0, 0, 0],
[0, 1, 0, 0, 3, 1, 0], [0, 0, 1, 0, 3, 1, 0], [0, 0, 0, 1, 3, 1, 0],
[0, 0, 0, 2, 2, 1, 0], [1, 0, 0, 0, 3, 1, 0], [0, 0, 2, 2, 0, 1, 0],
[0, 0, 0, 0, 4, 1, 0], [0, 0, 2, 3, 0, 0, 0], [1, 0, 0, 4, 0, 0, 0],
[0, 0, 0, 5, 0, 0, 0], [1, 1, 0, 1, 0, 2, 0], [1, 1, 0, 1, 2, 0, 0],
[0, 2, 0, 1, 0, 2, 0], [0, 2, 0, 1, 2, 0, 0], [2, 0, 0, 1, 0, 2, 0],
[2, 0, 0, 1, 2, 0, 0], [1, 0, 1, 1, 0, 2, 0], [1, 0, 1, 1, 2, 0, 0],
[1, 1, 0, 0, 1, 2, 0], [1, 1, 0, 0, 3, 0, 0], [1, 1, 0, 2, 1, 0, 0],
[1, 1, 2, 0, 1, 0, 0], [0, 2, 0, 0, 0, 3, 0], [1, 0, 0, 2, 2, 0, 0],
[1, 0, 0, 1, 0, 3, 0], [1, 3, 0, 0, 1, 0, 0], [1, 0, 0, 0, 1, 3, 0],
[0, 0, 0, 3, 0, 2, 0], [0, 0, 2, 1, 2, 0, 0], [1, 0, 0, 0, 0, 4, 0],
[0, 0, 0, 3, 2, 0, 0], [1, 1, 0, 0, 0, 3, 0], [3, 0, 0, 0, 0, 2, 0]]
# Forme orales des gammes
diaton = ['0', '-2', '+2', '^2', '-3', '-23', '-34x', '+34', '+23x', '-34', 'x3',
'°3', '+34x', '°34x', '^3', '-4', '-24', '^4', '°4', '-5', '-25', '-25+',
'+25-', '-35', '-35+', '+45x', '+25x', '°35-', '+35x', '-45+', '-45',
'x5', 'x45+', '-25°', '-35°', '-45°', '°45-', '°5', '°35+', '*5', '°35x',
'-45x', '°45x', '-6', '+6', '-26', '-26+', '+26-', '+26', '-36', '-36+',
'-56', '-56+', '+56', 'x46+', '-26°', '-46+', '-46°', 'x36+', '-56°',
'°46-', '°36+', '*6', '°46+', '°6', 'x26-']
signes = ['+', 'x', '^', '-', '°', '*']
assist = """Sélection de la gamme: Voir ci-dessus [diaton]
La gamme a un nom formé de signes altératifs, et de chiffres.
Le chiffre donne une tonalité allant de 2 à 6 (de Ré à La).
Le chiffre donne une tonalité allant de 2 à 6 (de Ré à La).
Si la tonalité de la gamme comporte deux chiffres (46):
Résultat = [ 'x46+','-46+','-46°','°46-','°46+' ]
Tonalité = '46'
Ou bien, on rassemble les tonalités (4) et (6):
Partiel = [ '-34x',,'°4',,'+6',,'x26-',, ]
Tonalité = '4 6' (or/and)
Puis, sélection des tonalités (-4):
Partiel = [ '-4','-45+','-45',,'-46°' ]
Tonalité = En cours
Exemples de tonalités:
'4+ 6', '2 4', '+2', '45', '3 6+', ..."""
# Composition tonale
tonale = ['3 5', '-2 6+', '+2']
def fiches(a_, b_):
"""Transposition & Cumuls"""
transe = [1]
tim = tom = vrai = faux = 0
for gam in gammes[a_]: # Transposition Liste
tim += 1
if gam == 0 and tim < 12:
transe.append(1)
else:
retour = gam
while retour > 0:
transe.append(0)
tim += 1
retour -= 1
if tim < 12:
transe.append(1)
for trace in transe: # Cumul Transposition
tom += 1
if trace == 1:
vrai += tom
else:
faux += tom
print('transe', b_, transe, 'V/F', vrai, faux)
quanta = len(tonale)
partie = []
for ton in range(quanta):
longer = len(tonale[ton])
if ' ' not in tonale[ton]:
gobeur = [tonale[ton]] # Format Liste Stand
partie.append(gobeur)
else:
double = [] # Format Liste Auto
compil = ''
suivre = j = 0
for i in tonale[ton]:
if i in signes:
if tonale[ton][suivre + 1] == ' ':
compil = ''
else:
j = i
compil = j
j = ''
elif i != ' ' and int(i) < 7:
if len(compil) != 0:
compil += i
double.append(compil)
suivre += len(compil)
compil = ''
else: # compil == 0
if double and tonale[ton][-1] in signes \
and longer - suivre == 1:
compil += i
compil += tonale[ton][-1]
double.append(compil)
break
elif tonale[ton][suivre] in signes:
compil += i
compil += tonale[ton][suivre]
double.append(compil)
else:
double.append(i)
elif i == ' ':
suivre += 1
partie.append(double)
print('tonale', tonale)
print('Partie', partie)
print()
for p in partie:
if len(p) != 1: # Liste Format Dual
print('Pp2', p)
x = 0
for dia in diaton:
# (p[0] or p[1]): p[0] couple p[1]
# (p[0] and p[1]): p[1] couple p[0]
if (p[0] and p[1]) in dia:
fiches(x, dia)
x += 1
else:
print('Pp1', p)
x = 0
for dia in diaton: # Liste Format Simple
if str(p[0]) in dia:
fiches(x, dia)
x += 1 |
Partager