Javi Arce escribió:
A veces me pierdo en otros niveles de abstracción y se me olvida lo fundamental, de ahí vienen errores como partir de un extraño patrón de semitonos para construir las escalas. Siempre es bueno tomar referencias de lo esencial y dejarse de marcianadas que a largo plazo no funcionan, aunque ahorren tiempo a corto.
Sí, como ya has comprobado, el número de semitonos es aritméticamente sencillo pero semánticamente insuficiente (+6 semitonos puede ser cuarta aumentada o quinta disminuida, por ejemplo). Y hay escalas que mezclan sostenidos con bemoles, como sol menor armónica.
Si tienes nociones de álgebra a nivel universitario de matemáticas o ingeniería te puede resultar fácil aplicarlas a este problema.
Tendríamos dos conjuntos: "N", el de las notas, e "I", el de los intervalos.
Una nota es una 3-tupla definida por su nombre (A-F), su alteración (bb,b,nat,#,##) y su octava absoluta (0-8, siendo C4 el do central, es un dato importante para cosas como hacer sonar las notas correlativamente, representarlas en una partitura, contemplar la posibilidad de disposiciones abiertas de acordes...)
Un intervalo es una 2-tupla definida por su distancia (medida como desplazamiento en el círculo de 7 nombres, el límite es arbitrario y puede ser negativa para representar intervalos descendentes) y su calidad (doble disminuido, disminuido, menor, justo, mayor, aumentado, doble aumentado). En el último caso el conjunto no sería todo el producto cartesiano de ambos elementos de la tupla, ya que no existen intervalos como la tercera justa o la quinta mayor.
A partir de aquí podrías definir funciones, como la suma de una nota y un intervalo NxI->N o la resta de dos notas para dar un intervalo NxN->I. Estas funciones se implementarían a partir de operaciones aritméticas que tengan en cuenta la irregularidad del círculo de nombres.
O podrías definir una escala como una nota raíz o tónica más un conjunto de intervalos que representen los grados.