Skip to content

Addition et Multiplication

PhilippePerret edited this page Sep 3, 2012 · 1 revision

Addition et Multiplication

(à l'usage des implémenteurs)

Afin de facilité l'écriture des scores, les méthodes + et * de ruby ont été profondément modifiées (particulièrement la multiplication).

Ainsi, le code :

"a" + "b"

… au lieu de produire :

=> "ab"

… va produire :

=> "a b"

Cela permet d'additionner facilement les notes, par exemple pour créer un motif :

anoire    = "a4"
cblanche  = "c2"
dcroche   = "d8"
mon_motif = Motif::new anoire + cblanche + dcroche

La même chose pour les multiplications :

"c" * 4     # => "c c c c" 
            # au lieu de : "cccc"
"a c" * 2   # => "\relative c'' { a c } \relative c'' { a c }" (*)
            # au lieu de : "a ca c"

(*) Notez les \relative qui ont été ajoutés ci-dessus afin de permettre au motif d'être toujours inscrit à la même hauteur. Dans le cas contraire, vous pourriez voir votre motif multiplié s'envoler dans les airs ou s'enfoncer dans le sol…

Il est cependant fortement recommandé, pour exécuter de telles opérations, de passer plutôt par les motifs, où les octaves seront conservées avec plus de certitude. Par exemple :

mo = Motif:new :motif => "a b c", :octave => 4
new_motif = mo * 3
# => new_motif = "\relative c'''' { a b c } \relative c'''' { a b c } \relative c'''' { a b c }"

Méthodes compensatrices

Pour compenser l'utilisation de + et de * dans un processus normal, les méthodes suivantes ont été implémentées :

plus (remplace +)

c = "im".plus("probable")
# => c = "improbable"

add (remplace +=)

c = "im"
c.add("probable")
# => c = "improbable"

fois ou x (remplace *)

str = "a".fois 4
# => str = "aaaa"
str = "bon".x 2
# => str = "bonbon"