From 73b5a5195dbc12bc74b7d20d27f7d208d78fc996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gu=C3=A9gan?= Date: Wed, 30 Oct 2024 11:29:19 +0100 Subject: [PATCH] Minor changes --- source/music/code/gamme_naturelle.R | 9 ++-- source/music/code/harmoniques.R | 20 ++++---- source/music/code/temperee.R | 2 +- source/music/harmoniques.rst | 80 ++++++++++++++++------------- source/music/intervalles.rst | 1 + 5 files changed, 60 insertions(+), 52 deletions(-) diff --git a/source/music/code/gamme_naturelle.R b/source/music/code/gamme_naturelle.R index e04ccca..7eeffcb 100755 --- a/source/music/code/gamme_naturelle.R +++ b/source/music/code/gamme_naturelle.R @@ -1,10 +1,10 @@ #!/usr/bin/Rscript -q=3/2 # Facteur de quinte -t=5/4 # Facteur de tierce +q=3/2 # Facteur de quinte theorique +t=5/4 # Facteur de tierce theorique -## Construction de la gamme parfaite -## Les division par deux sont la pour rammener à l'octave +## Construction de la gamme naturelle +## Les divisions par deux: pour rammener à l'octave do4=261.63 # do fréquence par convention sol4=do4*q re4=sol4*q/2 @@ -18,6 +18,7 @@ la4d=fa4d*t la4=fa4*t do4d=la4*t/2 +## On affiche le résultat names=c("do","do#reb","re","re#/mib","mi","fa","fa#/solb","sol", "sol#/lab", "la", "la#/sib", "si") frequences=c(do4,do4d,re4,re4d,mi4,fa4,fa4d,sol4,sol4d,la4,la4d,si4) for( e in Map(list,names,frequences)){ diff --git a/source/music/code/harmoniques.R b/source/music/code/harmoniques.R index 4e81b35..f6b5256 100755 --- a/source/music/code/harmoniques.R +++ b/source/music/code/harmoniques.R @@ -1,14 +1,14 @@ #!/usr/bin/Rscript -do4=261.63 # do fréquence par convention -do5=2*do4 # do octave suivante -N=8 # Nombre d'harmoniques à explorer (ne pas hésité à faire varier N!) +do4=261.63 # do Fréquence de convention +do5=2*do4 # do à l'octave suivante +N=8 # Nombre d'harmoniques à explorer (faire varier!) names=c("do","do#reb","re","re#/mib","mi","fa","fa#/solb","sol", "sol#/lab", "la", "la#/sib", "si", "do","NA") -naturelle=c(261.63,272.53125,294.33375,306.59765625,327.0375,348.84,367.9171875,392.445,408.796875,436.05,459.896484375,490.55625,2*do4) # Valeurs théoriques de la gamme naturelle (parfaite voir plus loin) +naturelle=c(261.63,272.53125,294.33375,306.59765625,327.0375,348.84,367.9171875,392.445,408.796875,436.05,459.896484375,490.55625,2*do4) # Valeurs théoriques de la gamme naturelle -## Ramener à l'octave de do4 +## Ramener à l'octave de do4 en divisant par 2 autant de fois que nécessaire toOctave=function(x, i=0){ - if(x<=do5) # On verifie si on est au bonne octave + if(x<=do5) # On verifie si on est à l'octave de do4 2^i else toOctave(x/2, i+1) @@ -18,10 +18,10 @@ toOctave=function(x, i=0){ 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 naturelle -M=abs(outer(harmoniques,naturelle, "-")) # 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)[which(row)[1]] else 14}) # On selectionne les notes correspondantes (which est la pour les can ou plusieurs il y a plusieur minima (ici on prends le premier a TRUE)) +## On compare les fréquences trouvées à la gamme naturelle +M=abs(outer(harmoniques,naturelle, "-")) # Calcule de l'erreur à la gamme naturelle +M=t(apply(M,1,FUN=function(row){row==min(row)})) # On selectionne les entrées avec l'erreur minimale +v=apply(M,1,FUN=function(row){if(any(row)) (1:13)[which(row)[1]] else 14}) # On selectionne les notes correspondantes (which() est la pour les cas avec plusieurs minima(s), on choisir arbitrairement le premier ## On affiche le résultat for( e in Map(list, 1:N, names[v], sapply(do4*(1:N),FUN=toOctave))){ diff --git a/source/music/code/temperee.R b/source/music/code/temperee.R index 3447c9c..e3a671d 100755 --- a/source/music/code/temperee.R +++ b/source/music/code/temperee.R @@ -1,6 +1,6 @@ #!/usr/bin/Rscript -do4=261.63 # do fréquence par convention +do4=261.63 # do fréquence de 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 1d055fd..8f8ad00 100644 --- a/source/music/harmoniques.rst +++ b/source/music/harmoniques.rst @@ -4,11 +4,9 @@ Harmoniques Timbre ======== -Lorsque l'on joue une note à l'aide d'un intruments, celui-ci sonne à -une frequence :math:`f_0` (appelée *fondamentale*) ainsi qu'à plusieurs -multiples de cette fréquence :math:`f_i=(i+1)\times f_0` (appelées *harmoniques*). -En jouant un do, on entends la superposition de la fondamentale et de des harmoniques. -Chacunes de ces harmoniques corresponds à l'une des 12 notes de musique jouée à des hauteurs (octaves) différentes. +Lorsqu'on joue une note avec un intrument, celui-ci sonne à une frequence :math:`f_0` (appelée *fondamentale*) ainsi qu'à plusieurs multiples de cette fréquence :math:`f_i=(i+1)\times f_0` (appelées *harmoniques*). +En jouant un do, on entends cette superposition de la fondamentale et de ces harmoniques. +Chacunes des harmoniques corresponds à l'une des 12 notes de musique jouées à des hauteurs (:ref:`octave `) différentes. .. note:: La video suivante illustre bien ce concept: `Les harmoniques d'une note `__. @@ -17,11 +15,11 @@ Chacunes de ces harmoniques corresponds à l'une des 12 notes de musique jouée :width: 500px :align: center - Représentation des harmoniques d'une fréquence :math:`f_0` (tout en haut) en faisant vibrer une corde + Représentation des harmoniques d'une fréquence :math:`f_0` (tout en haut) produits en faisant vibrer une corde -Le signal produit par une cordre vibrant à une fréquence :math:`f_0` contient les fréquences suivantes: +Le signal produit par une cordre vibrant à une fréquence :math:`f_0` contient entre-autres les fréquences suivantes: -.. list-table:: Associations fréquences, notes et intervalles (`source `__). Note: do 0 est le do du premier octave, do 1 est le do du deuxième octave etc. +.. list-table:: Associations fréquences, notes et intervalles (`source `__). Le do 0 est le do du premier octave, do 1 est celui du second etc. :align: center :header-rows: 1 @@ -36,36 +34,38 @@ Le signal produit par une cordre vibrant à une fréquence :math:`f_0` contient - octave * - :math:`3f_0` - sol 1 - - quinte + - :ref:`quinte ` * - :math:`4f_0` - do 2 - octave * - :math:`5f_0` - mi 2 - - tierce + - :ref:`tierce ` * - :math:`6f_0` - sol 2 - quinte * - :math:`7f_0` - sib 2 - - septième mineur + - :ref:`septième mineur ` -L'origine des termes octave, quinte tierce etc, seront expliqué dans un prochain chapitre. -Ici, ces intervalles correspondent à la distance entre l'harmonique considéré :math:`f_i`, et la fondamental :math:`f_0`, lorsque :math:`f_i` est ramené sur le même octave que :math:`f_0`. -La distance entre une fréquence :math:`f_a` et :math:`f_b` se calcule en faisant un ratio :math:`\frac{f_a}{f_b}`. +L'origine des termes octave, quinte tierce etc, sera détaillé dans un :ref:`prochain chapitre `. +Ces intervalles correspondent à la distance entre l'harmonique considéré :math:`f_i`, et la fondamental :math:`f_0`, lorsque :math:`f_i` est ramené sur le même octave que :math:`f_0`. -Comment la fréquence d'une harmonique :math:`f_i` à l'octave de :math:`f_0`? +.. note:: + La distance entre une fréquence :math:`f_a` et :math:`f_b` se calcule en faisant un ratio :math:`\frac{f_a}{f_b}`. + +Comment ramener 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. Attention, je ne l'ai pas vérifié: +Le programme suivant détermine pour chacunes des harmoniques d'une note, leurs notes associées ainsi que leurs facteurs les ramenants à l'octave: .. _harmoniques_prog: .. literalinclude:: code/harmoniques.R :language: R -Example de sortie du programme: +Sortie du programme: .. code-block:: console @@ -79,11 +79,12 @@ Example de sortie du programme: 8f do 8/4 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 -s'agit d'un piano, guitare ou flute est le *timbre* de +instruments permettant de le reconnaitre. Un do joué sur un piano, une +guitare, une flute reste un do. Ce qui les différencient (savoir si il +s'agit d'un piano, guitare ou flute) est le *timbre* de l'instrument. En terme de fréquences, le timbre ce traduit par une -variation des amplitudes (propre à chaque instruments) des harmoniques. +variation des amplitudes (propre à chaque instruments) des +harmoniques. Gamme Pythagoricienne ====================== @@ -92,32 +93,32 @@ Gamme Pythagoricienne En musique, un intervalle est la rapport de deux fréquences. Un octave corresponds à deux fois la fréquence initiale :math:`f_{octave}=2f_0`. -Il s'agit d'un intervalle important car il sonne extrêmement juste lorsque l'on joue :math:`f_0` et :math:`f_{octave}` simulatanement. +Il s'agit d'un intervalle important car il sonne extrêmement juste lorsque l'on joue :math:`f_0` et :math:`f_{octave}` simultanément. Pour rappel, le passage à l'octave :math:`f_{octave_i}=2^i*f_0` est une opération qui ne change pas la note de départ! -Ainsi, diviser/multiplier une fréquence par 2, une ou plusieurs fois, laisse la note inchangée. +Ainsi, diviser ou multiplier une fréquence par 2, une ou plusieurs fois, ne change pas la note. Un concept très important sur lequelle repose la gamme Pythagoricienne. En multipliant par 3 une fréquence :math:`f_0`, on obtient une note qui correspond quasiment à la quinte de celle-ci. Pourquoi? Car si on ramène cette quinte sur l'octave the :math:`f_0` (en divisant par 2), -on obtient une fréquence qui correspond quasiment la quinte de cette +on obtient une fréquence qui correspond à la quinte de cette octave. Pour rappel, diviser par deux ne change pas la note! -En répétant ce principe, Pythagore ajoute 12 nouvelle notes l'octave. +En répétant ce principe, Pythagore ajoute 12 nouvelles notes l'octave. En partant d'une fréquence :math:`f_0`, il créer une quinte :math:`f_a=3f_0`. Puis il prends à nouveau la quinte de :math:`f_b=3f_a`. -On oubli pas de divisé chacunes de ce nouvelles fréquences par 2 jusqu'a retomber dans l'octave de :math:`f_0`. +On oubli pas de diviser chacunes de ce nouvelles fréquences par 2 jusqu'a retomber dans l'octave de :math:`f_0`. C'est à dire une fréquence :math:`f` tel que :math:`f_0`__, `ScienceÉtonnante `__ -Gamme Tempéré +Gamme Naturelle ============== -Il est possible de recontruire l'ensemble des notes d'une tonalité (ce terme sera dévelopé plus tard) pour que toutes les intervalles tombent justent (`source `__). On appelle cela la *gamme naturelle* ou *gamme juste* ou *gamme du physicien*. -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. +Il est possible de recontruire l'ensemble des notes d'une tonalité (ce terme sera dévelopé plus tard) pour que toutes les intervalles tombent justent (`source `__). On appelle cela, la *gamme naturelle* ou *gamme juste* ou *gamme du physicien*. +Sauf qu'on ne pourra pas changer de tonalité sans que celle-ci soit dissonante! +Mais comment construire une telle gamme? -Grâce à cette approche, on peu en déduire la valeur théorique de chacune des intervalles en musique. +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 les valeurs théoriques 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}`. Le programme suivant génère l'ensemble des fréquence théorique de chacune des notes de la gamme naturelle: @@ -171,10 +173,14 @@ Sortie du programme: la 436.05Hz la#/sib 459.896484375Hz si 490.55625Hz - -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. + +Gamme Tempérée +=============== + +Comme on ne peut pas utiliser toutes les tonalités avec une *gamme naturelle* sans que celle-ci soit dissonante il faut trouver un compromis. +Pour cela, la *gamme tempérée* 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}`. +Pour passer d'une note à la suivante, on multiplie par le facteur :math:`2^\frac{1}{12}`. Le code suivant génère l'ensemble des notes de la *gamme tempérée*: diff --git a/source/music/intervalles.rst b/source/music/intervalles.rst index be9d06a..4634d3b 100644 --- a/source/music/intervalles.rst +++ b/source/music/intervalles.rst @@ -1,5 +1,6 @@ Intervalles ================================ +.. _intervalles: