From 0726accbb1f68b73f9781590274810ce45a42379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gu=C3=A9gan?= Date: Tue, 29 Oct 2024 16:35:58 +0100 Subject: [PATCH] Minor changes --- source/music/code/harmoniques.R | 3 +- source/music/code/temperee.R | 6 ++++ source/music/harmoniques.rst | 56 ++++++++++++++++++++++++++++++++- 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100755 source/music/code/temperee.R diff --git a/source/music/code/harmoniques.R b/source/music/code/harmoniques.R index 022e943..a2d67e7 100755 --- a/source/music/code/harmoniques.R +++ b/source/music/code/harmoniques.R @@ -19,7 +19,8 @@ factors=(1:N/sapply(do4*(1:N),FUN=toOctave)) harmoniques=do4*factors # On calcule les fréquences à l'octave de do4 ## On compare les fréquences trouvé à la gamme tempérée -M=abs(outer(harmoniques,temperee, "-"))<10 # 10 est la marge d'erreur +M=abs(outer(harmoniques,temperee, "-")) # Fonction d'erreur +M=t(apply(M,1,FUN=function(row){row==min(row)})) # On selection l'entrée avec l'erreur minimale v=apply(M,1,FUN=function(row){if(any(row)) (1:13)[row] else 14}) # On selectionne les notes correspondantes ## On affiche le résultat diff --git a/source/music/code/temperee.R b/source/music/code/temperee.R new file mode 100755 index 0000000..3447c9c --- /dev/null +++ b/source/music/code/temperee.R @@ -0,0 +1,6 @@ +#!/usr/bin/Rscript + +do4=261.63 # do fréquence par convention +temperee=do4*((2^(1/12))^(0:12)) # Fréquences de la gamme temperée + + diff --git a/source/music/harmoniques.rst b/source/music/harmoniques.rst index b904ab2..c8a65ad 100644 --- a/source/music/harmoniques.rst +++ b/source/music/harmoniques.rst @@ -59,11 +59,27 @@ Comment la fréquence d'une harmonique :math:`f_i` à l'octave de :math:`f_0`? Diviser ou multiplier une fréquence par deux ne change pas la note. Ainsi, en divisant par deux autant de fois que nécessaire jusqu'à ce que :math:`f_0 \le f_i \le 2f_0` on ramène l'harmonique à l'octave de la fondamentale. -Le code source suivant détermine pour chacune des harmoniques la note associé ainsi que le facteur ramenant à l'octave: +Le code source suivant détermine pour chacune des harmoniques la note associé ainsi que le facteur ramenant à l'octave. Attention, je ne l'ai pas vérifié: +.. _harmoniques_prog: .. literalinclude:: code/harmoniques.R :language: R +Example de sortie avec le format : + +.. code-block:: console + + 1f do 1/1 + 2f do 2/1 + 3f sol 3/2 + 4f do 4/2 + 5f mi 5/4 + 6f sol 6/4 + 7f la#/sib 7/4 + 8f do 8/4 + 9f re 9/8 + etc... + Le *timbre* corresponds aux caracteristiques propres au son d'un instruments, ce qui permet de le reconnaitre. Un do joué sur un piano, une guitare, une flute reste un do. Ce qui permet de savoir si il @@ -129,5 +145,43 @@ On choisisait les accords qui sonnent le mieux avec le *tempérament mésotoniqu Gamme Tempéré ============== +Il est possible de recontruire l'ensemble des notes d'une tonalité pour que tout les intervalles tombent justent (`source `__). +Sauf que l'on ne pourra pas changer de tonalité sans que celle-ci sonne fausse. +Pour cela, il suffit de connaitre les ratios exactes de tierce (:math:`\frac{3}{2}`) ou de quintes (:math:`\frac{5}{4}`) et de contruire l'ensemble des notes avec. + +Grâce à cette approche, on peu en déduire la valeur théorique de chacune des intervalles en musique. +Par example, pour la seconde majeur, on sait que la deuxième quinte de do est ré (intervalle de seconde majeur). On sait également que :math:`f_{do}=261.63` Hz. Ainsi, :math:`f_{ré}=\frac{\frac{3}{2}^2f_{do}}{\underbrace{2}_{\text{Ramène la note à l'octave}}}=294.3293` Hz. En faisant le rapport des fréquences on obtient le ratio d'une seconde majeur :math:`\frac{294.3293}{261.63}=1.125=\frac{9}{8}`. +Comme on ne peut pas utiliser toutes les tonalités avec une gamme parfaitement accordée, la *gamme tempéré* propose de répartir l'ensemble des désaccords sur toutes les notes. +Il s'agit de l'accordage utilisé de nos jours. +Ansi, pour passer d'une note à la suivante, on multiplie par facteur :math:`2^\frac{1}{12}`. + +Le code suivant génère l'ensemble des notes de la *gamme tempérée*: + +.. literalinclude:: code/temperee.R + :language: R + +.. list-table:: Exemple d'approximations des intervalles faites par la gamme tempérée. Tout les intervalles sont légèrement faux à part l'octave. + :align: center + :header-rows: 1 + + * - Intervalle + - Valeur théorique + - Valeur de la gamme tempérée + * - Seconde + - :math:`\frac{9}{8}=1.125` + - :math:`2^\frac{2}{12}=1.222462` + * - Tierce + - :math:`\frac{5}{4}=1.25` + - :math:`2^\frac{4}{12}=1.259921` + * - Quarte + - :math:`\frac{21}{16}=1.3125` + - :math:`2^\frac{5}{12}=1.33484` + * - Quinte + - :math:`\frac{3}{2}=1.5` + - :math:`2^\frac{7}{12}=1.498307` + * - Octave + - :math:`2` + - :math:`2^\frac{12}{12}=2` +