Fini par comprendre ce qu’était le rapport qui liait les fonctions [mtof] et [ftom] sous puredata.
[mtof] se base sur une puissance de 2, qui est la courbe qui décrit les rapports d’octave : ainsi une fréquence de 220Hz augmentée de 2 octaves = 220 x 2^2 = 220 x 4 = 880. De même, la tierce (soit 4 demi-tons supérieure, ou 2 tons supérieures) est dans un rapport de 2^(4/12) soit environ 1,259921… Pour le 220Hz, 220 * 2^(4/12) = 277,1826… Hz.
Je lis par ailleurs qu’il s’agit d’un rapport proche de 5/4 qui est égal lui à exactement 1,25Hz. Et la quinte (7 demi-ton) donne rapport de presque 3/2, soit environ 1,5, ce qui en fait une intervalle proche d’une harmonique naturelle.
Pour revenir à nos fonctions sous puredata, la fonction que j’appelais « inverse » [ftom] permettant de trouver la note en gamme tempérée à partir d’une fréquence est en fait ce qu’on appelle la « bijection réciproque ». Ainsi la racine carré est la réciproque du carré, et la fonction logarithme base 2(x), sur laquelle se base [ftom] est la réciproque de la fonction 2^x.
Apparemment, on ne peut pas résoudre un logarithme de n’importe quelle base. Mais on peut calculer le logarithme naturel, dit de base e (nombre d’Euler), fonction qu’on note ln. En tout cas, dans les langages que je connais, j’ai souvent vu nommé log, une fonction qui était la seule disponible et qui correspondant en fait à ln, le logarithme naturel. Mais à partir de celui-là on peut calculer n’importe quel logarithme en se basant sur la formule suivante :
logb(x) = ln(x) / ln(b)
En tout cas, pour savoir quel est l’écart exprimé en octave entre la fréquence 1760Hz et 220Hz, on fait :
ln(1760/220) / ln(2) = ln(8) / ln(2) = 3
oui c’est bien 3. octaves !
Bon ça paraissait facile, mais maintenant, essayons de trouver l’écart harmonique entre les fréquences 220Hz et 415,3Hz.
ln(415,3/220) / ln(2) = ln(1,887272…) / ln(2) = 0,91665…
un chiffre bizarre ! mais si on le multiplie par 12 on obtient 10,9998… soit presque 11. Effectivement, l’écart est (à peu près) de 11 demi-tons.