Minor changes

This commit is contained in:
Loïc Guégan 2024-10-29 16:35:58 +01:00
parent 3b8782f54a
commit 0726accbb1
3 changed files with 63 additions and 2 deletions

View file

@ -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

6
source/music/code/temperee.R Executable file
View file

@ -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

View file

@ -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 <harmonique> <note> <ratio>:
.. 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 <https://www.youtube.com/watch?v=cTYvCpLRwao&t=383s>`__).
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`