Bonjour à tous,
je fabrique actuellement un synthétiseur pour mon plaisir personnel. L’instrument comporte un micro-contrôleur et des circuits analogiques.
Alors que la programmation se passe bien il y a tout de même une fonction sur laquelle je bute…
Rappel sur les notations: En musique occidental une octave comporte 12 notes:
Do, Do#, Ré, Ré#, Mi, Fa, Fa#, Sol, Sol#, La, La#, Si.
Un piano qui comporte 84 notes, couvre ainsi 84/12 = 7 octaves
On peut préciser l’octave d’une note de la façon suivante: Do(1), Do(2), Do(3)… La fréquence du Do(3) est deux fois plus élevée que celle du Do(2), elle même deux fois plus élevée que celle du Do(1).
****************************** ****************************** ****************************** **
On peut calculer la fréquence de chaque note depuis une note de référence. Pour cela il suffit d’utiliser la racine douzième de deux:
La (6) = 440 Hz *2 *2
.
.
La (5) = 440 Hz *2
.
.
Do (5) = 440Hz * 1,0594630943592.. * 1,0594630943592.. * 1,0594630943592.
Si (4) = 440Hz * 1,0594630943592.. * 1,0594630943592..
La #(4) = 440Hz * 1,0594630943592..
La (4) = 440Hz (note et fréquence de référence)
Sol# (4) = 440Hz / 1,0594630943592..
Sol(4) = 440Hz / 1,0594630943592.. / 1,0594630943592..
.
.
La (3) = 440 Hz / 2
.
.
La (2) = (440 Hz / 2) / 2
.
.
La (1) = ((440 Hz / 2) / 2 ) /2
.
.
La(0) = (((440 Hz / 2) / 2 ) /2) /2
****************************** ****************************** ****************************** **
Généralement les synthétiseurs sont accordables au centième de demi-ton. Dans ce cas on utilise la racine mille deux centième de deux:
La (4)+ 2 cent = 440Hz * 1,0005777895065.. * 1,0005777895065..
La (4)+ 1 cent = 440Hz * 1,0005777895065..
La (4) = 440Hz (note et fréquence de référence)
La (4)- 1 cent = 440Hz / 1,0005777895065..
****************************** ****************************** ****************************** **
Je pense que vous commencez à visualiser le type de fonction exponentielle qui se cache derrière toutes ses itérations.
En remplaçant les notes par des chiffres on obtiendrait quelque chose qui ressemble à ça je crois:
Qu’on peut aussi écrire ainsi:
En théorie c’est pas mal mais en pratique c’est une fonction difficile à utiliser en temps réel dans un microcontrôleur car elle demande le calcul de beaucoup d’itérations.
Pourtant ce type de fonction exponentielle est essentielle pour tout ce qui touche la synthèse audio en temps réel, ça ne concerne pas que les notes mais aussi a plage de variation des filtres, l’amplitude sonore, les effets de modulation..
MA QUESTION:
Dois-je me résoudre à utiliser des astuces de programmation pour contourner la lourdeur des calculs présentés ici ou existe t’il une autre approche mathématique qui faciliterait le calcul en temps réel?
Merci pour vos réponses.
-----