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