Lección 12: La simetría y los modos de transposición limitada
Secciones
Ajustes de lectura
Ninguna voz para este idioma en este navegador.
Más voces
Código y términos técnicos en inglés
Desactivado: la voz de la página lo lee todo, sin pausa entre dos voces.
Ninguna voz para este idioma en este navegador.
Más voces
Más voces: Microsoft Edge ofrece voces naturales en línea, y Windows (Configuración › Hora e idioma › Voz), macOS y Android instalan otras.
La lección 2 contó los modos de dos escalas simétricas: uno para la escala de tonos enteros, dos para la escala octatónica. Esta lección pregunta qué conjuntos son simétricos. Algunos vuelven sobre sí mismos con una transposición, un giro del brazalete: Messiaen llamó a las escalas de entre ellos «modos de transposición limitada». Otros vuelven con una inversión, un espejo. Guitar Alchemist (GA) tiene clases de modos para tres escalas simétricas, un servicio que reconoce los modos de Messiaen, y varias pruebas que su código llama pruebas de simetría. El programa del curso encuentra cada conjunto simétrico entre los 4096, y luego comprueba cada una de las respuestas de GA, con el propio código de GA siempre que puede.
Todos los enlaces a GA apuntan al commit a826864. Las salidas proceden del comando de abajo; el punto de entrada es l14.
dotnet run --project code/music-theory-ga/GaTheory -c Release -- l14La transposición limitada
Sección titulada «La transposición limitada»La idea
Sección titulada «La idea»Wikipedia: “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 escala de tonos enteros C D E F♯ G♯ A♯ subida un tono da las mismas notas, así que “has only 2 transpositions”. El módulo Streeling MUS-006 · El universo de las escalas lo dice con el brazalete: “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.”
El curso cuenta, para cada conjunto, cuántas de las doce transposiciones T0 a T11 lo dejan igual (Lesson14.Fixing). T0 siempre lo hace. Si Ta y Tb lo hacen, Ta+b también, así que ese número es siempre un divisor de 12, y el conjunto tiene 12 dividido por ese número transposiciones distintas. Un conjunto es limitado cuando ese número es mayor que 1. El programa hace la cuenta sobre los 4096 conjuntos (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 classesSetenta y seis conjuntos de 4096. Los dos conjuntos que todas las transposiciones fijan son el conjunto vacío y la escala cromática. Sin ellos quedan 15 clases: la cuenta de Wikipedia, “If one excludes modes with 0, 1, 11 or 12 notes which can be construed as too extreme, there are 15 generalized Messiaen modes”. Forman 14 clases de conjuntos, porque una de ellas, la escala de tritono de más abajo, no es su propia imagen especular: ella y su inversión son dos clases de transposición de una misma clase de conjuntos. La sección siguiente las enumera.
Las quince clases
Sección titulada «Las quince clases»Cada clase se escribe desde 0, con su forma prima y su número de Forte tomados de la List of set classes de Wikipedia, sus pasos, sus transposiciones y modos distintos (la cuenta de rotaciones distintas de la lección 2), y sus ejes especulares, que llegan más adelante (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 7Los pasos muestran la simetría: una clase con 2 transposiciones repite sus pasos cada 2 semitonos, una con 6 cada 6. Y en cada fila, el número de modos es el número de notas dividido por el número de transposiciones que fijan el conjunto: la escala octatónica tiene 8 notas y 4 transposiciones que la fijan, 2 modos. Además de los siete de Messiaen, la tabla contiene lo que Wikipedia llama truncamientos, los conjuntos que quedan al quitar notas de forma simétrica: el tritono, la tríada aumentada, la séptima disminuida, “major third, tone, major third, tone”, que es 4-25, “perfect fourth, semitone, perfect fourth, semitone”, que es 4-9, la escala aumentada, y dos conjuntos de seis notas que son imágenes especulares uno del otro, “(Modes are “mirror” inversions of Petrushka Chord modes.)“. La escala aumentada, 6-20, es “arguably of musical importance”, dice el artículo, y “a truncated version of his Third Mode”.
Los siete modos de Messiaen
Sección titulada «Los siete modos de Messiaen»El programa construye los modos de Messiaen a partir de los intervalos que Wikipedia da para cada uno, y compara sus cuentas con las transposiciones y los modos que da el artículo (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 okSiete de siete. Open Music Theory da la misma tabla, con una columna para el “Number of unique transpositions” y otra para el “Number of unique rotations” (Open Music Theory, “Collections”).
En GA: una prueba, y una búsqueda
Sección titulada «En GA: una prueba, y una búsqueda»UnifiedModeService, que la lección 11 compiló, tiene un IsSymmetricSet privado: “A set is rotationally symmetric if there exists k (1..11) such that Transpose(k) == set”. Es la transposición limitada. FromPitchClassSet guarda su respuesta en la clase de modo que construye (#L43-L69), y el programa la lee allí para cada conjunto (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 coincide en los 4096 conjuntos. Describe nombra luego el modo de Messiaen, si el conjunto es uno: pasa la forma prima del conjunto a IdentifyMessiaenMode (#L136), que compara su identificador con ocho constantes. La forma prima de GA es el menor identificador entre las 24 transposiciones e inversiones (lección 4). El programa pregunta por cada uno de los siete modos, y lista las 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, 2015Para los modos 1 a 3, las constantes son formas primas, y GA encuentra los modos. Para los modos 4, 5 y 7, son los modos escritos desde C, cosa que una forma prima nunca es: el método recibe 975, 455 o 2015 y no devuelve nada. La constante del modo 6, 3315, no es el modo 6 en absoluto sino otra rotación del modo 4; el comentario de encima duda entre las notas del modo 4, [0,1,2,5,6,7,8,11], y ese conjunto. La segunda constante del modo 2, 2925, tampoco puede coincidir nunca. El comentario del método da al modo 3 “3 transpositions”; tiene 4. Las pruebas de GA para los modos 5 a 7 pasan igualmente: cada una afirma Is.Null.Or.EqualTo(5) (o 6, o 7), que acepta la ausencia de respuesta, y la del modo 6 también construye 3315 (UnifiedModeAdvancedTests.cs#L87-L119).
Las clases de escalas simétricas de GA
Sección titulada «Las clases de escalas simétricas de GA»La idea
Sección titulada «La idea»Una clase de modos para una escala simétrica debería tener un modo por rotación distinta: uno para la escala de tonos enteros, dos para la escala octatónica (“Each octatonic scale has exactly two modes”, el artículo Octatonic scale de Wikipedia), dos para la escala aumentada, cuyos pasos alternan 3 y 1. Sus transposiciones son 2, 3 y 4: “hexatonic collections can only be transposed four times before returning to the same group of notes again” (Open Music Theory, “Collections”).
SymmetricScaleMode<TScaleDegree> es el ScaleMode<TScaleDegree> de la lección 11 con dos propiedades más: HasLimitedTranspositions, verdadera “when it maps onto itself before all 12 transpositions are exhausted”, y TranspositionCount. Tres clases con nombre derivan de ella, sobre las escalas de Scale.cs#L59-L62: WholeToneScaleMode, DiminishedScaleMode y AugmentedScaleMode. Una cuarta, GenericSymmetricScaleMode, admite cualquier escala y aquí queda aparte. Los Items de las tres clases con nombre contienen un modo por grado, y los tipos de grado van de 1 al número de notas, como los de la lección 11 (DiminishedScaleDegree.cs#L14-L15). El programa lleva cada modo a C y compara las tres clases con las cuentas del curso, con un solo método genérico (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 okLas propiedades son correctas: 2, 3 y 4 transposiciones, todas limitadas. Pero las clases listan 6, 8 y 6 modos, que forman 1, 2 y 2 conjuntos distintos sobre C. Los comentarios cuentan otra cosa: la escala de tonos enteros “has only two distinct modes” (WholeToneScaleMode.cs#L12), la escala disminuida “has only two distinct modes: half-whole and whole-half”, correcto, y la escala aumentada “has only four distinct modes” (AugmentedScaleMode.cs#L12), con cuatro instancias con nombre, «Augmented», «Augmented inversed», «Augmented dominant» y «Augmented Lydian», para dos conjuntos. El código que recorre los modos recibe las repeticiones: ChordTemplateFactory.GenerateFromSymmetricalScales construye acordes a partir de los 20, y ModalCharacteristicIntervalService guarda cada modo en un índice base más su grado menos uno, con las bases 206, 208 y 212: seis modos de tonos enteros ocupan 206 a 211, ocho modos disminuidos 208 a 215 y seis modos aumentados 212 a 217, así que los índices 208 a 211 y 212 a 215 se escriben dos veces cada uno y gana la última escritura. Leído, no ejecutado.
Dos de los nombres disminuidos están intercambiados. Scale.Diminished es new("C D Eb F Gb Ab A B"): primero el tono. El nombre de cada grado viene 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 DIFFWikipedia: “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.” La instancia estática DiminishedScaleMode.HalfWhole de GA es la escala tono-semitono.
La escala de tritono
Sección titulada «La escala de tritono»La idea
Sección titulada «La idea»El acorde de Petrushka de Stravinsky es do mayor sobre fa♯ mayor. Wikipedia: “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; también Hexatonic scale). Sus pasos, 1 3 2 1 3 2, se repiten tras un tritono: 6 transposiciones y 3 modos. Es una de las dos filas 6-30 de la tabla de arriba.
Scale.Tritone es new("C Db E F# G A"), y el comentario de TritoneScaleMode, “(Petrushka scale)”, dice lo mismo: “It consists of the notes C, Db, E, F#, G, A.” El programa compara las dos escalas (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 CUna nota difiere: A en lugar de B♭. Basta para romper la simetría. La escala de GA es 6-Z50, con 12 transposiciones y 6 modos distintos, y el propio IsSymmetricSet de GA responde False. Las demás afirmaciones del comentario no encajan con ninguna de las dos escalas: estaría “built from alternating half steps and minor thirds”, lo que describe la escala aumentada, y “Due to its symmetrical structure, it has only two distinct modes” (#L11-L14), cuando la escala de tritono tiene 3 y la de GA 6. GA y el curso calculan el mismo vector para cada escala; los dos vectores solo difieren en sus dos últimas cifras.
Lo que GA llama simétrico
Sección titulada «Lo que GA llama simétrico»La idea
Sección titulada «La idea»Para el curso, un conjunto es simétrico por transposición cuando tiene transposiciones limitadas, y por inversión cuando tiene un eje especular, que llega en la sección siguiente. Ninguna de las dos cosas depende de cómo se escriben las notas ni de qué nota va primero.
En GA: tres pruebas sobre los 4096 conjuntos
Sección titulada «En GA: tres pruebas sobre los 4096 conjuntos»Además de IsSymmetricSet, otras dos pruebas dicen encontrar los conjuntos simétricos:
PitchClassSet.IsMonomodal, “True if this set is the only member of its modal family (e.g. Whole Tone, Diminished)”, esFamilySize == 1. Las lecciones 2 y 11 mostraron qué es una familia modal de GA: los conjuntos que contienen 0 y comparten un vector de intervalos. Alimenta una dimensión de los embeddings de GA, “Is Symmetric/Monomodal” (EmbeddingSchema.cs#L881-L882,ModalVectorService.cs#L132).AtonalChordAnalysisService.IsSymmetricalSet, privado, dice “Check for equal divisions of the octave”: ordena las clases de altura y comprueba que las distancias entre vecinas son todas iguales, sin cerrar el círculo. Fija elIsSymmetricaldel análisis atonal de acordes de GA y añade «Symmetrical structure» a su descripción (#L201-L204). El programa compila el servicio tal cual y llama al método por reflexión (Lesson14.cs#L105-L109).
El programa cuenta lo que marca cada prueba (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 marca 29 conjuntos: las 12 notas sueltas, que tienen 12 transposiciones, y 17 conjuntos limitados cuya familia tiene un solo miembro: los 6 tritonos, las 4 tríadas aumentadas, las 3 séptimas disminuidas, las 2 escalas de tonos enteros, el conjunto vacío y la escala cromática. Su propio ejemplo falla: la escala octatónica tiene dos modos, así que su familia tiene dos miembros y la prueba dice que no. Quedan 59 conjuntos limitados sin marcar.
IsSymmetricalSet marca 156 conjuntos, 140 de ellos con 12 transposiciones. C D E tiene distancias iguales, 2 y 2, así que es «simétrico». B♭ C D es la misma forma de acorde, pero ordenado da 0 2 10, con distancias de 2 y 8. Todo conjunto de dos notas pasa, porque una sola distancia siempre es igual a sí misma. Se le escapan 60 conjuntos limitados, entre ellos la escala octatónica y la escala aumentada. En GenerateAtonalName, la prueba también daría nombre al acorde, mediante GetSymmetryType, que llama «tritone» a todo conjunto de dos notas, y «whole tone» a seis notas cualesquiera con distancias iguales, C C♯ D D♯ E F incluidas. Esa rama nunca se alcanza: viene después de setClass.IsModal, que es verdadero para los 4096 conjuntos (SetClass.cs#L93-L96). Otra prueba, HasSymmetricalStructure, es una de las cinco comprobaciones con las que RequiresAtonalAnalysis envía un acorde al análisis atonal: se cumple cuando los intervalos del acorde sobre la fundamental son todos múltiplos de 2, de 3 o de 4. Leído, no ejecutado.
En GA: un catálogo de familias atonales
Sección titulada «En GA: un catálogo de familias atonales»AtonalModalFamilies.yaml se genera a partir de las familias modales de GA y está “cross-referenced against GA.Business.Config/Modes.yaml for tonal analogs”. Cada familia tiene un campo IsSymmetric, y AtonalModalFamiliesConfig.GetSymmetricFamilies devuelve “Every family with a single distinct mode (symmetric sets — whole tone, diminished chord, augmented triad, chromatic, etc.)” (AtonalModalFamiliesConfig.fs#L198-L201). El programa lee el archivo con el cargador de GA y lista las familias que tienen IsSymmetric o transposiciones limitadas (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 okEl generador fija IsSymmetric cuando una familia tiene un solo miembro: “Truly symmetric sets yield Modes.Count == 1” (Program.cs#L249-L253). Es otra vez la prueba monomodal, con los mismos dos errores: la nota suelta es simétrica, y las familias limitadas con más de un modo no lo son, la de la escala octatónica incluida. Los nombres son otra historia. Una familia toma el nombre de la familia de Modes.yaml que lista más de sus miembros (#L187-L209), así que la familia de la séptima disminuida se llama «Major Seventh Chord Family»: la familia Major Seventh Chord de la lección 11 lista una «Diminished Seventh» (Modes.yaml#L531). El cuarto modo de Messiaen es «Major Bebop Family»; la última sección de esta lección vuelve sobre los nombres.
En GA: la respuesta a «modes of limited transposition»
Sección titulada «En GA: la respuesta a «modes of limited transposition»»ModesSkill, una habilidad del agente de teoría de GA, responde a una pregunta que contiene “modes of limited transposition” con esas familias (ModesSkill.cs#L596-L601), con el formato de FormatAtonalSymmetricListing y una confianza de 1,0. El curso no compila GA.Business.ML, así que el programa reconstruye la respuesta a partir del mismo formato y los mismos datos (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.Seis familias, una nota suelta entre ellas; las escalas octatónica y hexatónica que nombra la última frase no están en la lista. El vector de la familia cromática es el desbordamiento de la lección 11, <1 1 1 1 0 6> por <12 12 12 12 12 6>.
En GA: los números de Forte
Sección titulada «En GA: los números de Forte»La respuesta da al tritono el número de Forte 2-1, a la tríada aumentada 3-1, a la séptima disminuida 4-1. Los números de Forte, en la lista de Wikipedia y en la tabla de las quince clases, son 2-6, 3-12 y 4-28. La cabecera del archivo dice por qué: “Forte numbers come from ProgrammaticForteCatalog (Rahn ordering)”. ProgrammaticForteCatalog numera las clases de conjuntos de cada tamaño por vector, y luego por forma prima (#L123-L127), y su comentario dice que ese orden “may differ from Allen Forte’s historical 1973 numbering for some set classes. For most practical purposes, the differences are minor”. El comentario de ForteCatalog, que la lección 4 comprobó contra los números de Forte, lo contradice: “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.” El programa compara las etiquetas del archivo con ForteCatalog para las 200 familias (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 okCuatro etiquetas de 200 coinciden: los tres tamaños que tienen una sola clase, y un hexacordio. El aviso de ForteCatalog tiene razón, y el archivo, igual que la respuesta del agente, hace lo que prohíbe. GA ya ha corregido la causa: desde GA #436, fusionada antes de a826864, el generador llama a ForteCatalog (Program.cs#L183) y lo dice en la cabecera que escribe (#L413). Esa pull request dejó para más adelante regenerar el archivo, que no ha cambiado desde que se generó en 7a4308a: sus etiquetas son una salida desfasada.
La simetría especular
Sección titulada «La simetría especular»La idea
Sección titulada «La idea»Un conjunto también puede volver sobre sí mismo con una inversión In, que lleva la clase de altura p a n − p (lección 4). En el brazalete, In es un espejo respecto a la recta que pasa por n/2 y n/2 + 6. Ian Ring lista esas rectas como “Reflection Axes”: [0, 1, 2, 3, 4, 5] para la escala de tonos enteros, [1, 2.5, 4, 5.5] para la escala octatónica 2925, [0.5, 2.5, 4.5] para la escala aumentada 819. El curso cuenta las inversiones que dejan el conjunto igual (Lesson14.Mirrors), y las dibuja:
Seis, cuatro y tres: tantos ejes como transposiciones que fijan cada escala. No es casualidad. Dos espejos seguidos forman una transposición, así que si un conjunto tiene un eje, cada transposición que lo fija convierte ese eje en otro. Un conjunto no tiene ningún eje, o tiene tantos como transposiciones que lo fijan.
TranspositionClass.IsInversionallySymmetric dice si una clase de transposición es “equal to its own inversion’s transposition class (e.g. an augmented triad)”. El programa lo compara con los ejes del curso para cada clase, y cuenta los ejes de algunas escalas (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 coincide en las 352 clases; 96 son su propia imagen especular. De las 15 clases limitadas, 13 lo son, y la tabla de las quince clases de arriba muestra sus ejes. Las otras dos son la escala de tritono y su inversión: limitadas, y sin embargo sin espejo, por eso ocupa dos filas. MUS-006 dice que la mayoría de las escalas son quirales, su imagen especular no es una rotación de sí mismas, y que las excepciones incluyen “the major scale (whose inversion is the Phrygian mode, which IS a rotation) and symmetric scales”. Para la simetría por transposición, la escala de tritono es el contraejemplo. La escala mayor tiene un eje, que pasa por D: el dórico, 2 1 2 2 2 1 2, se lee igual en los dos sentidos. La menor melódica tiene uno, que pasa por su quinto grado; la menor armónica ninguno, por eso su imagen especular, la mayor armónica, es otra escala (lección 2). El Scale.Tritone de GA no tiene transposiciones limitadas pero tiene un eje.
Añadido después de la primera ejecución: los nombres
Sección titulada «Añadido después de la primera ejecución: los nombres»La primera ejecución mostró que AtonalModalFamilies.yaml llama al cuarto modo de Messiaen «Major Bebop Family». El programa preguntó entonces a los dos catálogos de modos de GA cómo llaman a cada una de las quince clases, en un commit aparte después de la primera ejecución: el archivo atonal, por la familia que tiene el vector de GA, y ModesConfig.TryGetModeByIntervalClassVector, la búsqueda de la lección 11 detrás de la línea «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 scaleEl archivo atonal nombra seis clases según Modes.yaml. El cuarto modo de Messiaen es «Major Bebop Family» porque la familia Major Bebop de Modes.yaml termina con «Major Bebop Mode 8», C D♭ D F G♭ G A♭ B (Modes.yaml#L709-L726): no una rotación de la escala bebop mayor, C D E F G G♯ A B, sino el cuarto modo de Messiaen. La búsqueda por vector solo encuentra una clase, el sexto modo de Messiaen, y la llama «Diminished (Half-Whole)»: la familia Diminished declara <4 6 4 6 4 4> (#L328-L329), que es el vector del sexto modo de Messiaen, no el de la escala octatónica, <4 4 8 4 4 4> (lección 11). La escala octatónica no se encuentra en ninguna parte. Y Modes.yaml lista veinte modos para estas clases, diez de ellos para la escala octatónica: la familia Diminished (Octatonic) da ocho nombres a sus dos modos, y la familia Augmented (Hexatonic) seis nombres a los suyos (#L797-L828), las mismas repeticiones que las clases de modos de arriba. La herramienta MCP en sí no se ejecutó.
Ejercicios
Sección titulada «Ejercicios»- ¿Cuántas transposiciones distintas tiene el acorde de séptima disminuida C E♭ G♭ A? ¿Cuántos modos, y cuántos ejes especulares?
- La sexta francesa A♭ C D F♯ tiene los pasos “major third, tone, major third, tone”. Da sus transposiciones, sus modos y sus ejes especulares, y encuentra su fila en la tabla de las quince clases.
- ¿Qué responde
IsSymmetricalSetpara C E G♯, para E G♯ C, y para C D? ¿Cómo llamaríaGetSymmetryTypea C D? - El quinto modo de Messiaen sobre C es C D♭ F G♭ G B. ¿Por qué
UnifiedModeService.Describeno le da ningúnMessiaenModeIndex?
Soluciones
- T0, T3, T6 y T9 lo devuelven sobre sí mismo: 4 transposiciones que lo fijan, así que 12 / 4 = 3 transposiciones distintas. Tiene 4 notas y 4 transposiciones que lo fijan: 1 modo. Es su propia imagen especular, así que tiene tantos ejes como transposiciones que lo fijan: 4. La fila (0369) 4-28 de la tabla dice 3, 1 y 4.
- A♭ C D F♯ es 8 0 2 6, que T6 devuelve sobre sí mismo: 2 transposiciones que lo fijan, 6 transposiciones distintas, 4 / 2 = 2 modos (pasos 4 2 4 2 y 2 4 2 4), y 2 ejes especulares. Es la fila (0268) 4-25.
- True en los dos órdenes, porque el método ordena primero las clases de altura: 0 4 8, distancias 4 y 4. True también para C D, como para todo conjunto de dos notas.
GetSymmetryTypelo llamaría «tritone», pero la rama que lo llama nunca se alcanza. Describepasa la forma prima, 0 1 2 6 7 8, identificador 455.IdentifyMessiaenModebusca 2275, que es el propio C D♭ F G♭ G B: 0 1 5 6 7 11. La forma prima nunca tiene ese identificador.
Puntos clave
Sección titulada «Puntos clave»- Un conjunto tiene transposiciones limitadas cuando una transposición distinta de T0 lo devuelve sobre sí mismo. El número de esas transposiciones divide a 12; el conjunto tiene 12 dividido por él transposiciones distintas, y su número de notas dividido por él modos distintos. Setenta y seis conjuntos lo cumplen, en 17 clases de transposición; sin el conjunto vacío ni la escala cromática quedan 15 clases, los siete modos de Messiaen y ocho truncamientos, entre ellos la escala aumentada y la escala de tritono.
- Un conjunto con un eje especular tiene exactamente tantos ejes como transposiciones que lo fijan. Trece de las 15 clases los tienen; la escala de tritono no, así que ella y su imagen especular son dos clases.
IsSymmetricSeteIsInversionallySymmetricde GA coinciden con el curso en cada conjunto.IdentifyMessiaenModecompara formas primas con identificadores que no lo son, y solo encuentra los modos 1 a 3; sus pruebas aceptan la ausencia de respuesta.- Las tres clases de modos simétricos de GA tienen bien las transposiciones pero listan un modo por grado, 6, 8 y 6, para 1, 2 y 2 modos distintos; dos nombres disminuidos están intercambiados.
Scale.Tritonetiene A donde la escala de tritono tiene B♭, lo que rompe su simetría. IsMonomodal, elIsSymmetricdel archivo atonal eIsSymmetricalSetno son pruebas de simetría: cuentan miembros únicos o distancias iguales. La respuesta del agente a “modes of limited transposition” lista una nota suelta y omite la escala octatónica, con números de Forte que su propio catálogo dice que no se deben mostrar.
Fuentes
Sección titulada «Fuentes»- Mark Gotham et al., Open Music Theory, versión 2, 2023, CC BY-SA 4.0: Collections (las colecciones de tonos enteros, octatónica y hexatónica, y la tabla de los modos de Messiaen).
- Wikipedia: Mode of limited transposition, Octatonic scale, Whole-tone scale, Hexatonic scale, Petrushka chord, List of set classes.
- Ian Ring, A Study of Musical Scales: escalas 1365, 2925 y 819.
- GuitarAlchemist/ga en el 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.