Como transponho acordes de música usando JavaScript?

u estava pensando em como criar uma função javascript para transpor acordes de músic

Como não espero que todos sejam músicos aqui, tentarei explicar como isso funciona na teoria da música. Espero não esquecer de algo. Se sim, músicos, por favor, corrija-me.

1) Os acordes simples

Os acordes simples são quase tão simples quanto um alfabeto e são assim:

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

De B, ele repete novamente em C. Portanto, se o acorde original forE e queremos transpor +1, o acorde resultante éF. Se transpormos +4, o acorde resultante éG#.

2) Acordes expandidos

Eles funcionam quase como acordes simples, mas contêm mais alguns caracteres, que podem ser ignorados com segurança na transposição. Por exemplo

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

Então, como nos acordes simples, se transpusermosDsus7 + 3 =Fsus7

3) Tom baixo não raiz

Surge um problema quando o baixo toca um tom diferente do tom da raiz do acorde. Isso é marcado por uma barra após o acorde e também precisa ser transposto. Exemplos

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

Como nos exemplos 1 e 2, tudo é o mesmo, mas a parte após a barra também precisa ser transposta, portanto:

C/G + 5 =F/C

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

Acho que isso deve ser tudo, a menos que eu tenha esquecido alguma cois

Então, basicamente, imagine que você tenha uma variável javascript chamadachord e o valor de transposiçãotranspose. Que código transporia o acorde?

Exemplo

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';

questionAnswers(7)

yourAnswerToTheQuestion