Leçon 12 : la symétrie et les modes à transpositions limitées
Sections
Réglages de lecture
Aucune voix pour cette langue dans ce navigateur.
Plus de voix
Code et termes techniques en anglais
Désactivé : la voix de la page lit tout, sans pause entre deux voix.
Aucune voix pour cette langue dans ce navigateur.
Plus de voix
D’autres voix : Microsoft Edge propose des voix naturelles en ligne, et Windows (Paramètres › Heure et langue › Voix), macOS et Android en installent d’autres.
La leçon 2 a compté les modes de deux gammes symétriques : un pour la gamme par tons, deux pour la gamme octatonique. Cette leçon demande quels ensembles sont symétriques. Certains reviennent sur eux-mêmes par une transposition, un tour du bracelet : Messiaen a appelé les gammes parmi eux « modes à transpositions limitées ». D’autres reviennent par une inversion, un miroir. Guitar Alchemist (GA) a des classes de modes pour trois gammes symétriques, un service qui reconnaît les modes de Messiaen, et plusieurs tests que son code appelle des tests de symétrie. Le programme du cours trouve chaque ensemble symétrique parmi les 4096, puis vérifie chacune des réponses de GA, avec le code de GA lui-même partout où il le peut.
Tous les liens vers GA pointent sur le commit a826864. Les sorties viennent de la commande ci-dessous ; le point d’entrée est l14.
dotnet run --project code/music-theory-ga/GaTheory -c Release -- l14La transposition limitée
Section intitulée « La transposition limitée »Wikipédia : “Modes of limited transposition are musical modes or scales that fulfill specific criteria relating to their symmetry and the repetition of their interval groups. These scales may be transposed to all twelve notes of the chromatic scale, but at least two of these transpositions must result in the same pitch classes, thus their transpositions are “limited”” (Mode of limited transposition). La gamme par tons C D E F♯ G♯ A♯ montée d’un ton donne les mêmes notes, donc elle “has only 2 transpositions”. Le module Streeling MUS-006 · L’univers des gammes le dit avec le bracelet : “A scale has rotational symmetry if rotating it by some k semitones produces the same scale. The scale’s symmetry order tells you how many distinct transpositions it has.”
Le cours compte, pour chaque ensemble, combien des douze transpositions T0 à T11 le laissent inchangé (Lesson14.Fixing). T0 le fait toujours. Si Ta et Tb le font, Ta+b aussi, donc ce nombre est toujours un diviseur de 12, et l’ensemble a 12 divisé par ce nombre transpositions distinctes. Un ensemble est limité quand ce nombre dépasse 1. Le programme fait le compte sur les 4096 ensembles (Lesson14.cs#L158-L170) :
== Limited transposition: the 4096 sets, by how many of the twelve transpositions map each onto itselffixing transpositions sets transposition classes1 12 4020 3352 6 54 93 4 12 34 3 6 26 2 2 112 1 2 2
sets with limited transpositions: 76, in 17 transposition classeswithout the empty set and the chromatic scale: 15 classes, 14 set classesSoixante-seize ensembles sur 4096. Les deux ensembles que toutes les transpositions fixent sont l’ensemble vide et la gamme chromatique. Sans eux, il reste 15 classes : le compte de Wikipédia, “If one excludes modes with 0, 1, 11 or 12 notes which can be construed as too extreme, there are 15 generalized Messiaen modes”. Elles font 14 classes d’ensembles, parce que l’une d’elles, la gamme triton ci-dessous, n’est pas sa propre image miroir : elle et son inversion sont deux classes de transposition d’une même classe d’ensembles. La section suivante les énumère.
Les quinze classes
Section intitulée « Les quinze classes »Chaque classe est écrite à partir de 0, avec sa forme primaire et son numéro de Forte tirés de la List of set classes de Wikipédia, ses pas, ses transpositions et ses modes distincts (le compte des rotations distinctes de la leçon 2), et ses axes miroirs, qui viennent plus loin (Lesson14.cs#L172-L177) :
== The fifteen classes: notes from 0, steps, distinct transpositions and modes, mirror axesprime form pitch classes steps transp. modes mirrors name(02468T) 6-35 0 2 4 6 8 T 2 2 2 2 2 2 2 1 6 whole-tone scale, Messiaen 1(0369) 4-28 0 3 6 9 3 3 3 3 3 1 4 diminished seventh(0134679T) 8-28 0 1 3 4 6 7 9 T 1 2 1 2 1 2 1 2 3 2 4 octatonic scale, Messiaen 2(048) 3-12 0 4 8 4 4 4 4 1 3 augmented triad(014589) 6-20 0 1 4 5 8 9 1 3 1 3 1 3 4 2 3 augmented scale(01245689T) 9-12 0 1 2 4 5 6 8 9 T 1 1 2 1 1 2 1 1 2 4 3 3 Messiaen 3(06) 2-6 0 6 6 6 6 1 2 tritone(0167) 4-9 0 1 6 7 1 5 1 5 6 2 2(0268) 4-25 0 2 6 8 2 4 2 4 6 2 2(012678) 6-7 0 1 2 6 7 8 1 1 4 1 1 4 6 3 2 Messiaen 5(013679) 6-30 0 1 3 6 7 9 1 2 3 1 2 3 6 3 0 tritone scale, inverted(013679) 6-30 0 2 3 6 8 9 2 1 3 2 1 3 6 3 0 tritone scale(01236789) 8-9 0 1 2 3 6 7 8 9 1 1 1 3 1 1 1 3 6 4 2 Messiaen 4(0124678T) 8-25 0 1 2 4 6 7 8 T 1 1 2 2 1 1 2 2 6 4 2 Messiaen 6(012346789T) 10-6 0 1 2 3 4 6 7 8 9 T 1 1 1 1 2 1 1 1 1 2 6 5 2 Messiaen 7Les pas montrent la symétrie : une classe à 2 transpositions répète ses pas tous les 2 demi-tons, une classe à 6 tous les 6. Et sur chaque ligne, le nombre de modes est le nombre de notes divisé par le nombre de transpositions qui fixent l’ensemble : la gamme octatonique a 8 notes et 4 transpositions qui la fixent, 2 modes. Outre les sept de Messiaen, le tableau contient ce que Wikipédia appelle des troncatures, les ensembles qui restent quand on retire des notes de façon symétrique : le triton, la triade augmentée, la septième diminuée, “major third, tone, major third, tone”, qui est 4-25, “perfect fourth, semitone, perfect fourth, semitone”, qui est 4-9, la gamme augmentée, et deux ensembles de six notes images miroirs l’un de l’autre, “(Modes are “mirror” inversions of Petrushka Chord modes.)“. La gamme augmentée, 6-20, est “arguably of musical importance”, dit l’article, et “a truncated version of his Third Mode”.
Les sept modes de Messiaen
Section intitulée « Les sept modes de Messiaen »Le programme construit les modes de Messiaen à partir des intervalles que Wikipédia donne pour chacun, et compare ses comptes aux transpositions et aux modes que donne l’article (Lesson14.cs#L47-L60, #L179-L187) :
== Messiaen's seven modes, from Wikipedia's intervals: the course's counts against his listmode steps transp. modes his list check1 2 2 2 2 2 2 2 1 2 1 ok2 1 2 1 2 1 2 1 2 3 2 3 2 ok3 2 1 1 2 1 1 2 1 1 4 3 4 3 ok4 1 1 3 1 1 1 3 1 6 4 6 4 ok5 1 4 1 1 4 1 6 3 6 3 ok6 2 2 1 1 2 2 1 1 6 4 6 4 ok7 1 1 1 2 1 1 1 1 2 1 6 5 6 5 okSept sur sept. Open Music Theory donne le même tableau, avec une colonne pour le “Number of unique transpositions” et une pour le “Number of unique rotations” (Open Music Theory, “Collections”).
Dans GA : un test, et une recherche
Section intitulée « Dans GA : un test, et une recherche »UnifiedModeService, que la leçon 11 a compilé, a un IsSymmetricSet privé : “A set is rotationally symmetric if there exists k (1..11) such that Transpose(k) == set”. C’est la transposition limitée. FromPitchClassSet range sa réponse dans la classe de mode qu’il construit (#L43-L69), et le programme l’y lit pour chaque ensemble (Lesson14.cs#L113-L124, #L189-L194) :
== UnifiedModeService (GA.Domain.Services, compiled): IsSymmetricSet over the 4096 sets, through FromPitchClassSet course GA checksets 76 76 okagree 4096 4096 oksets FromPitchClassSet throws on: 0GA est d’accord sur les 4096 ensembles. Describe nomme ensuite le mode de Messiaen, si l’ensemble en est un : il passe la forme primaire de l’ensemble à IdentifyMessiaenMode (#L136), qui compare son identifiant à huit constantes. La forme primaire de GA est le plus petit identifiant parmi les 24 transpositions et inversions (leçon 4). Le programme interroge chacun des sept modes, et liste les constantes (Lesson14.cs#L196-L212) :
== UnifiedModeService.Describe(...).MessiaenModeIndex for Messiaen's seven modes, with each prime form's idmode course GA check1 (1365) 1 1 ok2 (1755) 2 2 ok3 (1911) 3 3 ok4 (975) 4 (none) DIFF5 (455) 5 (none) DIFF6 (1495) 6 (none) DIFF7 (2015) 7 (none) DIFF
The ids IdentifyMessiaenMode compares the prime form with (UnifiedModeService.cs, lines 298-341):GA's mode id pitch classes the course's mode prime form1 1365 0 2 4 6 8 T 1 yes2 1755 0 1 3 4 6 7 9 T 2 yes2 2925 0 2 3 5 6 8 9 E 2 no, 17553 1911 0 1 2 4 5 6 8 9 T 3 yes4 2535 0 1 2 5 6 7 8 E 4 no, 9755 2275 0 1 5 6 7 E 5 no, 4556 3315 0 1 4 5 6 7 T E 4 no, 9757 3055 0 1 2 3 5 6 7 8 9 E 7 no, 2015Pour les modes 1 à 3, les constantes sont des formes primaires, et GA trouve les modes. Pour les modes 4, 5 et 7, ce sont les modes écrits à partir de C, ce qu’une forme primaire n’est jamais : la méthode reçoit 975, 455 ou 2015 et ne renvoie rien. La constante du mode 6, 3315, n’est pas du tout le mode 6 mais une autre rotation du mode 4 ; le commentaire au-dessus hésite entre les notes du mode 4, [0,1,2,5,6,7,8,11], et cet ensemble. La seconde constante du mode 2, 2925, ne peut jamais correspondre non plus. Le commentaire de la méthode donne au mode 3 “3 transpositions” ; il en a 4. Les tests de GA pour les modes 5 à 7 passent quand même : chacun affirme Is.Null.Or.EqualTo(5) (ou 6, ou 7), qui accepte l’absence de réponse, et celui du mode 6 construit lui aussi 3315 (UnifiedModeAdvancedTests.cs#L87-L119).
Les classes de gammes symétriques de GA
Section intitulée « Les classes de gammes symétriques de GA »Une classe de modes pour une gamme symétrique devrait avoir un mode par rotation distincte : un pour la gamme par tons, deux pour la gamme octatonique (“Each octatonic scale has exactly two modes”, l’article Octatonic scale de Wikipédia), deux pour la gamme augmentée, dont les pas alternent 3 et 1. Leurs transpositions sont 2, 3 et 4 : “hexatonic collections can only be transposed four times before returning to the same group of notes again” (Open Music Theory, “Collections”).
SymmetricScaleMode<TScaleDegree> est le ScaleMode<TScaleDegree> de la leçon 11 avec deux propriétés de plus : HasLimitedTranspositions, vraie “when it maps onto itself before all 12 transpositions are exhausted”, et TranspositionCount. Trois classes nommées en dérivent, sur les gammes de Scale.cs#L59-L62 : WholeToneScaleMode, DiminishedScaleMode et AugmentedScaleMode. Une quatrième, GenericSymmetricScaleMode, prend n’importe quelle gamme et reste ici de côté. Les Items des trois classes nommées contiennent un mode par degré, et les types de degrés vont de 1 au nombre de notes, comme ceux de la leçon 11 (DiminishedScaleDegree.cs#L14-L15). Le programme ramène chaque mode sur C et compare les trois classes aux comptes du cours, avec une seule méthode générique (Lesson14.ModeClass) :
== WholeToneScaleMode: GA's 6 modes, each moved to C, against the course's countdegree GA's Name notes steps set on C1 Whole-tone C D E F# G# A# 2 2 2 2 2 2 13652 Whole-tone 2 D E F# G# A# C 2 2 2 2 2 2 13653 Whole-tone 3 E F# G# A# C D 2 2 2 2 2 2 13654 Whole-tone 4 F# G# A# C D E 2 2 2 2 2 2 13655 Whole-tone 5 G# A# C D E F# 2 2 2 2 2 2 13656 Whole-tone 6 A# C D E F# G# 2 2 2 2 2 2 1365
course GA checktranspositions 2 2 oklimited True True okdistinct modes 1 1 ok
== DiminishedScaleMode: GA's 8 modes, each moved to C, against the course's countdegree GA's Name notes steps set on C1 Half-whole diminished C D Eb F Gb Ab A B 2 1 2 1 2 1 2 1 29252 Whole-half diminished D Eb F Gb Ab A B C 1 2 1 2 1 2 1 2 17553 Diminished mode 3 Eb F Gb Ab A B C D 2 1 2 1 2 1 2 1 29254 Diminished mode 4 F Gb Ab A B C D Eb 1 2 1 2 1 2 1 2 17555 Diminished mode 5 Gb Ab A B C D Eb F 2 1 2 1 2 1 2 1 29256 Diminished mode 6 Ab A B C D Eb F Gb 1 2 1 2 1 2 1 2 17557 Diminished mode 7 A B C D Eb F Gb Ab 2 1 2 1 2 1 2 1 29258 Diminished mode 8 B C D Eb F Gb Ab A 1 2 1 2 1 2 1 2 1755
course GA checktranspositions 3 3 oklimited True True okdistinct modes 2 2 ok
== AugmentedScaleMode: GA's 6 modes, each moved to C, against the course's countdegree GA's Name notes steps set on C1 Augmented C D# E G G# B 3 1 3 1 3 1 24572 Augmented inversed D# E G G# B C 1 3 1 3 1 3 8193 Augmented dominant E G G# B C D# 3 1 3 1 3 1 24574 Augmented Lydian G G# B C D# E 1 3 1 3 1 3 8195 Augmented mode 5 G# B C D# E G 3 1 3 1 3 1 24576 Augmented mode 6 B C D# E G G# 1 3 1 3 1 3 819
course GA checktranspositions 4 4 oklimited True True okdistinct modes 2 2 okLes propriétés sont justes : 2, 3 et 4 transpositions, toutes limitées. Mais les classes listent 6, 8 et 6 modes, qui font 1, 2 et 2 ensembles différents sur C. Les commentaires comptent autrement : la gamme par tons “has only two distinct modes” (WholeToneScaleMode.cs#L12), la gamme diminuée “has only two distinct modes: half-whole and whole-half”, c’est juste, et la gamme augmentée “has only four distinct modes” (AugmentedScaleMode.cs#L12), avec quatre instances nommées, « Augmented », « Augmented inversed », « Augmented dominant » et « Augmented Lydian », pour deux ensembles. Le code qui parcourt les modes reçoit les répétitions : ChordTemplateFactory.GenerateFromSymmetricalScales construit des accords à partir des 20, et ModalCharacteristicIntervalService range chaque mode à un indice de base plus son degré moins un, avec les bases 206, 208 et 212 : six modes par tons prennent 206 à 211, huit modes diminués 208 à 215 et six modes augmentés 212 à 217, donc les indices 208 à 211 et 212 à 215 sont chacun écrits deux fois et la dernière écriture l’emporte. Lu, pas exécuté.
Deux des noms diminués sont inversés. Scale.Diminished vaut new("C D Eb F Gb Ab A B") : le ton d’abord. Le nom de chaque degré vient de DiminishedScaleDegree.ToName (Lesson14.cs#L220-L226) :
== DiminishedScaleMode: GA's names for degrees 1 and 2 against the name of their step patterndegree course GA check1 Whole-half diminished Half-whole diminished DIFF2 Half-whole diminished Whole-half diminished DIFFWikipédia : “the first begins its ascent with a whole step, while the second begins its ascent with a half step (semitone). These modes are sometimes referred to as the whole step/half-step diminished scale and the half-step/whole step diminished scale, respectively.” L’instance statique DiminishedScaleMode.HalfWhole de GA est la gamme ton-demi-ton.
La gamme triton
Section intitulée « La gamme triton »L’accord de Petrouchka de Stravinsky est un do majeur sur un fa♯ majeur. Wikipédia : “The device uses tones that, together, make up a synthetic hexatonic scale (0 1 4 6 7 t). When enharmonically spelled C–D♭–E–G♭–G(♮)–B♭, it is called the tritone scale” (Petrushka chord ; aussi Hexatonic scale). Ses pas, 1 3 2 1 3 2, se répètent après un triton : 6 transpositions et 3 modes. C’est l’une des deux lignes 6-30 du tableau ci-dessus.
Scale.Tritone vaut new("C Db E F# G A"), et le commentaire de TritoneScaleMode, “(Petrushka scale)”, dit la même chose : “It consists of the notes C, Db, E, F#, G, A.” Le programme compare les deux gammes (Lesson14.cs#L228-L242) :
== Scale.Tritone against the tritone scale, C D♭ E G♭ G B♭ Scale.Tritone tritone scalenotes C Db E F# G A C Db E Gb G Bbpitch classes 0 1 4 6 7 9 0 1 4 6 7 Tsteps 1 3 2 1 2 3 1 3 2 1 3 2prime form (014679) 6-Z50 (013679) 6-30vector, course <2 2 4 2 3 2> <2 2 4 2 2 3>vector, GA <2 2 4 2 3 2> <2 2 4 2 2 3>transpositions 12 6modes 6 3GA's IsSymmetricSet False True
TritoneScaleMode.Items: 6 modes, 6 distinct sets on CUne note diffère : A au lieu de B♭. Cela suffit à briser la symétrie. La gamme de GA est 6-Z50, avec 12 transpositions et 6 modes différents, et le propre IsSymmetricSet de GA répond False. Les autres affirmations du commentaire ne vont à aucune des deux gammes : elle serait “built from alternating half steps and minor thirds”, ce qui décrit la gamme augmentée, et “Due to its symmetrical structure, it has only two distinct modes” (#L11-L14), alors que la gamme triton en a 3 et celle de GA 6. GA et le cours calculent le même vecteur pour chaque gamme ; les deux vecteurs ne diffèrent que par leurs deux derniers chiffres.
Ce que GA appelle symétrique
Section intitulée « Ce que GA appelle symétrique »Pour le cours, un ensemble est symétrique par transposition quand il a des transpositions limitées, et par inversion quand il a un axe miroir, ce qui vient à la section suivante. Ni l’un ni l’autre ne dépend de l’écriture des notes ni de la note qui vient en premier.
Dans GA : trois tests sur les 4096 ensembles
Section intitulée « Dans GA : trois tests sur les 4096 ensembles »En plus d’IsSymmetricSet, deux autres tests prétendent trouver les ensembles symétriques :
PitchClassSet.IsMonomodal, “True if this set is the only member of its modal family (e.g. Whole Tone, Diminished)”, vautFamilySize == 1. Les leçons 2 et 11 ont montré ce qu’est une famille modale de GA : les ensembles qui contiennent 0 et partagent un vecteur d’intervalles. Il alimente une dimension des plongements de GA, “Is Symmetric/Monomodal” (EmbeddingSchema.cs#L881-L882,ModalVectorService.cs#L132).AtonalChordAnalysisService.IsSymmetricalSet, privé, dit “Check for equal divisions of the octave” : il trie les classes de hauteurs et vérifie que les écarts entre voisines sont tous égaux, sans refermer le cercle. Il fixe l’IsSymmetricalde l’analyse atonale des accords de GA et ajoute « Symmetrical structure » à sa description (#L201-L204). Le programme compile le service tel quel et appelle la méthode par réflexion (Lesson14.cs#L105-L109).
Le programme compte ce que chaque test signale (Lesson14.cs#L246-L264) :
== Three tests GA calls symmetric, over the 4096 sets, against limited transpositiontest sets limited not limited limited, not flaggedcourse: limited transpositions 76 76 0 0UnifiedModeService.IsSymmetricSet 76 76 0 0PitchClassSet.IsMonomodal 29 17 12 59AtonalChordAnalysisService.IsSymmetricalSet 156 16 140 60
IsMonomodal, by number of notes: 0: 1, 1: 12, 2: 6, 3: 4, 4: 3, 6: 2, 12: 1IsSymmetricalSet: C D E True, B♭ C D Falsesets whose SetClass.IsModal is false, the only way into GenerateAtonalName's symmetry branch: 0IsMonomodal signale 29 ensembles : les 12 notes seules, qui ont 12 transpositions, et 17 ensembles limités dont la famille n’a qu’un membre : les 6 tritons, les 4 triades augmentées, les 3 septièmes diminuées, les 2 gammes par tons, l’ensemble vide et la gamme chromatique. Son propre exemple échoue : la gamme octatonique a deux modes, donc sa famille a deux membres et le test répond non. Il reste 59 ensembles limités non signalés.
IsSymmetricalSet signale 156 ensembles, dont 140 ont 12 transpositions. C D E a des écarts égaux, 2 et 2, donc il est « symétrique ». B♭ C D a la même forme d’accord, mais trié il donne 0 2 10, avec des écarts de 2 et 8. Tout ensemble de deux notes passe, puisqu’un seul écart est toujours égal à lui-même. Il manque 60 ensembles limités, parmi lesquels la gamme octatonique et la gamme augmentée. Dans GenerateAtonalName, le test nommerait aussi l’accord, via GetSymmetryType, qui appelle tout ensemble de deux notes « tritone », et six notes quelconques à écarts égaux, C C♯ D D♯ E F compris, « whole tone ». Cette branche n’est jamais atteinte : elle vient après setClass.IsModal, qui est vrai pour les 4096 ensembles (SetClass.cs#L93-L96). Un autre test, HasSymmetricalStructure, est l’un des cinq contrôles par lesquels RequiresAtonalAnalysis envoie un accord à l’analyse atonale : il passe quand les intervalles de l’accord au-dessus de la fondamentale sont tous des multiples de 2, de 3 ou de 4. Lu, pas exécuté.
Dans GA : un catalogue de familles atonales
Section intitulée « Dans GA : un catalogue de familles atonales »AtonalModalFamilies.yaml est généré à partir des familles modales de GA et “cross-referenced against GA.Business.Config/Modes.yaml for tonal analogs”. Chaque famille a un champ IsSymmetric, et AtonalModalFamiliesConfig.GetSymmetricFamilies renvoie “Every family with a single distinct mode (symmetric sets — whole tone, diminished chord, augmented triad, chromatic, etc.)” (AtonalModalFamiliesConfig.fs#L198-L201). Le programme lit le fichier par le chargeur de GA et liste les familles qui ont IsSymmetric ou des transpositions limitées (Lesson14.cs#L266-L274) :
== AtonalModalFamilies.yaml (GA.Business.Config, read by AtonalModalFamiliesConfig): IsSymmetric against limited transpositionfamilies: 200; IsSymmetric: 6; with limited transpositions: 15
first mode, family course GA check0 Family-1-1 False True DIFF0 6 Family-2-1 True True ok0 4 8 Augmented Triad Family True True ok0 3 6 9 Major Seventh Chord Family True True ok0 2 6 8 Family-4-4 True False DIFF0 1 6 7 Family-4-21 True False DIFF0 2 4 6 8 T Whole Tone Family True True ok0 1 3 6 7 9 Family-6-6 True False DIFF0 1 4 5 8 9 Augmented (Hexatonic) Family True False DIFF0 1 2 6 7 8 Family-6-41 True False DIFF0 1 3 4 6 7 9 T Diminished Family True False DIFF0 1 2 4 6 7 8 T Family-8-4 True False DIFF0 1 2 3 6 7 8 9 Major Bebop Family True False DIFF0 1 2 4 5 6 8 9 T Family-9-1 True False DIFF0 1 2 3 4 6 7 8 9 T Family-10-1 True False DIFF0 1 2 3 4 5 6 7 8 9 T E Chromatic Family True True okLe générateur fixe IsSymmetric quand une famille n’a qu’un membre : “Truly symmetric sets yield Modes.Count == 1” (Program.cs#L249-L253). C’est encore le test monomodal, avec les deux mêmes erreurs : la note seule est symétrique, et les familles limitées qui ont plus d’un mode ne le sont pas, celle de la gamme octatonique comprise. Les noms sont une histoire à part. Une famille prend le nom de la famille de Modes.yaml qui liste le plus de ses membres (#L187-L209), donc la famille de la septième diminuée s’appelle « Major Seventh Chord Family » : la famille Major Seventh Chord de la leçon 11 liste une « Diminished Seventh » (Modes.yaml#L531). Le quatrième mode de Messiaen est « Major Bebop Family » ; la dernière section de cette leçon revient sur les noms.
Dans GA : la réponse à « modes of limited transposition »
Section intitulée « Dans GA : la réponse à « modes of limited transposition » »ModesSkill, une compétence de l’agent de théorie de GA, répond à une question qui contient “modes of limited transposition” avec ces familles (ModesSkill.cs#L596-L601), mises en forme par FormatAtonalSymmetricListing avec une confiance de 1,0. Le cours ne compile pas GA.Business.ML, donc le programme reconstruit la réponse à partir du même format et des mêmes données (Lesson14.cs#L276-L285) :
== ModesSkill's answer to "modes of limited transposition" (GA.Business.ML, not compiled), rebuilt from its format and the same data**6 symmetric / modes-of-limited-transposition families** in the atonal catalog:
- **Family-1-1** — ICV `<0 0 0 0 0 0>` — 1 notes (Forte 1-1)- **Family-2-1** — ICV `<0 0 0 0 0 1>` — 2 notes (Forte 2-1)- **Augmented Triad Family** — ICV `<0 0 0 3 0 0>` — 3 notes (Forte 3-1)- **Major Seventh Chord Family** — ICV `<0 0 4 0 0 2>` — 4 notes (Forte 4-1)- **Whole Tone Family** — ICV `<0 6 0 6 0 3>` — 6 notes (Forte 6-1)- **Chromatic Family** — ICV `<1 1 1 1 0 6>` — 12 notes (Forte 12-1)
These are Messiaen's classical category — scales that repeat under rotation by fewer than 12 transpositions. The whole-tone scale (2 transpositions), octatonic (3), and hexatonic (4) are the most common in jazz / film vocabulary.Six familles, dont une note seule ; les gammes octatonique et hexatonique que nomme la dernière phrase ne sont pas dans la liste. Le vecteur de la famille chromatique est le débordement de la leçon 11, <1 1 1 1 0 6> pour <12 12 12 12 12 6>.
Dans GA : les numéros de Forte
Section intitulée « Dans GA : les numéros de Forte »La réponse donne au triton le numéro de Forte 2-1, à la triade augmentée 3-1, à la septième diminuée 4-1. Les numéros de Forte, dans la liste de Wikipédia et dans le tableau des quinze classes, sont 2-6, 3-12 et 4-28. L’en-tête du fichier dit pourquoi : “Forte numbers come from ProgrammaticForteCatalog (Rahn ordering)”. ProgrammaticForteCatalog numérote les classes d’ensembles de chaque taille par vecteur, puis par forme primaire (#L123-L127), et son commentaire dit que cet ordre “may differ from Allen Forte’s historical 1973 numbering for some set classes. For most practical purposes, the differences are minor”. Le commentaire de ForteCatalog, que la leçon 4 a vérifié contre les numéros de Forte, le contredit : “That ordinal is NOT Forte’s catalog number — it diverges for most set classes — so it must not be surfaced to users or cross-joined with external Forte-numbered data.” Le programme compare les étiquettes du fichier avec ForteCatalog pour les 200 familles (Lesson14.cs#L287-L302) :
== The Forte labels of AtonalModalFamilies.yaml against GA's ForteCatalog (CanonicalForteCatalog, lesson 4)notes families same labels1 1 12 6 03 12 04 28 05 35 06 35 17 35 08 28 09 12 010 6 011 1 112 1 1all 200 4
symmetric family ForteCatalog the file check0 1-1 1-1 ok0 6 2-6 2-1 DIFF0 4 8 3-12 3-1 DIFF0 3 6 9 4-28 4-1 DIFF0 2 4 6 8 T 6-35 6-1 DIFF0 1 2 3 4 5 6 7 8 9 T E 12-1 12-1 okQuatre étiquettes sur 200 concordent : les trois tailles qui n’ont qu’une classe, et un hexacorde. L’avertissement de ForteCatalog a raison, et le fichier, comme la réponse de l’agent, fait ce qu’il interdit. GA a déjà corrigé la cause : depuis GA #436, fusionnée avant a826864, le générateur appelle ForteCatalog (Program.cs#L183) et le dit dans l’en-tête qu’il écrit (#L413). Cette pull request a remis à plus tard la régénération du fichier, qui n’a pas changé depuis sa génération dans 7a4308a : ses étiquettes sont une sortie périmée.
La symétrie miroir
Section intitulée « La symétrie miroir »Un ensemble peut aussi revenir sur lui-même par une inversion In, qui envoie la classe de hauteurs p sur n − p (leçon 4). Sur le bracelet, In est un miroir par rapport à la droite qui passe par n/2 et n/2 + 6. Ian Ring liste ces droites sous le nom “Reflection Axes” : [0, 1, 2, 3, 4, 5] pour la gamme par tons, [1, 2.5, 4, 5.5] pour la gamme octatonique 2925, [0.5, 2.5, 4.5] pour la gamme augmentée 819. Le cours compte les inversions qui laissent l’ensemble inchangé (Lesson14.Mirrors), et les dessine :
Six, quatre et trois : autant d’axes que de transpositions qui fixent chaque gamme. Ce n’est pas un hasard. Deux miroirs à la suite font une transposition, donc si un ensemble a un axe, chaque transposition qui le fixe change cet axe en un autre. Un ensemble a soit aucun axe, soit autant d’axes que de transpositions qui le fixent.
TranspositionClass.IsInversionallySymmetric dit si une classe de transposition est “equal to its own inversion’s transposition class (e.g. an augmented triad)”. Le programme le compare aux axes du cours pour chaque classe, et compte les axes de quelques gammes (Lesson14.cs#L306-L330) :
== Mirror symmetry: TranspositionClass.IsInversionallySymmetric (GA.Domain.Core) against the course's mirror axes course GA checktransposition classes 352 352 okmirror-symmetric 96 96 okagree 352 352 ok
sets with mirror axes but not as many as the transpositions that fix them: 0
scale fixing transpositions mirror axesmajor 1 1harmonic minor 1 0melodic minor 1 1whole-tone 6 6octatonic 4 4augmented scale 3 3tritone scale 2 0Scale.Tritone 1 1GA est d’accord sur les 352 classes ; 96 sont leur propre image miroir. Sur les 15 classes limitées, 13 le sont, et le tableau des quinze classes ci-dessus montre leurs axes. Les deux autres sont la gamme triton et son inversion : limitées, et pourtant sans miroir, ce qui explique qu’elle occupe deux lignes. MUS-006 dit que la plupart des gammes sont chirales, leur image miroir n’étant pas une rotation d’elles-mêmes, et que les exceptions comprennent “the major scale (whose inversion is the Phrygian mode, which IS a rotation) and symmetric scales”. Pour la symétrie par transposition, la gamme triton est le contre-exemple. La gamme majeure a un axe, qui passe par D : le dorien, 2 1 2 2 2 1 2, se lit pareil dans les deux sens. La mineure mélodique en a un, qui passe par son cinquième degré ; la mineure harmonique aucun, ce qui explique que son image miroir, le majeur harmonique, soit une autre gamme (leçon 2). Le Scale.Tritone de GA n’a pas de transpositions limitées mais a un axe.
Ajouté après la première exécution : les noms
Section intitulée « Ajouté après la première exécution : les noms »La première exécution a montré AtonalModalFamilies.yaml appelant le quatrième mode de Messiaen « Major Bebop Family ». Le programme a alors demandé aux deux catalogues de modes de GA comment ils appellent chacune des quinze classes, dans un commit à part après la première exécution : le fichier atonal, par la famille qui a le vecteur de GA, et ModesConfig.TryGetModeByIntervalClassVector, la recherche de la leçon 11 derrière la ligne « Scale: » de ga_chord_to_set (Lesson14.cs#L332-L358) :
== Added after the first run: what GA's two mode catalogs call the fifteen classesAtonalModalFamilies.yaml: the family with GA's vector; ModesConfig: TryGetModeByIntervalClassVector, the "Scale:" line of ga_chord_to_setclass AtonalModalFamilies.yaml ModesConfigwhole-tone scale, Messiaen 1 Whole Tone Family (none)diminished seventh Major Seventh Chord Family (none)octatonic scale, Messiaen 2 Diminished Family (none)augmented triad Augmented Triad Family (none)augmented scale Augmented (Hexatonic) Family (none)Messiaen 3 Family-9-1 (none)tritone Family-2-1 (none)(0167) 4-9 Family-4-21 (none)(0268) 4-25 Family-4-4 (none)Messiaen 5 Family-6-41 (none)tritone scale, inverted Family-6-6 (none)tritone scale Family-6-6 (none)Messiaen 4 Major Bebop Family (none)Messiaen 6 Family-8-4 Diminished (Half-Whole)Messiaen 7 Family-10-1 (none)
The modes of Modes.yaml whose notes form one of the fifteen classes: Whole Tone C D E F# G# Bb whole-tone scale, Messiaen 1 Diminished (Half-Whole) C Db Eb E F# G A Bb octatonic scale, Messiaen 2 Diminished (Whole-Half) C D Eb F Gb Ab A B octatonic scale, Messiaen 2 Augmented Triad C E G# augmented triad Diminished Seventh C Eb Gb A diminished seventh Major Bebop Mode 8 C Db D F Gb G Ab B Messiaen 4 Whole-Half Diminished C D Eb F Gb Ab A B octatonic scale, Messiaen 2 Half-Whole Diminished (Dominant Diminished) C Db Eb E F# G A Bb octatonic scale, Messiaen 2 Whole-Half Diminished (Inv 1) C D Eb F Gb Ab A B octatonic scale, Messiaen 2 Half-Whole Diminished (Inv 1) C Db Eb E F# G A Bb octatonic scale, Messiaen 2 Whole-Half Diminished (Inv 2) C D Eb F Gb Ab A B octatonic scale, Messiaen 2 Half-Whole Diminished (Inv 2) C Db Eb E F# G A Bb octatonic scale, Messiaen 2 Whole-Half Diminished (Inv 3) C D Eb F Gb Ab A B octatonic scale, Messiaen 2 Half-Whole Diminished (Inv 3) C Db Eb E F# G A Bb octatonic scale, Messiaen 2 Augmented Scale C Eb E G Ab B augmented scale Augmented Scale (Inv 1) C Db E F G# A augmented scale Augmented Scale (Inv 2) C Eb E G Ab B augmented scale Augmented Scale (Inv 3) C Db E F G# A augmented scale Augmented Scale (Inv 4) C Eb E G Ab B augmented scale Augmented Scale (Inv 5) C Db E F G# A augmented scaleLe fichier atonal nomme six classes d’après Modes.yaml. Le quatrième mode de Messiaen est « Major Bebop Family » parce que la famille Major Bebop de Modes.yaml se termine par « Major Bebop Mode 8 », C D♭ D F G♭ G A♭ B (Modes.yaml#L709-L726) : pas une rotation de la gamme bebop majeure, C D E F G G♯ A B, mais le quatrième mode de Messiaen. La recherche par vecteur ne trouve qu’une classe, le sixième mode de Messiaen, et l’appelle « Diminished (Half-Whole) » : la famille Diminished déclare <4 6 4 6 4 4> (#L328-L329), qui est le vecteur du sixième mode de Messiaen, pas celui de la gamme octatonique, <4 4 8 4 4 4> (leçon 11). La gamme octatonique n’est trouvée nulle part. Et Modes.yaml liste vingt modes pour ces classes, dont dix pour la gamme octatonique : la famille Diminished (Octatonic) donne huit noms à ses deux modes, et la famille Augmented (Hexatonic) six noms aux deux siens (#L797-L828), les mêmes répétitions que les classes de modes ci-dessus. L’outil MCP lui-même n’a pas été exécuté.
Exercices
Section intitulée « Exercices »- Combien de transpositions distinctes l’accord de septième diminuée C E♭ G♭ A a-t-il ? Combien de modes, et combien d’axes miroirs ?
- La sixte française A♭ C D F♯ a les pas “major third, tone, major third, tone”. Donne ses transpositions, ses modes et ses axes miroirs, et trouve sa ligne dans le tableau des quinze classes.
- Que répond
IsSymmetricalSetpour C E G♯, pour E G♯ C, et pour C D ? CommentGetSymmetryTypeappellerait-il C D ? - Le cinquième mode de Messiaen sur C est C D♭ F G♭ G B. Pourquoi
UnifiedModeService.Describene lui donne-t-il aucunMessiaenModeIndex?
Solutions
- T0, T3, T6 et T9 le ramènent sur lui-même : 4 transpositions qui le fixent, donc 12 / 4 = 3 transpositions distinctes. Il a 4 notes et 4 transpositions qui le fixent : 1 mode. Il est sa propre image miroir, donc il a autant d’axes que de transpositions qui le fixent : 4. La ligne (0369) 4-28 du tableau dit 3, 1 et 4.
- A♭ C D F♯ vaut 8 0 2 6, que T6 ramène sur lui-même : 2 transpositions qui le fixent, 6 transpositions distinctes, 4 / 2 = 2 modes (pas 4 2 4 2 et 2 4 2 4), et 2 axes miroirs. C’est la ligne (0268) 4-25.
- True dans les deux ordres, puisque la méthode trie d’abord les classes de hauteurs : 0 4 8, écarts 4 et 4. True pour C D aussi, comme pour tout ensemble de deux notes.
GetSymmetryTypel’appellerait « tritone », mais la branche qui l’appelle n’est jamais atteinte. Describepasse la forme primaire, 0 1 2 6 7 8, identifiant 455.IdentifyMessiaenModecherche 2275, qui est C D♭ F G♭ G B lui-même : 0 1 5 6 7 11. La forme primaire n’a jamais cet identifiant.
À retenir
Section intitulée « À retenir »- Un ensemble a des transpositions limitées quand une transposition autre que T0 le ramène sur lui-même. Le nombre de ces transpositions divise 12 ; l’ensemble a 12 divisé par ce nombre transpositions distinctes, et son nombre de notes divisé par ce nombre modes distincts. Soixante-seize ensembles sont dans ce cas, en 17 classes de transposition ; sans l’ensemble vide ni la gamme chromatique, il reste 15 classes, les sept modes de Messiaen et huit troncatures, parmi lesquelles la gamme augmentée et la gamme triton.
- Un ensemble qui a un axe miroir a exactement autant d’axes que de transpositions qui le fixent. Treize des 15 classes en ont ; la gamme triton n’en a pas, donc elle et son image miroir font deux classes.
IsSymmetricSetetIsInversionallySymmetricde GA sont d’accord avec le cours sur chaque ensemble.IdentifyMessiaenModecompare des formes primaires à des identifiants qui n’en sont pas, et ne trouve que les modes 1 à 3 ; ses tests acceptent l’absence de réponse.- Les trois classes de modes symétriques de GA ont les bons nombres de transpositions mais listent un mode par degré, 6, 8 et 6, pour 1, 2 et 2 modes distincts ; deux noms diminués sont inversés.
Scale.Tritonea A là où la gamme triton a B♭, ce qui brise sa symétrie. IsMonomodal, l’IsSymmetricdu fichier atonal etIsSymmetricalSetne sont pas des tests de symétrie : ils comptent des membres uniques ou des écarts égaux. La réponse de l’agent à “modes of limited transposition” liste une note seule et oublie la gamme octatonique, avec des numéros de Forte que son propre catalogue dit de ne pas montrer.
- Mark Gotham et al., Open Music Theory, version 2, 2023, CC BY-SA 4.0 : Collections (les collections par tons, octatonique et hexatonique, et le tableau des modes de Messiaen).
- Wikipédia : Mode of limited transposition, Octatonic scale, Whole-tone scale, Hexatonic scale, Petrushka chord, List of set classes.
- Ian Ring, A Study of Musical Scales : gammes 1365, 2925 et 819.
- GuitarAlchemist/ga au commit
a826864:Common/GA.Domain.Core/Theory/Tonal/Modes/SymmetricScaleMode.cs,Theory/Tonal/Modes/Symmetric/WholeToneScaleMode.cs,DiminishedScaleMode.cs,AugmentedScaleMode.cs,GenericSymmetricScaleMode.cs,Theory/Tonal/Modes/Exotic/TritoneScaleMode.cs,Theory/Tonal/Primitives/Symmetric/DiminishedScaleDegree.cs,Theory/Tonal/Scales/Scale.cs,Theory/Atonal/PitchClassSet.cs,SetClass.cs,TranspositionClass.cs,ForteCatalog.cs,ProgrammaticForteCatalog.cs,Common/GA.Domain.Services/Unified/UnifiedModeService.cs,Chords/Analysis/Atonal/AtonalChordAnalysisService.cs,Chords/ChordTemplateFactory.cs,Common/GA.Business.Config/AtonalModalFamilies.yaml,AtonalModalFamiliesConfig.fs,Modes.yaml,Demos/AtonalModalFamiliesGenerator/Program.cs,Common/GA.Business.ML/Agents/Skills/ModesSkill.cs,Musical/Enrichment/ModalCharacteristicIntervalService.cs,Embeddings/EmbeddingSchema.cs,Embeddings/Services/ModalVectorService.cs,Tests/Common/GA.Business.Core.Tests/Unified/UnifiedModeAdvancedTests.cs.