Vous êtes sur la page 1sur 17

CALCUL DE LA DISSONANCE DE DEUX

SONS PURS
Le principe de ce calcul est le suivant.
- Pour deux sons d'amplitude égale à l'unité, la dissonance est donnée par la
formule 118*x*x*exp(-8*x), où x est calculé à partir des fréquences, via la bande
critique. Cette dissonance "unitaire", ou "dureté propre", dp, n'est appréciable que
dans la bande critique. CECI EST IMPORTANT. LA DISSONANCE SERA DE
TOUTE MANIÈRE NÉGLIGEABLE, SI LES DEUX SONS PURS SONT
DISTANTS DE PLUS D'UNE BANDE CRITIQUE. ENSUITE, MÊME EN
COMPOSITION AVEC UN AUTRE COUPLE DISSONANT, ILS
N'INTERVIENDRONT PAS.
- Si les amplitudes ne sont pas égales à l'unité, je suppose que les sons produisent
une intensité psychologique des battements (IBpsy) selon une formule semblable à
celle qui relie l'intensité sonore psychologique (en sones) à l'intensité physique d'un
son (en phone); cette formule, on le sait, est approximativement y = 0,0625
(I/I0)^0,3.  Or Helmholtz montre que l'énergie des battements est proportionnelle
au produit des amplitudes des deux sons purs battants (p. 308 de mon article).
L'intensité sonore dans le cas d'un seul son, le "I" de la formule (en watt par mêtre
carré), peut donc avec une certaine vraisemblance être remplacée par le produit des
amplitudes dans le cas du battement de deux sons battants. D'où la formule IBpsy =
0,0625 (A1*A2/I0)^0,3. I0 n'est défini qu'a une constante pres.
- La dissonance de deux sons d'amplitudes égales mais non unitaires est égale au
produit de l'intensité psychologique des battements par la dureté propre : IBpsy*dp.

CALCUL SIMPLIFIÉ: ADDITION PURE ET SIMPLE DE


TOUTES LES DISSONANCES
c'est-à-dire en considérant les contributions comme situées
dans des bandes critiques distinctes 
Je commence un premier calcul qui néglige ces différences, c'est-à-dire qui suppose
que les dissonances s'ajoutent purement et simplement.
La notion de bande critique, ici, ne sert qu'à calculer la dissonance de deux sons
purs (dis).
> restart;
Je fais varier la fréquence du second son de l'unisson jusqu'à l'octave du premier
son.
> F2:=F1*k;
Je prends la même variable x que dans les feuilles précédentes, afin de définir la
dureté propre dp (que j'appelle dis dans la feuille VERSION1, mais dp ensuite.
Valeur de la théorie psychologique contemporaine (selon Pierce, Le son musical, p.
77)).

> x:=abs(F2*n-F1*m)/(0.2022*sqrt(1408969+F1*m*F2*n)-
150):dp:=118*x^2*exp(-8*x);

REMARQUE.
Autour de la fréquence f, la bande critique est définie par la fonction
bc:=f->0.2022*sqrt(1408969+f^2)-150;
et la variable x, pour deux sons de fréquence fA et fB, est :
x:=(fA,fB)->abs(fB-fA)/bc((fA+fB)/2);
c'est-à-dire que dans x, c'est la bande critique de la moyenne arithmetique des fréquences qui intervient.
En revanche, dans le x choisi ci-dessus, au lieu du carré de la moyenne arithmétique, on a mis le produit des
fréquences; cela veut donc dire que c'est la bande critique de la moyenne géométrique qui intervient. La
différence est sans grande importance.

J'introduis maintenant l'intensité psychologique, proportionnelle à la puissance 0.3 de l'intensité physique des
battements. Le calcul de cette dernière par Helmholtz paraît bon, c'est-à-dire qu'il est justifié de prendre cette
intensité proportionnelle au produit des amplitudes. Ces amplitudes sont A/m et B/n, A et B étant celles de
partiels fondamentaux.
Remarque : dans la feuille VERSION2, je prends à tort l'intensité psycho comme la combinaison, dans la bande
critique, des intensités ordinaires physiques des deux sons, c'est-à-dire que je prends (A/m^2+B/n^2)^0.3 (dans
la version 2.2, je prends seulement min(A/m^2,B/n^2)^0.3 ). Mais ces solutions sont fausses, car l'energie des
battements se distingue de l'energie proprement dite des sons. 
> IBpsy:=0.0625*(A/m*B/n/I0)^0.3;

> DIS:=IBpsy*dp;

CAS DE DEUX SONS PURS D'ÉGALE INTENSITÉ


Voici ce que produit ce calcul pour la dissonance des deux partiels fondamentaux.
Dans ce cas, la dissonance s'identifie à la dureté propre, puisqu'il n'y a que deux
sons purs d'égale intensité.
Il faut fixer la valeur des constantes A, B, I0, F1.
> A:=100;B:=100;I0:=1;F1:=440;
J'annule cette ligne d'instructions, afin de poursuivre les calculs plus bas.
> #m:=1;n:=1;plot(DIS,k=1..2);

CAS DE DEUX SONS DENTS DE SCIE DONT LES PARTIELS ONT MÊME
INTENSITÉ

Il faut sommer deux fois 10 termes. La sommation fonctionne et donne bien 100
termes. Je ne les affiche pas, cela prendrait plusieurs pages (utilisation de ":" au lieu
de ";").
Cette sommation suppose donc que les dissonances sont indépendantes et s'ajoutent
arithmétiquement. Cela n'est pas vrai si les sons qui les produisent sont dans une
même bande critique. L'addition est alors moins efficace. Un calcul plus précis
devra être fait ensuite.

ATTENTION! m et n ayant reçu la valeur 1 dans l'instruction précédente, il faut


reprendre au début (restart;) et passer la ligne attribuant la valeur 1 à m et n.

> DIStotale:=sum(sum(DIS,m=1..10),n=1..10):
Et maintenant le graphique, puisque Maple a l'air de bien vouloir avaler tous ces
calculs.
Je fais le graphique de la dissonance totale pour la fréquence du second son variant
de l'unisson jusqu'à l'octave, donc pour k de 1 à 2.
> plot(DIStotale,k=1..2,color=black);
Par "curiosité", je calcule la courbe qui ne tient compte que des 6 premiers partiels,
c'est-à-dire ceux pour lesquels l'atténuation reste faible.
> DISunquatre:=sum(sum(DIS,m=1..6),n=1..6):
> plot(DISunquatre,k=1..2, color=black);
CALCUL NON SIMPLIFIÉ
c'est-à-dire tenant compte des chevauchements de bandes
critiques

J'adopte un principe d'affaiblissement de l'effet de dissonance consistant à ne


conserver que la dissonance la plus intense, de deux dissonances situées dans une
même bande critique. Évidemment, cette méthode risque de supprimer beaucoup de
contributions des partiels de rangs élevés.
Dans cette méthode, il faut donc, pour chaque couple produisant une dissonance
non nulle, mettre en mémoire la bande critique sur laquelle il s'étale. Ensuite, quand
on rencontre un nouveau couple, s'il se situe dans une bande critique mise en
mémoire, on peut le laisser tomber.

Un autre procédé consiterait à multiplier par un facteur inférieur à 1 la somme des n


contributions situées dans une même bande critique. Pour deux contributions de
même amplitude, il faut prendre 1.26/2 = 0,63, pour trois environ 0,5 (cf. mon
fichier Word "Additions psycho-sonores.doc"). En fait, les couples auront des
intensités distinctes et il faudrait affiner; toutefois, comme on se trouve dans des
rangs élevés de partiels, les différences d'intensité ne sont pas très grande.
Conclusion pour cette seconde méthode : multiplier par 0,5 les contributions dans
une même bande critique.

Étudions le premier procédé.


Voyons comment les partiels 8 et 9 peuvent interférer.
9*440 = 3960. (3960+30)/8 = 498,75 = 499.
Calculons les fréquences extrêmes des bandes critiques de tous les couples de
partiels de rangs r, 7<=r<=10. Cela fait 16 bandes :
7-7, 7-8, 7-9, 7-10, 8-7, ..., 10-10.
> restart;
> F1:=440;F2:=499;

> fmoy:=sqrt(F1*m*F2*n);bc:=0.2022*sqrt(1408969+fmoy^2)-150;

> bcinf:=fmoy-bc/2;bcsup:=fmoy+bc/2;

> printlevel:=2:# On a besoin de l'instruction printlevel pour afficher le contenu de


la boucle imbriquée (p. 391)

> Digits:=4:# Pour supprimer les décimales dans l'affichage du nombre à 4 chiffres
des limites de bandes critiques

J'affiche respectivement m, n, la fréquence f1=440*m, la fréquence f2=499*n, la


fréquence inf de la bc, la fréquence sup de la bc.
> for m from 7 to 10
>    do
> for n from 7 to 10
>    do
> evalf(m),evalf(n),evalf(F1*m),evalf(F2*n),evalf(bcinf),evalf(fmoy),evalf(bcsup)
>    od
>    od;
           
Le tableau obtenu montre :
- que les couples suivants ne produisent pas de dissonances, parce que f1 ou f2 sont
hors de la bc : 7-8, 7-9, 7-10, 8-9, 8-10, 9-10, 10-7. Les seules dissonances sont
donc:
  7-7, 8-7, 8-8, 9-7, 9-8, 9-9, 10-8, 10-9, 10-10.
Selon la méthode, fmoy(8-7)=3506 déjà dans bc(7-7) donc ignoré. On garde: bc(7-
7)=[3002-3558], bc(8-8)=[3425-4071].
fmoy(9-7)=3720 déjà dans bc(8-8) -> ignoré. fmoy(9-8)=3976 déjà dans bc(8-8) ->
ignoré. fmoy(9-9)=4218) -> on garde bc(9-9)=[3850-4586].
fmoy(10-8)=4192 déjà dans bc(9-9) -> ignoré. fmoy(10-9)=4446 déjà dans bc(9-9)
-> ignoré. fmoy(10-10)=4686 -> on garde bc(10-10)=[4272-5100].

Bilan : on garde 7-7, 8-8, 9-9, 10-10.

Première étape des calculs : limiter les dissonances aux bandes


critiques
Je supprime cette étape. Les calculs montrent qu'il y a très peu de différence avec le
cas où l'on prend la dissonance non nulle en dehors des bandes critiques. Voir la
version antérieure 3. Je redonne toutefois le résultat à la fin de cette feuille, pour le
comparer aux autres calcul.

Seconde étape des calculs :


Atténuer les contributions dissonantes situées dans une même
bande critique
Il faut commencer par étudier les bandes critiques.

Commençons par le calcul pour une valeur de k donnée, par exemple 1,48  (un peu
en dessous de la quinte).
> restart;
> k:=1.48;

> bc:=f->0.2022*(1408969+f^2)^.5-150;# Ne pas mettre la fonction sqrt au lieu de


^.5. Maple refuse de calculer.

> x:=(fA,fB)->abs(fB-fA)/bc((fA+fB)/2);# Je prends la moyenne arithmétique...


pas gênant.

> dp:=x->118*x^2*exp(-8*x);

> IBpsy:=(m,n)->(1/m/n)^0.3;# Il se trouve que A=B=100 et I0=1 produisent une


constante = 0,99..

REMARQUE. Je prévoyais d'abord ceci :


Il faut faire croître m et n simultanément, par valeurs croissantes de m+n. On prend p de 2 à 20, m de 1 à 10,
n:=p-m en résultant. Donc les boucles :
for p from 2 to 20 do for m from 1 to p-1 do   do;od;
On aura ainsi successivement les couples p,m : 2,1;3,1;3,2;4,1;4,2;4,3;5,1... soit les couples m,n :
1,1;1,2;2,1;1,3;2,2;3,1;1,4...
Avec cette suite de couples on sélectionne les seules bandes critiques qui donnent une dissonance non nulle,
c'est-à-dire qui contient bien les deux partiels générateurs de la bande critique.
(pour mémoire, la programmation pour les boucles devaient être :
for p from 2 to 20
   do
for m from max(1,p-10) to min(p-1,10)# Pour 2<=p<=11 1<=m<=p-1, pour 12<=p<=20 p-10<=m<=10
      do
n:=p-m;)

LE CALCUL A MONTRÉ QUE CE CLASSEMENT DES COUPLES N'EST PAS


PERTINENT. On obtient exactement le même tableau qu'en faisant croître m de 1
à 10 et n de 1 à 10 par deux boucles imbriquées. JE LAISSE DONC TOMBER ET
PASSE AU CALCUL DES DISSONANCES DES COUPLES, AVEC LEURS
BANDES CRITIQUES.
Je calcule ci-dessous un tableau des couples de dissonances, affichant
successivement :
rang du couple, m, n, fréquence moyenne des sons battants, [fréquence inf.,
fréquence sup. de la bande critique], valeur de la dissonance
> i:=1;

> for m from 1 to 10


>    do
> for n from 1 to 10
>       do
> fmoy:=(440*m+440*k*n)/2;
> if (min(440*m,440*k*n)<fmoy-bc(fmoy)/2 or
max(440*m,440*k*n)>fmoy+bc(fmoy)/2)
>    then 0
> else
DIS[i]:=IBpsy(m,n)*dp(x(440*m,440*k*n));BC[i]:=[fmoy-bc(fmoy)/2,fmoy+bc(f
moy)/2];
> M[i]:=m;N[i]:=n;FMOY[i]:=fmoy;
> i:=i+1;
> fi;
>       od;
>    od;

> evalf(i-1);

Il n'y a que 12 couples (sur 100) donnant une dissonance non nulle (j'en trouvais 15
avec bc:=f->f/5).
> for j from 1 to i-1
>    do
> evalf([j,M[j],N[j],FMOY[j],BC[j],DIS[j]])
>    od;
Qui plus est, le tableau produit est exactement le même, avec les couples exactement dans le même ordre!

Dans le cas de cet exemple (k:=1.48), quelle dissonance le calcul doit-il donner?
C'est le problème essentiel.

L'addition pure et simple produit :


> sum(DIS[q],q=1..i-1);

C'est bien la valeur qu'on peut lire sur le diagramme obtenu ci-dessus.

Il faut maintenant examiner de près les bandes critiques des 15 contributions et


adopter un principe d'addition qui réduit cette valeur si les contributions sont dans
une même bande critique.

PREMIÈRE APPROCHE SIMPLE. Le tableau obtenu montre que, comme


démontré par ailleurs, il n'y a pas de recouvrement de bandes pour des partiels de
rang inférieur ou égal à 4; qu'il y a par contre de nombreux recouvrements pour les
rangs 8, 9 et 10 (ex. contributions 9, 10, 11 dans la même bande, 11 et 12 dans une
autre même bande). Je propose : de conserver les contributions telles quelles
jusqu'au rang 4 (lorsque m+n<=8), de les multiplier par 0,6 pour 8<m+n<=14,
par 0,4 pour m+n>14.

APPLICATION DE CETTE MÉTHODE D'ATTÉNUATION DES


DISSONANCES SANS ANNULATION EN DEHORS DES BANDES
CRITIQUES

Cette application se justifie par le fait que la fonction de dissonance propre prend,
de toutes manières, de très faibles valeurs en dehors de la bande critique.
> restart;
> bc:=f->0.2022*(1408969+f^2)^.5-150;# Ne pas mettre la fonction sqrt au lieu de
^.5. Maple refuse de calculer.

> x:=(fA,fB)->abs(fB-fA)/bc((fA+fB)/2);# Je prends la moyenne arithmétique...


pas gênant.

> dp:=x->118*x^2*exp(-8*x);

> IBpsy:=(m,n)->(1/m/n)^0.3;
Pour comparaison, je redonne d'abord la dissonance sans aucune atténuation, que
j'appelle "simplissime".
> DIS_simplissime:=(k,m,n)->IBpsy(m,n)*dp(x(440*m,440*k*n));# Aucune
atténuation pour les rangs supérieurs

Ensuite, je calcule la dissonance annoncée en titre, à savoir avec atténuation dans


les bandes critiques, mais sans annulation en dehors d'elles. Je l'appelle "simple".
> DIS_simple:=(k,m,n)->
> if m+n<=8 then IBpsy(m,n)*dp(x(440*m,440*k*n))
> elif m+n<=14 then 0.6*IBpsy(m,n)*dp(x(440*m,440*k*n))
> else 0.4*IBpsy(m,n)*dp(x(440*m,440*k*n))
> fi;

Enfin, à nouveau pour comparaison, je recalcule la dissonance avec att\351nuation


dans les bandes critiques et annulation en dehors d'elles.
> DIS:=(k,m,n)->
> if (min(440*m,440*k*n)<(440*m+440*k*n)/2-bc((440*m+440*k*n)/2)/2 or
max(440*m,440*k*n)>(440*m+440*k*n)/2+bc((440*m+440*k*n)/2)/2)
>    then 0
> elif m+n<=8 then IBpsy(m,n)*dp(x(440*m,440*k*n))
> elif m+n<=14 then 0.6*IBpsy(m,n)*dp(x(440*m,440*k*n))
> else 0.4*IBpsy(m,n)*dp(x(440*m,440*k*n))
> fi;

>
Dissonance_simplissime:=[seq([h,add(add(DIS_simplissime(h/100,m,n),m=1..10),
n=1..10)],h=100..200)]:
>
Dissonance_simple:=[seq([h,add(add(DIS_simple(h/100,m,n),m=1..10),n=1..10)],h
=100..200)]:
> Dissonance:=[seq([h,add(add(DIS(h/100,m,n),m=1..10),n=1..10)],h=100..200)]:
> plot([Dissonance_simplissime,Dissonance_simple,Dissonance],100..200);
Conclusion
- rouge : fonction "simplissime", dans laquelle les dissonances des partiels de rang
élevé ne sont pas atténuées;
- verte : fonction "simple", dans laquelle la dissonance n'est pas annulée en dehors
des bandes critiques, mais où les partiels de rang élevé sont atténués;
- jaune : fonction dans laquelle la dissonance est annulée en dehors des bandes
critiques et où les partiels de rang élevé sont atténués.

Comme on pouvait s'y attendre, l'annulation en dehors des bandes critiques a peu
d'importance, car dans ces régions la fonction de dissonance propre est, de toutes
manières, très faible.
La courbe verte paraît ainsi la plus vraisemblable.

Donnons cette courbe verte (ici en noir) toute seule :


> plot(Dissonance_simple,100..200,color=black);
LES DERNIERS PARTIELS

Il est intéressant de connaître la contribution des derniers partiels, ceux qui sont
susceptibles d'atténuation, c'est-à-dire de rang supérieur ou égal à 5. Je les donne
d'abord sans atténuation, ensuite avec, sur la même figure.
>
Dissonance_simplissime_finale:=[seq([h,add(add(DIS_simplissime(h/100,m,n),m=
5..10),n=5..10)],h=100..200)]:
>
Dissonance_simple_finale:=[seq([h,add(add(DIS_simple(h/100,m,n),m=5..10),n=5.
.10)],h=100..200)]:
> plot([Dissonance_simplissime_finale,Dissonance_simple_finale],100..200);
Même chose pour les partiels de rangs 5 et 6, de telle sorte à ne pas dépasser les
partiels en jeu dans les consonances "classiques".
>
Dissonance_simplissime_5_6:=[seq([h,add(add(DIS_simplissime(h/100,m,n),m=5..
6),n=5..6)],h=100..200)]:
>
Dissonance_simple_5_6:=[seq([h,add(add(DIS_simple(h/100,m,n),m=5..6),n=5..6)
],h=100..200)]:
> plot([Dissonance_simplissime_5_6,Dissonance_simple_5_6],100..200);
Conclusion intéressante : ce ne sont pas ces contributions qui produisent de la
dissonance à la quinte (valeur 150), ni à la tierce mineure (120). Mais elles en
apportent à la quarte (133) et à la tierce majeure (125), ce qui est tout à fait
cohérent.
Cela incite à examiner les dissonances produites par les tout derniers partiels, de
rangs 7 à 10.
>
Dissonance_simplissime_7_10:=[seq([h,add(add(DIS_simplissime(h/100,m,n),m=7
..10),n=7..10)],h=100..200)]:
>
Dissonance_simple_7_10:=[seq([h,add(add(DIS_simple(h/100,m,n),m=7..10),n=7..
10)],h=100..200)]:
> plot([Dissonance_simplissime_7_10,Dissonance_simple_7_10],100..200);
La contribution des partiels de 5 à 10 peut aussi se visualiser par la différence entre
la dissonance totale et la dissonance des partiels de 1 à 4 (laquelle est égale à la
"simple" ou la "simplissime", puisque etc.).
>
Contribution_5_10:=Dissonance-[seq([h,add(add(DIS_simplissime(h/100,m,n),m=
1..4),n=1..4)],h=100..200)]:
> plot(Contribution_5_10,100..200);# NE DONNE RIEN !
Essayons un calcul détaillé direct.
> Contribution_5_10:=[seq([h,add(add(DIS(h/100,m,n),m=1..10),n=1..10)-
add(add(DIS_simplissime(h/100,m,n),m=1..4),n=1..4)],h=100..200)]:
> plot(Contribution_5_10,100..200);

C'est bien cette fonction qui est la bonne, et non pas celle que je calculais plus haut.
Car la précédente ne prenait pas en compte les dissonances produites par les
interférences entre les partiels 5-10 et les partiels 1-4.

Vous aimerez peut-être aussi