En música con afinación temperada, la octava se subdivide en 12 semitonos de igual intervalo. Por razones históricas, sólo 7 notas tienen nombre, Do Re Mi Fa Sol La Si (las notas naturales), así que para nombrar los 12 huecos se idearon las alteraciones, ♯ (sostenido o semitono arriba) y ♭ (bemol o semitono abajo). De esta manera Mi♯ es un sonido que suena un semitono por encima del Mi.
Hay tonos que, en afinación temperada, pueden recibir varios nombres. Así, por ejemplo, Mi♯ da nombre al mismo tono que Fa. A estos casos se les llama notas enarmónicas. En un enarmónico no se puede mezclar alteraciones distintas: es posible Mi♯♯ pero no Mi♯♭.
La escala cromática es aquella que se genera dando nombre a los 12 semitonos a partir de las 7 notas naturales y hasta un máximo de 2 alteraciones para generar la máxima cantidad de enarmónicos. Las notas naturales, comenzando por el Do, se sitúan en los tonos 0, 2, 4, 5, 7, 9, 11. Desde ahí, y aplicando las dos alteraciones, se generan todos los enarmónicos posibles para los 12 tonos.
Diseña una función escala_cromatica(notas) que, dada una lista notas que contiene los nombres (str) de las notas naturales en sus posiciones respectivas, y el string vacío en el resto, devuelva la una lista de listas que contenga la escala cromática usando el nombre de las notas naturales definido en la lista notas.
Es frecuente necesitar conocer la nota natural asociada a un nombre de nota, o lo que es lo mismo, el nombre de la nota sin las alteraciones.
Diseña una función nota_natural(nota) que, dado un str nota, devuelva su nota natural.
Dado el nombre de una nota, puede ser interesante conocer a cuál de de los 12 tonos de la escala cromática se refiere.
Diseña una función nota_a_numero(nota, escala) que, dado un str nota con el nombre de una nota, y una lista de listas escala que contiene una escala cromática en la que nota existe, devuelva el número del tono de la escala cromática al que nota hace referencia.
Intervalo es la distancia en relación a una escala entre dos notas musicales (incluyendo los extremos) medido en semitonos.
Diseña una función intervalo(nota1, nota2, escala) que, dados dos str nota1 y nota2 que representan el nombre de dos notas, y una lista de listas escala que contiene una escala cromática donde ambas notas nota1 y nota2 existen, devuelva un int con el intervalo en semitonos que hay desde nota1 hasta nota2.
Diseña una función enarmonicas(nota, cromatica) que, dado un str nota con el nombre de una nota, y una lista de listas cromatica que contiene una escala cromática en la que nota existe, devuelva una nueva lista con los nombres de todas sus notas enarmónicas.
Una escala diatónica es una serie de 7 notas tomadas ordenadamente del total de 12 de la escala cromática a partir de una tónica y siguiendo un patrón de saltos de semitonos diatónicos (después de un Do nunca habrá un Do♯ sino Re♭) de manera que siempre estén representadas en orden las 7 notas naturales una única vez cada una, ya sea en su estado natural o alteradas.
Diseña una función escala_diatonica(tonica, modo, cromatica) que, dado un str tonica con el nombre de una nota, una lista modo con un patrón de saltos de semitonos, y una lista de listas cromatica que contiene una escala cromática en la que tonica existe, devuelva una lista de 7 str que contenga la escala diatónica cuya tónica sea tonica siguiendo el patrón de saltos diatónicos indicado por modo.
Un acorde tríada consiste en un conjunto de tres notas diferentes que constituyen una unidad armónica y reciben el nombre de tónica, tercera y quinta, porque el acorde lo forman las notas 0, 2 y 4 de la escala diatónica correspondiente.
Diseña una función acorde_triada(tonica, modo, cromatica) que, dado un str tonica con el nombre de una nota, una lista modo con un patrón de saltos de semitonos, y una lista de listas cromatica que contiene una escala cromática en la que tonica existe, devuelva una lista con las tres notas del acorde tríada extraidas de la escala diatónica para tonica y modo.
ingles >>> escala_cromatica(['C', '', 'D', '', 'E', 'F', '', 'G', '', 'A', '', 'B']) [['C', 'B#', 'Dbb'], ['C#', 'B##', 'Db'], ['D', 'C##', 'Ebb'], ['D#', 'Eb', 'Fbb'], ['E', 'Fb', 'D##'], ['F', 'E#', 'Gbb'], ['F#', 'Gb', 'E##'], ['G', 'F##', 'Abb'], ['G#', 'Ab'], ['A', 'G##', 'Bbb'], ['A#', 'Bb', 'Cbb'], ['B', 'A##', 'Cb']] >>> nota_natural('La##') 'La' >>> crom = escala_cromatica(['Do', '', 'Re', '', 'Mi', 'Fa', '', 'Sol', '', 'La', '', 'Si']) >>> nota_a_numero('La##', crom) 11 >>> intervalo('Lab', 'Si#', crom) 4 >>> enarmonicas('Do#', crom) ['Si##', 'Reb'] >>> nota_a_numero('Do#', crom) 1 >>> escala_diatonica("Re", [2, 1, 2, 2, 1, 2, 2], crom) ['Re', 'Mi', 'Fa', 'Sol', 'La', 'Sib', 'Do', 'Re'] >>> acorde_triada("Re", [2, 1, 2, 2, 1, 2, 2], crom) ['Re', 'Fa', 'La']