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)).
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;
> 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(fmoy)/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;
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.