 |
;$gamme(note) et $arpege(note)
;Les notes dièses s'écrivent note#, ex: do#
alias gamme {
;Énumération de toute les notes et intiliasation des variables
var %a = do.do#.ré.ré#.mi.fa.fa#.sol.sol#.la.la#.si, %b = $findtok(%a,$1,1,46), %c = 1, %d = %b, %e
if (!%b) return Note invalide!
else {
while (%c < 9) {
if (%b > 12) %b = %b - 12 | %e = $+(%e,-,$gettok(%a,%b,46))
;On incrémene la variable selon la "règle" des gammes
inc %b $gettok(2.2.1.2.2.2.1.2,%c,46)
;On incrémente la variable
inc %c
}
;Retourne la gamme correspondant
return $right(%e,-1)
}
}
alias arpege {
;Énumération de toute les notes et intiliasation des variables
var %a = do.do#.ré.ré#.mi.fa.fa#.sol.sol#.la.la#.si, %b = $findtok(%a,$1,1,46), %c = 1, %d = %b, %e
if (!%b) return Note invalide!
else {
while (%c < 5) {
if (%b > 12) %b = %b - 12 | %e = $+(%e,-,$gettok(%a,%b,46))
;On incrémente la variable selon la "règle" des arpege
if (%c == 1) inc %b 4 | if (%c == 2) inc %b 3 | if (%c == 3) inc %b 5
;On incrémente la variable
inc %c
}
;Retourne l'arpege correspondant
return $right(%e,-1)
}
}
|  |