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