Après de nombreux mois à lire sur la musique électronique, sur la manière de faire du son, et à utiliser des logiciels pour en faire, j’avais de plus en plus envie de me lancer dans la fabrication d’un synthétiseur logiciel. Pas un truc révolutionnaire, hein ! Mais quelque chose à visée pédagogique, pour apprendre comment faire du son, et le partager avec d’autres.
Et le hasard faisant bien les choses, j’ai rencontré dans le groupe de recherche Informatique Sans Ordinateur de l’IREM (là où je travaille déjà à des activités pédagogiques) un copain de jeu, Pascal Lafourcade, qui voit en la programmation musicale une manière ludique de former les jeunes publics à l’informatique.
Dans cet article, je vous propose donc de découvrir ce qu’est la synthèse additive, en illustrant mes propos par quelques exemples générés par l’outil que je suis en train de développer, basicsynth.
Le son, c’est quoi ?
Le son, c’est le résultat de la compression puis décompression rapide de l’air (ou de tout autre matériau), que nos oreilles captent, et que l’on peut produire de plein de manières différentes : avec un instrument de musique, un haut-parleur, ou tout objet du quotidien. Pour réussir à en fabriquer avec un ordinateur, il faut prendre le temps de comprendre comment cela marche physiquement.
On peut représenter la compression/décompression successive de l’air par une courbe, où l’axe horizontal serait le temps, et l’axe vertical la quantité de pression, qui peut être négative ou positive. On appelle de telles représentations des oscillogrammes :
Plus le son est fort à nos oreilles, plus l’amplitude de la pression est importante. Dans l’exemple suivant, le son représenté en jaune est identique au son rouge, excepté son volume : il est beaucoup plus faible.
En plus du volume sonore, notre oreille apprend très tôt à distinguer les sons aigus des sons graves. Sur les oscillogrammes, c’est la longueur d’onde qui va varier. Quand la longueur d’onde varie, il n’y a bien sûr pas le même nombre d’oscillations par minute. C’est ce qu’on appelle la fréquence. On a par exemple pris l’habitude d’appeler la la note correspondant à une vibration de 440 oscillations par seconde. Sa longueur d’onde, usuellement mesurée en mètres, est donc équivalente à la distance parcourue par une vibration dans l’air en 1/440 seconde. Chaque note usuelle a ensuite sa fréquence. En les jouant successivement, on peut produire une mélodie.
J’ai du bon tabac, synthétisé par une méthode d’échantillonnage de sinus, très basique.
Pour fabriquer ce son, j’ai utilisé la technique de l’échantillonnage. Il s’agit du principe utilisé pour produire du son numérique : on découpe chaque seconde en 44100 intervalles (ce nombre a été fixé au moment de la commercialisation du CD), et on choisi une valeur numérique (correspondant à la pression, la mesure verticale) pour chaque échantillon :
Dans ce premier exemple, le son n’est pas très agréable : on dirait un buz, agressif, peu mélodieux. Il faut donc travailler pour améliorer ce son. La première chose à faire consiste à introduire une enveloppe. Le principe de l’enveloppe d’une note est de faire varier le volume de la note progressivement, pour imiter les sons tels qu’ils sont produits par les objets qui nous entourent. On peut par exemple faire monter progressivement le volume de la note, puis le diminuer progressivement, pour avoir un son très doux :
J’ai du bon tabac, synthétisé avec une enveloppe montante/descendante.
Dans cet exemple, chaque note est jouée avec sa fréquence fondamentale, mais le volume varie, comme illustré ci-dessous :
Dans l’univers de la synthèse musicale, on a pris l’habitude de décomposer l’enveloppe des sons en quatre parties : l’attaque, le déclin, le maintien, et le relâchement. En faisant varier l’amplitude et la durée de chacune de ces parties, on est capable de simuler grossièrement des sons proches de ceux entendus dans notre quotidien, qui sont souvent issus d’une première partie (frottement ou frappe), et d’une seconde partie plus ou moins longue.
Voici le même morceau que précédemment, mais joué avec une attaque et un déclin très prononcée (pour simuler une frappe), un très court maintien beaucoup plus faible, et un lent relâchement :
J’ai du bon tabac, synthétisé en simulant un son frappé, grâce à une enveloppe adéquate.
Cependant, dans la vraie vie, aucun instrument n’est capable de produire un son « pur ». Il y a toujours une foultitude de notes qui se mélangent, pour produire un son riche. Chaque instrument a été conçu pour produire un mélange spécifique de sons, pour chaque note jouée. C’est ce que l’on appelle le timbre de l’instrument. Or, quand on trouve un son harmonieux, c’est souvent que les sons qui viennent compléter la note fondamentale sont des notes dont la fréquence est un multiple de la note fondamentale. Ainsi, la première harmonique d’un la à 440 Hz est un son qui vibre à 2 × 440 = 880 Hz, la deuxième harmonique est un son qui vibre à 3 × 440 = 1320 Hz, etc. En synthèse additive, on peut donc ajouter à chaque fois que l’on joue une note quelques harmoniques, dont on construira une enveloppe beaucoup plus réduite, afin de garder la note fondamentale en avant, tout en l’enrichissant.
En rejouant la même partition que précédemment, et lui en ajoutant quelques harmoniques, voilà ce que l’on obtient :
J’ai du bon tabac, synthétisé en simulant de manière rudimentaire un son de piano, grâce à une enveloppe adéquate et des quelques harmoniques.
Et voilà, c’est tout pour aujourd’hui ! Si vous voulez vous aussi essayer de fabriquer du son avec mon petit synthétiseur pédagogique, rendez-vous sur la page du projet, où vous pourrez télécharger le synthétiseur ainsi que le script qui a servi à fabriquer les exemples que nous avons écouté. Le tout est écrit en python, et sous licence GPLv3.
Excellent article ! Bravo !
Article très intéressant, instructif.
A propos de l’échantillonnage, si je comprends bien : pour un LA réglé à 441Hz, une oscillation (une période) du signal occupe 100 intervalles de l’échantillonnage à 44,1kHz.