La synthèse de son additive

Après de nom­breux mois à lire sur la musique élec­tro­nique, sur la manière de faire du son, et à uti­li­ser des logi­ciels pour en faire, j’a­vais de plus en plus envie de me lan­cer dans la fabri­ca­tion d’un syn­thé­ti­seur logi­ciel. Pas un truc révo­lu­tion­naire, hein ! Mais quelque chose à visée péda­go­gique, pour apprendre com­ment faire du son, et le par­ta­ger avec d’autres.

Et le hasard fai­sant bien les choses, j’ai ren­con­tré dans le groupe de recherche Infor­ma­tique Sans Ordi­na­teur de l’I­REM (là où je tra­vaille déjà à des acti­vi­tés péda­go­giques) un copain de jeu, Pas­cal Lafour­cade, qui voit en la pro­gram­ma­tion musi­cale une manière ludique de for­mer les jeunes publics à l’informatique.

Dans cet article, je vous pro­pose donc de décou­vrir ce qu’est la syn­thèse addi­tive, en illus­trant mes pro­pos par quelques exemples géné­rés par l’ou­til que je suis en train de déve­lop­per, basic­synth.

Le son, c’est quoi ?

Le son, c’est le résul­tat de la com­pres­sion puis décom­pres­sion rapide de l’air (ou de tout autre maté­riau), que nos oreilles captent, et que l’on peut pro­duire de plein de manières dif­fé­rentes : avec un ins­tru­ment de musique, un haut-par­leur, ou tout objet du quo­ti­dien. Pour réus­sir à en fabri­quer avec un ordi­na­teur, il faut prendre le temps de com­prendre com­ment cela marche physiquement.

On peut repré­sen­ter la compression/décompression suc­ces­sive de l’air par une courbe, où l’axe hori­zon­tal serait le temps, et l’axe ver­ti­cal la quan­ti­té de pres­sion, qui peut être néga­tive ou posi­tive. On appelle de telles repré­sen­ta­tions des oscil­lo­grammes :

Plus le son est fort à nos oreilles, plus l’am­pli­tude de la pres­sion est impor­tante. Dans l’exemple sui­vant, le son repré­sen­té en jaune est iden­tique au son rouge, excep­té son volume : il est beau­coup plus faible.

En plus du volume sonore, notre oreille apprend très tôt à dis­tin­guer les sons aigus des sons graves. Sur les oscil­lo­grammes, c’est la lon­gueur d’onde qui va varier. Quand la lon­gueur d’onde varie, il n’y a bien sûr pas le même nombre d’os­cil­la­tions par minute. C’est ce qu’on appelle la fré­quence. On a par exemple pris l’ha­bi­tude d’ap­pe­ler la la note cor­res­pon­dant à une vibra­tion de 440 oscil­la­tions par seconde. Sa lon­gueur d’onde, usuel­le­ment mesu­rée en mètres, est donc équi­va­lente à la dis­tance par­cou­rue par une vibra­tion dans l’air en 1/440 seconde. Chaque note usuelle a ensuite sa fré­quence. En les jouant suc­ces­si­ve­ment, on peut pro­duire une mélodie.

J’ai du bon tabac, syn­thé­ti­sé par une méthode d’é­chan­tillon­nage de sinus, très basique.

Pour fabri­quer ce son, j’ai uti­li­sé la tech­nique de l’é­chan­tillon­nage. Il s’a­git du prin­cipe uti­li­sé pour pro­duire du son numé­rique : on découpe chaque seconde en 44100 inter­valles (ce nombre a été fixé au moment de la com­mer­cia­li­sa­tion du CD), et on choi­si une valeur numé­rique (cor­res­pon­dant à la pres­sion, la mesure ver­ti­cale) pour chaque échantillon :

Dans ce pre­mier exemple, le son n’est pas très agréable : on dirait un buz, agres­sif, peu mélo­dieux. Il faut donc tra­vailler pour amé­lio­rer ce son. La pre­mière chose à faire consiste à intro­duire une enve­loppe. Le prin­cipe de l’en­ve­loppe d’une note est de faire varier le volume de la note pro­gres­si­ve­ment, pour imi­ter les sons tels qu’ils sont pro­duits par les objets qui nous entourent. On peut par exemple faire mon­ter pro­gres­si­ve­ment le volume de la note, puis le dimi­nuer pro­gres­si­ve­ment, pour avoir un son très doux :

J’ai du bon tabac, syn­thé­ti­sé avec une enve­loppe montante/descendante.

Dans cet exemple, chaque note est jouée avec sa fré­quence fon­da­men­tale, mais le volume varie, comme illus­tré ci-dessous :

Dans l’u­ni­vers de la syn­thèse musi­cale, on a pris l’ha­bi­tude de décom­po­ser l’en­ve­loppe des sons en quatre par­ties : l’at­taque, le déclin, le main­tien, et le relâ­che­ment. En fai­sant varier l’am­pli­tude et la durée de cha­cune de ces par­ties, on est capable de simu­ler gros­siè­re­ment des sons proches de ceux enten­dus dans notre quo­ti­dien, qui sont sou­vent issus d’une pre­mière par­tie (frot­te­ment ou frappe), et d’une seconde par­tie plus ou moins longue.

Voi­ci le même mor­ceau que pré­cé­dem­ment, mais joué avec une attaque et un déclin très pro­non­cée (pour simu­ler une frappe), un très court main­tien beau­coup plus faible, et un lent relâchement :

J’ai du bon tabac, syn­thé­ti­sé en simu­lant un son frap­pé, grâce à une enve­loppe adéquate.

Cepen­dant, dans la vraie vie, aucun ins­tru­ment n’est capable de pro­duire un son « pur ». Il y a tou­jours une foul­ti­tude de notes qui se mélangent, pour pro­duire un son riche. Chaque ins­tru­ment a été conçu pour pro­duire un mélange spé­ci­fique de sons, pour chaque note jouée. C’est ce que l’on appelle le timbre de l’ins­tru­ment. Or, quand on trouve un son har­mo­nieux, c’est sou­vent que les sons qui viennent com­plé­ter la note fon­da­men­tale sont des notes dont la fré­quence est un mul­tiple de la note fon­da­men­tale. Ain­si, la pre­mière har­mo­nique d’un la à 440 Hz est un son qui vibre à 2 × 440 = 880 Hz, la deuxième har­mo­nique est un son qui vibre à 3 × 440 = 1320 Hz, etc. En syn­thèse addi­tive, on peut donc ajou­ter à chaque fois que l’on joue une note quelques har­mo­niques, dont on construi­ra une enve­loppe beau­coup plus réduite, afin de gar­der la note fon­da­men­tale en avant, tout en l’enrichissant.

En rejouant la même par­ti­tion que pré­cé­dem­ment, et lui en ajou­tant quelques har­mo­niques, voi­là ce que l’on obtient :

J’ai du bon tabac, syn­thé­ti­sé en simu­lant de manière rudi­men­taire un son de pia­no, grâce à une enve­loppe adé­quate et des quelques harmoniques.

Et voi­là, c’est tout pour aujourd’­hui ! Si vous vou­lez vous aus­si essayer de fabri­quer du son avec mon petit syn­thé­ti­seur péda­go­gique, ren­dez-vous sur la page du pro­jet, où vous pour­rez télé­char­ger le syn­thé­ti­seur ain­si que le script qui a ser­vi à fabri­quer les exemples que nous avons écou­té. Le tout est écrit en python, et sous licence GPLv3.