Minor changes
This commit is contained in:
parent
3b8782f54a
commit
0726accbb1
3 changed files with 63 additions and 2 deletions
|
@ -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
|
harmoniques=do4*factors # On calcule les fréquences à l'octave de do4
|
||||||
|
|
||||||
## On compare les fréquences trouvé à la gamme tempérée
|
## 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
|
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
|
## On affiche le résultat
|
||||||
|
|
6
source/music/code/temperee.R
Executable file
6
source/music/code/temperee.R
Executable 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
|
||||||
|
|
||||||
|
|
|
@ -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.
|
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.
|
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
|
.. literalinclude:: code/harmoniques.R
|
||||||
:language: 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
|
Le *timbre* corresponds aux caracteristiques propres au son d'un
|
||||||
instruments, ce qui permet de le reconnaitre. Un do joué sur un piano,
|
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
|
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é
|
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`
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue