DyyP

Une bibliothèque Lua autour de la théorie musicale (cf Github).

Quelques remarques :

Constantes

Constantes qui correspondent à un nom de note :

Dans l’ordre alphabétique : A Ab Af As B Bb Bbb Bf Bff Bs C C2s Cb Cf Cs D Db Df Do Do2d Dob Dod Ds E Eb Ebb Ef Eff Es F F2s Fa Fa2d Fab Fad Fb Ff Fs G Gb Gf Gs La Lab Lad Mi Mib Mibb Mid Re Reb Red Si Sib Sibb Sid Sol Solb Sold.

Constantes représentant une note, dont la valeur est le numéro MIDI correspondant (l’octave va de 0 à 9, A4 vaut par exemple 69, b représente un bémol (notation francophone et anglophone), f et s signifient resp. « flat » et « sharp », d signifie « dièse », bb ou ff double bémol, 2s ou 2d double dièse) :

Fonctions

Certains tests dépendent de la configuration par défaut :

Si les tests ne sont pas suffisants pour comprendre le rôle de la fonction, d’autres commentaires (en anglais) figurent dans le code source.

Deg
Deg: Deg(1) + Deg(3, -1) => Deg(3, -1)
Deg: I => Deg(1)
Deg: II + Deg(2) => Deg(3)
Deg: tostring(Deg(1) + Deg(3, -1)) => "bIII"
Deg: tostring(I) => "I"
chromatic_jump
chromatic_jump( C,  2) => Re
chromatic_jump(Do,  1) => Reb
chromatic_jump(Do,  2) => Re
chromatic_jump(Do, -1) => Si
chromatic_jump(Do, -2) => Sib
chromatic_jump(Eb,  2) => Fa
chromatic_jump(Mi,  1) => Fa
chromatic_jump(Mi,  2) => Fad
fifth_name
fifth_name(A) => E
fifth_name(G) => D
fifth_name(La) => Mi
fifth_name(Sol) => Re
fourth_name
fourth_name(A) => D
fourth_name(G) => C
fourth_name(La) => Re
fourth_name(Sol) => Do
midi_diff
midi_diff(A,  A) =>  0
midi_diff(A,  G) =>  2
midi_diff(Ab, A) => -1
midi_diff(As, A) =>  1
midi_diff(B , C) => -1
midi_diff(C , B) =>  1
mode
mode( 0, "M" ) => {Do, Re, Mi , Fa, Sol, La , Si}
mode( 3, "m" ) => {Fad, Sold, La, Si, Dod, Re, Mi}
mode(-3, "m" ) => {Do, Re, Mib, Fa, Sol, Lab, Sib}
mode(-3, "mh") => {Do, Re, Mib, Fa, Sol, Lab, Si}
mode(-3, "mm") => {Do, Re, Mib, Fa, Sol, La , Si}
name_and_alteration
name_and_alteration(A ) => A, 0
name_and_alteration(Ab) => A, -1
name_and_alteration(As) => A, 1
name_and_alteration(La ) => La, 0
name_and_alteration(Lab) => La, -1
name_and_alteration(Lad) => La, 1
name_and_alteration(Sib) => Si, -1
name_to_note_name
name_to_note_name(C ) => Do
name_to_note_name(Cs) => Dod
name_to_note_name(Do) => Do
name_to_note_name(Dod) => Dod
next_name
next_name(A) => B
next_name(Ab) => B
next_name(As) => B
next_name(G) => A
next_name(Gb) => A
next_name(Gs) => A
next_name(La) => Si
next_name(Lab) => Si
next_name(Lad) => Si
next_name(Sol) => La
next_name(Solb) => La
next_name(Sold) => La
note_name_to_chord_name
note_name_to_chord_name(Do) => C
note_name_to_chord_name(Dod) => Cs
note_name_to_chord_name(Re) => D
note_name_to_chord_name(Red) => Ds
offset_in_circle
offset_in_circle(1, 7, 1) => 2
offset_in_circle(7, 7, 1) => 1
previous_name
previous_name(A) => G
previous_name(Ab) => G
previous_name(As) => G
previous_name(B) => A
previous_name(Bb) => A
previous_name(Bs) => A
previous_name(La) => Sol
previous_name(Lab) => Sol
previous_name(Lad) => Sol
previous_name(Si) => La
previous_name(Sib) => La
previous_name(Sid) => La
second_name
second_name(A) => B
second_name(G) => A
second_name(La) => Si
second_name(Sol) => La
seventh_name
seventh_name(A) => G
seventh_name(B) => A
seventh_name(La) => Sol
seventh_name(Si) => La
sixth_name
sixth_name(A) => F
sixth_name(B) => G
sixth_name(La) => Fa
sixth_name(Si) => Sol
third_name
third_name(A) => C
third_name(G) => B
third_name(La) => Do
third_name(Sol) => Si

Exemples de calculs

→ for i=-6, 6 do print(i) show(mode(i, "M")) end
-6
{Solb, Lab, Sib, Dob, Reb, Mib, Fa}
-5
{Reb, Mib, Fa, Solb, Lab, Sib, Do}
-4
{Lab, Sib, Do, Reb, Mib, Fa, Sol}
-3
{Mib, Fa, Sol, Lab, Sib, Do, Re}
-2
{Sib, Do, Re, Mib, Fa, Sol, La}
-1
{Fa, Sol, La, Sib, Do, Re, Mi}
0
{Do, Re, Mi, Fa, Sol, La, Si}
1
{Sol, La, Si, Do, Re, Mi, Fad}
2
{Re, Mi, Fad, Sol, La, Si, Dod}
3
{La, Si, Dod, Re, Mi, Fad, Sold}
4
{Mi, Fad, Sold, La, Si, Dod, Red}
5
{Si, Dod, Red, Mi, Fad, Sold, Lad}
6
{Fad, Sold, Lad, Si, Dod, Red, Mid}

→ for i=-6, 6 do print(i) show(mode(i, "m")) end
-6
{Mib, Fa, Solb, Lab, Sib, Dob, Reb}
-5
{Sib, Do, Reb, Mib, Fa, Solb, Lab}
-4
{Fa, Sol, Lab, Sib, Do, Reb, Mib}
-3
{Do, Re, Mib, Fa, Sol, Lab, Sib}
-2
{Sol, La, Sib, Do, Re, Mib, Fa}
-1
{Re, Mi, Fa, Sol, La, Sib, Do}
0
{La, Si, Do, Re, Mi, Fa, Sol}
1
{Mi, Fad, Sol, La, Si, Do, Re}
2
{Si, Dod, Re, Mi, Fad, Sol, La}
3
{Fad, Sold, La, Si, Dod, Re, Mi}
4
{Dod, Red, Mi, Fad, Sold, La, Si}
5
{Sold, Lad, Si, Dod, Red, Mi, Fad}
6
{Red, Mid, Fad, Sold, Lad, Si, Dod}

→ for i=-6, 6 do print(i) show(mode(i, "mh")) end
-6
{Mib, Fa, Solb, Lab, Sib, Dob, Re}
-5
{Sib, Do, Reb, Mib, Fa, Solb, La}
-4
{Fa, Sol, Lab, Sib, Do, Reb, Mi}
-3
{Do, Re, Mib, Fa, Sol, Lab, Si}
-2
{Sol, La, Sib, Do, Re, Mib, Fad}
-1
{Re, Mi, Fa, Sol, La, Sib, Dod}
0
{La, Si, Do, Re, Mi, Fa, Sold}
1
{Mi, Fad, Sol, La, Si, Do, Red}
2
{Si, Dod, Re, Mi, Fad, Sol, Lad}
3
{Fad, Sold, La, Si, Dod, Re, Mid}
4
{Dod, Red, Mi, Fad, Sold, La, Sid}
5
{Sold, Lad, Si, Dod, Red, Mi, Fa2d}
6
{Red, Mid, Fad, Sold, Lad, Si, Do2d}

→ for i=-6, 6 do print(i) show(mode(i, "mm")) end
-6
{Mib, Fa, Solb, Lab, Sib, Do, Re}
-5
{Sib, Do, Reb, Mib, Fa, Sol, La}
-4
{Fa, Sol, Lab, Sib, Do, Re, Mi}
-3
{Do, Re, Mib, Fa, Sol, La, Si}
-2
{Sol, La, Sib, Do, Re, Mi, Fad}
-1
{Re, Mi, Fa, Sol, La, Si, Dod}
0
{La, Si, Do, Re, Mi, Fad, Sold}
1
{Mi, Fad, Sol, La, Si, Dod, Red}
2
{Si, Dod, Re, Mi, Fad, Sold, Lad}
3
{Fad, Sold, La, Si, Dod, Red, Mid}
4
{Dod, Red, Mi, Fad, Sold, Lad, Sid}
5
{Sold, Lad, Si, Dod, Red, Mid, Fa2d}
6
{Red, Mid, Fad, Sold, Lad, Sid, Do2d}