¿Cómo transpongo los acordes de música usando JavaScript?

e preguntaba cómo crearía una función de JavaScript para transponer acordes de música.

Dado que no espero que todos sean músicos aquí, intentaré explicar cómo funciona en teoría musical. Espero no olvidarme de algo. Si es así, músicos, por favor, corríjanme.

1) Los acordes simples

Los acordes simples son casi tan simples como un alfabeto y es así:

C, C #, D, D #, E, F, F #, G, G #, A, A # B

Desde B, se repite nuevamente en C. Por lo tanto, si el acorde original esE y queremos transponer +1, el acorde resultante esF. Si transponemos +4, el acorde resultante esG#.

2) Acordes ampliados

Funcionan casi como los acordes simples, pero contienen algunos caracteres más, que pueden ignorarse con seguridad al transponer. Por ejemplo

Cmi, C # 7, Dsus7, Emi, Fsus4, F # mi, G ...

Así que de nuevo, como con los acordes simples, si transponemosDsus7 + 3 =Fsus7

3) Tono de bajo no root

Un problema surge cuando el bajo reproduce un tono diferente al tono raíz del acorde. Esto está marcado por una barra diagonal después del acorde y también necesita ser transpuesto. Ejemplos:

C / G, Dmi / A, F # sus7 / A #

Como con los ejemplos 1 y 2, todo es igual, pero la parte posterior a la barra también debe transponerse, por lo tanto:

C/G + 5 =F/C

F#sus7/A# + 1 =Gsus7/B

Creo que esto debería ser todo, a menos que haya olvidado algo.

ásicamente, imagina que tienes una variable de JavaScript llamadachord y el valor de transposicióntranspose. ¿Qué código transpondría el acorde?

Ejemplo

var chord = 'F#sus7/C#';
var transpose = 3; // remember this value also may be negative, like "-4"
... code here ...
var result; // expected result = 'Asus7/E';

Respuestas a la pregunta(7)

Su respuesta a la pregunta