Listado de firmas clave

Actualmente estoy creando un programa para ayudar con la visualización de partituras en tiempo real desde la entrada midi (similar a lo que se ve en muchas pantallas de piano digital).

¿Cuál es la forma más lógica para que un usuario seleccione una clave? ¿Debería enumerar las claves principales? Entiendo que algunas teclas se pueden expresar como sostenida o bemol. ¿Cuál es mejor enumerar? ¿O debería enumerar ambos?

A continuación se muestra la estructura que he usado actualmente.

Actualmente estoy apuntando a piano/teclado, si eso hace alguna diferencia.

const signatures = 
[
  { id: 'C',  key: 'C major', sharps: [], flats: [] },
  { id: 'G',  key: 'G major', sharps: [ 'f' ], flats: [] },
  { id: 'D',  key: 'D major', sharps: [ 'f', 'c' ], flats: [] },
  { id: 'A',  key: 'A major', sharps: [ 'f', 'c', 'g' ], flats: [] },
  { id: 'E',  key: 'E major', sharps: [ 'f', 'c', 'g', 'd' ], flats: [] },
  { id: 'B',  key: 'B major', sharps: [ 'f', 'c', 'g', 'd', 'a' ], flats: [] },
  { id: 'F',  key: 'F major', sharps: [], flats: [ 'b' ] },
  { id: 'Gm',  key: 'G minor', sharps: [], flats: [ 'b', 'e' ] },
  { id: 'Cm',  key: 'C minor', sharps: [], flats: [ 'b', 'e', 'a' ] },
  { id: 'Fm',  key: 'F minor', sharps: [], flats: [ 'b', 'e', 'a', 'd' ] },
  { id: 'DfM', key: 'D-flat major', sharps: [], flats: [ 'b', 'e', 'a', 'd', 'g' ] },
  { id: 'GfM', key: 'G-flat major', sharps: [], flats: [ 'b', 'e', 'a', 'd', 'g', 'c' ] },
  { id: 'CfM', key: 'C-flat major', sharps: [], flats: [ 'b', 'e', 'a', 'd', 'g', 'c', 'f' ] },
];
¿Dónde están F sostenido mayor y C sostenido mayor, especialmente porque C bemol mayor es un juego justo en su estructura?
Los valores MIDI serán los mismos para F# y Gb, pero la notación obviamente será diferente ya que una es una tecla sostenida y la otra es una tecla plana. Si desea ser lo más flexible posible, debe enumerar todas las variantes enarmónicas. Si proporcionó más detalles en su pregunta, creo que podríamos ayudarlo más. Por cierto, también soy un programador que desarrolla aplicaciones basadas en midi (objetivo C para Mac).
Gracias @ 02fentym, supongo que mi pregunta es: ¿Cuál es la forma más lógica de enumerarlos (para que los seleccione un usuario) y almacenar sus sostenidos y bemoles asociados? Mi objetivo es omitir los sostenidos y bemoles de la notación si están en la armadura seleccionada.
Todavía no estoy del todo seguro sobre el propósito detrás de todo esto. Puede manejarlo programáticamente. Por ejemplo, si tiene una matriz que almacena la distancia (en semitonos) entre cada grado de una escala mayor, puede construir cualquier escala mayor. Podría verse así: {2, 4, 5, 7, 9, 11}.
"¿Debería enumerar las claves principales?" ¡No si quieres ser fácil de usar y la pieza del usuario está en una clave menor! Puede ahorrar espacio emparejando el mayor y el menor relativo, por ejemplo, CM/Am. GM/Em. etc., o simplemente deje que el usuario seleccione el número de sostenidos o bemoles (que IIRC es todo lo que los archivos MIDI estándar "saben" sobre las firmas de clave, no si la clave es mayor o menor).
Debe enumerar las teclas agudas y planas. Por ejemplo, mientras que las notas mayores Gb y F# suenan más o menos igual, exactamente en 12edo, se considera que son claves diferentes. Omitiéndolos de la notación cuando están en la clave sig. es exactamente como funcionan en la música real!
Gracias a todos. Todos sus comentarios fueron útiles y he usado una combinación de sus comentarios. Hay dos objetivos al almacenar esta información: 1) Cuando un usuario selecciona una armadura, los sostenidos y bemoles relevantes se muestran en la armadura. 2) Cuando un usuario toca una tecla (por ejemplo, F#), de manera predeterminada, esto mostraría una F con un símbolo #. Si estamos en una clave con un F#, y luego no queremos mostrar el símbolo # en la pantalla de música en vivo. Una vez que tenga una solución de trabajo completa (todavía un trabajo en progreso), publicaré la fuente aquí.

Respuestas (1)

Esta observación puede o no ser útil. Cuando enseño piano, especialmente a principiantes, me ha resultado útil usar siempre siete alteraciones en cada armadura. En primer lugar, suelo enseñar al jugador cómo tocar una escala cromática (porque es fácil) de D a D (porque es simétrica cuando se toca en movimiento contrario y se pueden usar ambas manos al mismo tiempo. La mayoría de los niños y adultos pronto pueden trabajar que también funciona desde la bemol. La mayoría de los niños aprenden do mayor primero, pero es una escala difícil de tocar, particularmente para manos pequeñas. Sin embargo, las piezas que usan dos manos en la tonalidad de do pueden ser excelentes para empezar, especialmente si utilizan posiciones simples de cinco dedos También animo a la improvisación en las teclas negras usando los dedos 2 y 3 de cada mano en los grupos de dos teclas negras, y los dedos 2, 3 y 4 en los grupos de tres.

  1. Do mayor tiene siete naturales. Un principiante pronto puede jugar y nombrarlos. Con el conocimiento de la escala cromática, pueden aprender fácilmente la estructura simple de una escala mayor. (Introduzco los naturales en el mismo orden que los sostenidos: F,C,G,D,A,E,B - para divertirnos usamos un mnemotécnico 'Father Charles Goes Down And Ends Battle')

  2. Cada escala mayor tiene un menor NATURAL 'oculto en el interior' que comienza en la sexta nota. Si bien esta es una gran oportunidad para comenzar a tocar con tríadas mayores/menores, no hay necesidad de introducir variaciones armónicas o melódicas durante mucho tiempo (aunque los libros de teoría AB y la mayoría de las juntas de examen de piano no parecen reconocer la existencia de la escala menor natural en los primeros grados). Es sencillo para el principiante comprender realmente la relación entre las escalas mayor y menor relativa (es decir, ambas son iguales, comparten la misma selección de notas y la misma firma de clave).

  3. La primera escala mayor tocada es Do bemol mayor. Esto es fácil de tocar en comparación con Do mayor, y la armadura es igualmente sencilla porque todos los naturales se convierten en bemoles. Lo único que hay que recordar es que el orden se invierte cuando se usan bemoles ("La batalla termina y el padre de Carlos cae hacia abajo"). La razón para usar Do bemol mayor es que los patrones básicos de los dedos para tocar todas las escalas se pueden aprender fácilmente (es decir, 1,2,3 O 1,2,3,4). En la mano derecha, esta escala debe aprenderse ASCENDIENDO primero (mostrando el uso del siguiente dedo [quinto] disponible para completar la octava final); la mano izquierda debe aprenderse DESCENDIENDO primero (mostrando cómo el grupo final de 1,2,3 también se completa con el siguiente dedo disponible [4º].

  4. La siguiente escala aprendida es C SHARP mayor. Una vez más, la armadura de clave es fácil: simplemente convierta todos los naturales de Do mayor en sostenidos. Ya no es necesario cambiar el orden. Esta escala es tan fácil de tocar como Do bemol mayor y brinda la primera oportunidad de aprender que, aunque todas las escalas mayores (y menores) siguen el mismo patrón de dedos, no necesariamente comienza con el pulgar [1°].

  5. Realmente no importa a dónde vaya después de esto, ya que se han aprendido los principios principales, pero probablemente optaría por F mayor (RH) que sigue el mismo patrón que C bemol mayor (LH) y donde el pulgar pasa por debajo de la 4ta. dedo cuando está en una tecla negra. Tenga en cuenta que las teclas negras tienen su propio dedo dedicado (ver arriba), por lo que Bb todavía se toca con el cuarto dedo (RH) y el segundo (LH) aunque es la única tecla negra en la escala. La firma de clave es la misma que era para Do bemol mayor, pero esta vez se retiene el primer bemol {Bb) y los seis restantes se convierten en naturales. Después de explorar una buena pieza nueva en Re menor (relativa), sería genial usar la misma técnica de transposición y aprender F SHARP mayor a continuación. Fácil de tocar, solo recuerda que las notas son las mismas que en fa mayor, pero todo está afilado,

  6. Eventualmente, todas las firmas de clave mayores y menores se pueden cubrir de manera simple, sin tener que recurrir a complicaciones extrañas (por ejemplo, el ciclo de 5tas).

Me pregunto si un programa de computadora podría enfatizar la firma clave 'habitual' en un color (tal vez negro azabache) y los naturales en un color diferente (tal vez azul medio o gris) con una opción para perder los naturales para usuarios más avanzados .