CommentGlobGamChromII.py
1    # GlobGamChrom : Traiter le chromatisme original pour le traduire en commatisme
2    '''Plusieurs dictionnaires ont été créés, en voici quelques uns : 
3    # dic_maj = Référence des tonalités majeures primaires 
4        Je rappelle que les tonalités sont découvertes avec la comparaison majeure. 
5    # tab_inf et tab_sup = Tableaux des altérations (de 1 à 24) 
6    '''
7    # Les fonctions nécessaires :
8    def transposer(rip0, rip1, rip2, rip3): Créer les majeures absentes dans dic_maj
9    """Ici, on réceptionne les gammes qui ont leurs tonices altérées. 
10       Séquences du traitement : - Obtenir la gamme majeure signée ou non signée. 
11        - Transposer la gamme au niveau altéré. - Résoudre la tonalité. 
12       Rip0.1 = Huit notes. Rip2.3 = Cinq notes.☺ 
13       Pour transposer les notes de la gamme (Rip0.1) 
14       Pour transposer les notes chromatiques (Rip2.3)"""
15   def alteration(signe): Pour un retour en nombre réel (±), le signe plus le niveau
16   """Permet d'obtenir la valeur numérique réelle de l'altération 
17       Quand le signe est dans tab_sup = Valeur(+ et son rang(index)) 
18       Quand le signe est dans tab_inf = Valeur(- et son rang(index))"""
19   def chromatic(a, b, c, s): Accès principal de réception des paramètres depuis GlobGamVers6
20   """Fonction chromatique afin de soulager le code GlobGamVers6 
21       Définitions : 
22       A = Gamme hepta en cours 
23       B = Nom de la tonalité analogique 
24       C = Tonalité numérique ordre croissant 
25       S = Degré d'inversion demandé ou donné par défaut"""
26   # Définition de l'enregistrement
27   '''Mettre en forme les données pour qu'elles s'adaptent au retour. 
28       Dessin de la table (gamme en cours): 
29           dic_ana[1] = [('Altération', 'C')], dic_ana[2] = [(('+', 'C'), ('-', 'D'))] 
30               La note.        # c_rip0 = Altération sur la note naturelle(gamme)(#/b) 
31               La note.        # c_rip1 = La note naturelle de la gamme en cours(C) 
32               Le supérieur.   # c_rip1 = Note chromatique du rang supérieur ('-', 'D') 
33               L'inférieur.    # c_rip2 = Note chromatique du rang inférieur ('+', 'C') 
34               La tonalité.    # c_rop2 = Valeur numérique de la tonalité 
35               dic_rip0, dic_rip1, dic_rip2, dic_rip3 = {}, {}, {}, {}'''
36   for yep in range(1, 13):  # Mesurer dic_ana[yep](notes:gamme ou chrome)
37   '''Le cycle yep sépare les notes de la gamme de celles qui sont chromatiques'''
38   for yes in range(1, 13):  # Lecture des séquences chromatiques
39   '''Phase de renseignement de la matrice (yep)'''
40   	# Section rip0_1 = Qui appartient aux notes de la gamme en cours
41   	# Section rip0_2. Section rip1_3 = Les notes d'appartenance chromatique
42   '''# Phase de renseignement des degrés modaux'''
43   for yi in range(1, 12):  # Mise en forme pour un mode diatonique
44   	'''Niveau des extensions (8, 9, 10, 11, 12, 13, 14)'''
45   	if (int(deg_ava) in extension) or (int(deg_sui) in extension): pass
46   		# deg_ava = Ligne supérieure de la tonalité numérique (1, 2, b3, 4, #5, 6, 7), degré avant.
47   		# deg_sui = Ligne inférieure de la tonalité numérique (1, #2, 3, 4, 5, b6, 7), degré suivant.
48   		'''Définition des variables 
49               dif_bas = Différence (demande/état) = Nouveau signe 
50               deg_ba0(1). sig_ba0(1) = Signe altératif de not_bas(gam_abc) en extension 
51               sig_nu0(1). sig_nu0(1) = Suivre num_ava(dic_inv[yes]) pour extension 
52               à suivre = Les lignes à suivre num_ava(dic_inv[yes]) num_sui(dic_inv[yes + 1]) 
53               rng_ba0(1). rng_nu0(1) = Signes recueillis. Signes à suivre en extension'''
54   	# Résolution des extensions (8, 9, 10, 11, 12, 13, 14), présentes aux octaves voisines
55   	'''Ligne supérieure des degrés à suivre: dic_inv[yes][yi]'''
56   	if len(not_ava) > 1 and int(deg_ava) not in extension: pass
57   	'''Ligne inférieure des degrés à suivre: dic_inv[yes + 1][yi]'''
58   	if len(not_sui) > 1 and int(deg_sui) not in extension: pass
59   	elif int(deg_sui) not in extension: pass
60   		# not_sui = Note majeure non signée INF à modifier
61   	(lineno(), 'GGC/SUP result1:', result1, '*******tab_sup********')
62   	# Séquence d'affichage pour d'éventuelles corrections
63               # Ci-dessous.
64               if yi == 12:  # Normalement(yi == 11). Et yi = 12 est improbable.
65                   print(lineno(), '***** Résultat progressif par cycle ***** yi:', yi, '****** yes:', yes)
66                   print(lineno(), 'GGC/dic_inv[yes][yi]:\t', yes, dic_inv[yes][:yi + 1], '*yi:', yi)
67                   if yes in dic_rip0.keys():
68                       print(lineno(), 'GGC/dic_rip0[yes]:\t\t', yes, dic_rip0[yes])
69                       print(lineno(), 'GGC/dic_rip1[yes]:\t\t', yes, dic_rip1[yes])
70                   elif yes in dic_rip2.keys():
71                       print(lineno(), 'GGC/dic_rip2[yes]:\t\t', yes, dic_rip2[yes])
72                       print(lineno(), 'GGC/dic_rip3[yes]:\t\t', yes, dic_rip3[yes])
73                   if yes != 13:  # Lecture totale limitée à 12 (yes)
74                       print(lineno(), 'GGC/dic_inv[yes+1][yi]:\t', yes, dic_inv[yes + 1][:yi + 1], '*yi:', yi)
75                   print(lineno(), '___________________________________________Fin de cycle yi:', yi)
76               if yes == 12 and yi == 12:  # Lecture totale limitée à 12/12 (yes)/(yi)
77                   break
78   '''639 ***** Résultat progressif par cycle ***** yi: 11 ****** yes: 1 
79   640 GGC/dic_inv[yes][yi]:    1 ['1', '-2', '2', '-3', '3', '4', '-5', '5', '-6', '6', '-7', '7'] *yi: 11 
80   642 GGC/dic_rip0[yes]:       1 ['C', '-D', 'D', '-E', 'E', 'F', '-G', 'G', '-A', 'A', '-B', 'B'] 
81   643 GGC/dic_rip1[yes]:       1 ['C', '-D', 'oE', '-E', '-F', 'F', '-G', 'oA', '-A', 'oB', '-B', '-C'] 
82   648 GGC/dic_inv[yes+1][yi]: 1 ['1', '-2', 'o3', '-3', '-4', '4', '-5', 'o6', '-6', 'o7', '-7', '-8'] *yi: 11 
83   649 ___________________________________________Fin de cycle yi: 11'''
84   
85   	'''Tous les dic_rip's ont été initialisés selon la dictée numérique. 
86       Maintenant on passe à l'épisodique récupération des diatoniques commatiques: 
87       .   Suivre les colonnes une par une en commençant par la tonique la plus rapprochée de celle de la 1ère colonne. 
88       .   Une fois sélectionnée, la tonique se construit avec les notes de sa propre colonne. 
89       En ce moment le traçage récolte(la tonique, le nom de la gamme, la graduation)'''
90   	# Ligne 706 : Lecture des colonnes absentes pour trouver les toniques fondamentales
91       (lineno(), 'Cas3 ABSENCES dic_abs:', dic_abs)
92       for cas_duc in dic_abs.keys():
93           (lineno(), 'GGC/ton_un:', ton_un, '\n', dic_maj[ton_un])
94   	# Enregistrement des toniques absentes dans dic_cas et dans dic_maj, par la fonction transposer()
95   	# def transposer(rip0, rip1, rip2, rip3):
96   	print(lineno(), 'cas_cas:', cas_cas)
97   	# 804 cas_cas: ['+B', 'oD', '^A', '-*E', 'o*F', 'x^G', '-**G', '+^^F', 'x^^E', '***A', '+^^^D',
98   	# 'o***B', 'C', '^^^^C']
99   	'''cas_cas = Liste les notes diatoniques altérées jusqu'en position tonique'''
100  	'''.../ Rechercher les toniques des gammes absentes.'''
101  		if key in dic_rip0.keys():
102  			cas_sos = dic_rip0[key][cas_duc[1]], dic_rip1[key][cas_duc[1]], 'cas0'
103  			# cas_sos a les données dic_rip0.1 : Conteneur chromatique ()
104  			(lineno(), 'cas_sos:', cas_sos, 'key:', key, '...... Key in dic_rip0.keys()')
105  			'''815 cas_sos: ('E', '-F', 'cas0') key: 1 ...... Key in dic_rip0.keys() 
106              815 cas_sos: ('+F', '-G', 'cas0') key: 3 ...... Key in dic_rip0.keys() 
107              815 cas_sos: ('+G', '+G', 'cas0') key: 5 ...... Key in dic_rip0.keys()'''
108  	# Appel de fonction transposer avec passage de paramètres sans retour
109  	('     Transposer trip', lineno(), '___ ___ Suite rip:', tripe0, tripe1, tripe2, tripe3)
110  	# transposer(tripe0, tripe1, tripe2, tripe3) : Voir ligne 8
111  # Dictionnaire des tonalités majeures complètement renseigné.
112  (lineno(), 'dic_maj.keys():', dic_maj.keys())
113  '''858 dic_maj.keys(): dict_keys(['C', 'D', 'E', 'F', 'G', 'A', 'B', '-D', '+C', '-E', '+D', '-G', '+F', '-A', '+G', '-B', '+A', 'oD', '+B'])'''
114  #
115  ''' Ici, nous connaissons les gammes commatiques qui sont impliquées au commatisme. 
116      Nous utilisons un dictionnaire modulaire des situations isolées ou couplées. 
117      Quand une note est isolée c'est qu'elle n'a pas de parallélisme chromatique. 
118      Par définition la note isolée est intégrée à la gamme diatonique, hors contexte chromatique.'''
119  # , dic_rap0, dic_rap2 = Modules de transport diatonique, des lignes supérieures et inférieures.
120      # cap0[num_sup], cap1[not_sup], cap2[not_inf], cap3[num_inf]
121      # dic_cap0, dic_cap1, dic_cap2, dic_cap3
122      for ik in range(12):
123          # Initialiser la nouvelle clef du dictionnaire.
124  		'''Sortie des mises en forme des relatives majeures. ²La tonique fait la tonalité² 
125             En référencement aux tableaux des tonalités majeures[(bas, haut), (not_iso0, not_iso1, not_iso2)] 
126          Zone détaillant les notes[Signe, note, tonique, degré, tonalité] 
127              Formatage = alteration (Signe) + Tables (dic_maj[Notes. Intervalles], gam_abc[Notes])'''
128  		#
129          '''# Exécution du traitement diatonique (num + note). 
130              Le premier cycle a donné les principales valeurs diatoniques. 
131              Le développement diatonique modal de la gamme commatique énoncée. 
132              De sa position chromatique réelle, ou son emplacement diatonique.'''
133          (lineno(), 'dic_cap0:', dic_cap0)
134          for dia in range(1, 13):  # VERSIONS NUMÉRIQUES DES DEGRÉS MODAUX
135              # dic_cap0[ik], dic_cap3[ik] = Parties numériques[inf/sup].
136              # dic_cap1[ik], dic_cap2[ik] = Parties analogiques[inf/sup].
137  			'''# Compare s'il n'y a pas de couplage chromatique.'''
138  			if dic_rap0[ik][dia] == dic_rap2[ik][dia]:  # Les notes (sup/inf) sont identiques.
139  				not_gam.append(dic_rap2[ik][dia])  # not_gam = Note tonique de la gamme
140  				# Les notes iso font prioritairement partie du lot heptatonique.
141  			else:  # Les notes (sup/inf) sont différentes.
142  			''' PARTIES DU CODE INUTILISÉ POUR L'INSTANT'''
143  ''' Exemple de premier mode commatique 
144  1021 ik: 1 dic_cap0[ik]: ['1', '*3', '*4', '-3', '*5', '4', '*6', 'o6', '*7', '^^^1', '-7', '^^^2'] 
145  1022 ik: 1 dic_cap1[ik]: ['+B', '-D', 'oE', '+D', '-F', '+E', '-G', 'G', '-A', 'oB', '+A', '-C'] 
146  1023 ik: 1 dic_cap2[ik]: ['C', '-D', 'xC', '-E', 'xD', 'F', '+F', 'G', '-A', 'xG', '-B', 'xA'] 
147  1024 ik: 1 dic_cap3[ik]: ['1', '-2', 'x1', '-3', 'x2', '4', '+4', '5', '-6', 'x5', '-7', 'x6']  
148  1038 not_gam: ['-D', 'G', '-A'] Les notes isolées appartiennent à une gamme fondamentale. 
149  1039 ... ;'''
150  				# La gamme est composée de ['-D', 'G', '-A']
151  			# OUT OF DIATONIC
152