Guillaume Loizillon

Traité de synthèse sonore : 5 Modèles physiques

1 Modèle additif / 2 Modèle soustractif / 3 Modulation de fréquence / 4 Granulations / 6 Synthétiseurs analogiques

   

 

Modèles physiques : revenir à la cause

Les modèles physiques regroupent un ensemble d'approches radicalement différentes des modes de synthèse de signal. Ici, ce ne sont plus des paramètres de l'onde acoustique qui sont spécifiés, mais des descriptions de corps sonores ainsi que différentes actions provoquant leur excitation. Le programme de synthèse calcule l'implication vibratoire de ces interactions. Ce type de synthèse présente l'avantage de considérer l'importance du rapport qui se fonde entre l'écoute et l'estimation de la source réelle ou supposée du son.
Il s'agit alors d'expérimenter une lutherie virtuelle, ou se créent des instruments imaginaires faits de matériaux inconnus et aux dimensions improbables. au delà de cette part d'invention, c'est également des modes de jeux que l'on est amené à programmer.

 

Télécharger les exemples 9a-b / Download

[Exemple 9-a]

 

Modèle de barre en métal [Csound]

Csound propose plusieurs modèles d'objets physiques. barmodel est un modèle de barre frappée.

 

La fonction réclame 9 arguments.
L'argument n°3 est celui qui détermine la hauteur perçue : plus il sera élevé plus le son sera aiguë.
Les arguments 4 & 6 jouent sur la durée de résonance. Plus la valeur de 4 est petite, plus les partiesl élévés s'amortiront lentement. La valeur de 6 détermine la durée totale de la résonance.
L'argument 5, si il n'est pas laissé à 0, agit comme un modulateur d'amplitude. Avec des valeurs basses, il donnera des effets de trémolo. Avec des valeurs élevées il transformera le timbre en le rendant encore plus inharmonique.

Remarque : Si l'on enlève l'ensemble des commentaires, en vert, on s'aperçoit de la simplicité de mise en oeuvre (énoncé de la fonction avec réglage de tous ses arguments et sortie pour écoute).
Quand on explorera plus loin des exemples écrits avec le programme modalys, on rencontrera des formes d'écriture singulièrement plus complexes.

Écouter
[Exemple 9-a] (développement de l'exemple précédent)

Dans cette exploitation plus avancée de la fonction barmodel, on crée dans le score plusieurs excitations successives. On y fait varier 3 des 9 arguments de la fonction:

la raideur.
la perte d'énergie des partiels élevés.
la modulation d'amplitude.

Il est également intéressant de tester les différentes configuration de libertés de la barre, à droite et à gauche (arguments 1&2 de barmodel). Il faut tenter de se représenter une barre de métal soit fixée, soit libre ("flottant" dans l'air) ou pouvant pivoter sur ses côtés. Attention certaines configurations ne produisent aucun son.

Écouter

 

Exemple 10 [télécharger / download ]

Algorithme de Karplus-Strong : modèle de corde pincée [Max msp]

  Ce patch met en oeuvre un algorithme déjà ancien de modélisation physique de corde pincée. Il peut tout d’abord apparaître comme fermé dans un usage imitatif Une exploration plus fouillée de ses potentialités peut cependant donner des résultats tout à fait originaux et personnels.

On y remarque une pensée sur le son scindée en deux entités distinctes : d’un côté le principe sonore et de l’autre les modes d’excitation. La génération du son est articulée autour de la fixation d'un temps de délai selon la fréquence que l’on désire obtenir [1] . On connecte alors à l’entrée de cette ligne retard un très bref élément sonore. En réinjectant dans le système même ce dispositif on obtient une mise en résonance à la hauteur précise que l’on a fixée. On en maitrise la l’extinction progressive en dosant ce pourcentage de feedback et en appliquant filtre passe bas juste avant la réinjection.

Une rapide apparition disparition de bruit blanc (quelques millisecondes) figure un plectre, ou tout autre objet imaginaire. Le filtre passe bas qu’on lui applique engendre un pincé plus ou moins dur et brillant.

Passé la phase mimétique, tout un travail musical s’ouvre en explorant de multiples modalités d’excitations : différentes enveloppes dynamiques, excitations par des sons acoustiques etc. Il est aussi intéressant de penser à une démultiplication des systèmes de ligne de retard ouvrant, par exemple, à la création d’espaces multi résonants

  Remarque : on peut également utiliser l'objet comb~ pour réaliser une mise en œuvre de ce type.

[1] Formule de calcul du temps de délai : [(1/f)*1000] où f = la fréquence de vibration de la « corde » que l’on désire obtenir.

 

 

 

Lien sur l'algorithme de Karplus-Strong (en anglais)
Lien sur l'algorithme de Karplus-Strong (en français)

Écouter : excitation par un bruit blanc : [différents réglages de temps de hauteur, de valeurs de filtres et de feedback]

 

Écouter : excitation par un fichier audio [voix de Gaston Bachelard]

 

 

Remarque : la fonction pluck, dans Csound propose une version intégrée de l'algorithme de Karplus-Strong

Synthèse modale

(Modalys)

 Le principe général appliqué ici est fondé sur la théorie modale qui observe la réaction d'un objet physique soumis à une perturbation. Dans le cas du son, il s'agira donc de rendre audible cet effet en modélisant des objets de matières, de formes et de dimensions appropriées. D'une manière concrète, la programmation d'un son consistera donc à injecter une force à un objet et à en observer les vibrations résultantes. La vibration d'un objet se décompose en modes, qui correspondent aux diverses déformations périodiques et simultanées. Ainsi, chaque mode se caractérise par une fréquence et son temps d'extinction. chaque mode est associée une fréquence de résonance qui le met en action suivant les différents points d'excitation. L'utilisateur, sauf cas particuliers, ne spécifie pas dans sa programmation les hauteurs de chaque mode et les temps d'extinction, mais programme les paramètres et les dimensions physique d'un objet ainsi que les forces d'excitation qui seront traduites par le calcul, sur le plan sonore. On voit bien ici la grande différence de ce mode de synthèse avec tout ceux issus des modèles de signal. Le travail de l'imaginaire ne s'effectue pas ici sur une pensée sonore mais plutôt sur une virtualisation du geste instrumental.

Les exemples présentés ici sont réalisés avec le programme Modalys, développé à l'Ircam depuis la fin des années 90. On programme directement en mode texte pour une synthèse sans temps réel.
Il est cependant possible d'utiliser une passerelle avec Max msp pour un usage dynamique et en temps réel.

 

 

(new)
(setq corde (make-object 'mono-string (length 1.25))) ; une corde de 1,25 m de long

(setq excite (make-access corde (const 0.45) 'trans0)) ; on détermine un point sur la corde qui sera excité

; Pendant un bref instant, on applique une force au point déterminé précédemment
(make-connection 'force excite
(make-controller 'envelope 1 (list(list 0 0)(list 0.0001 5)(list 0.001 0))))

(setq ecoute(make-access corde (const 0.95) 'trans0)) ; on choisit autre point sur la corde
(make-point-output ecoute ); on prélève la vibration en ce point pour écouter

(run 4) ; 4 secondes de synthèse sont suffisantes pour entendre la totalité du phénomène programmé
(play)

Une corde sur laquelle on applique une force (Modalys)

Voici une synthèse très simple à réaliser avec Modalys. Les 3 grandes notions du programme y sont présentes.
Objets : ici, nous mettons en œuvre une corde de 1,25 mètres de longueur. D'autres paramètres sont également ajustables : nous les verrons dans d'autres exemples.
Accès : les accès sont des points sur les objets définis par l'utisateur sur lesquels s'appliqueront différentes actions. Nous pratiquons 2 accès sur la corde. L'un pour y appliquer la force, l'autre pour déterminer un point d'écoute, sorte de micro-contact. Ces points d'accès peuvent être constants (const n) ou dymamiques (voir dans les exemples suivants). Pour accéder à une corde en son centre, on notera (const 0.5) à son extrémité, (const 0.99) ou (const 0.001).
Connexions : Les connexions sont les modes d'interaction entre objets et accès. Nous utilisons ici la connexion 'force qui s'exprime en Newton. Le controleur 'envelope définit l'évolution de cette force dans le temps.

Écouter/listen
(setq corde (make-object 'mono-string (length 1.25) (tension 50) (const-loss 0.4) (freq-loss 0.1))) On subsitue la seconde ligne du programme précédent avec celle-ci. La tension est exprimée en Newton. Les paramètres (const-loss) et (freq-loss) régissent la durée de vibration et l'amortissement des modes (fréquences) élevés. Plus ils sont petits plus l'objet vibre longtemps et les hautes fréquences s'amortissent lentement.
Écouter/listen

 

; Guillaume Loizillon 1996-2013
; plaque et jeu de rebonds

(new)
; ------------------------ objets -----------------------------
; une plaque rectangulaire
(setq plaque (make-object 'rect-plate (modes 150) (young 5.5e10)
(length0 .75) (length1 1) (const-loss 1) (freq-loss .04) (density 90) (thickness .004)))

; un marteau (objet à deux masses reliées par un ressort)
; changer la raideur du ressort provoque rebonds et coups multiples

(setq marteau (make-object 'mono-two-mass
(stiffness0 60) (small-mass .5)
(large-mass .5)))

; --------------------------- accès-----------------------------
; déplacement du point de frappe sur la plaque au cours du temps
(setq dep-frappe (make-controller 'envelope 2 (list(list 0 0.01 0.35) (list 5 .99 .01))))
(setq acc-plaque (make-access plaque dep-frappe 'normal))

;Masse du marteau servant à frapper la plaque
(setq acc-marteau (make-access marteau (const 1) 'trans0))

;Masse du marteau qui sera déplacée
(setq bouge-marteau (make-access marteau (const 0) 'trans0))

; --------------------------- connexions ------------------------
; l'interaction entre la plaque et le marteau est de type "strike"
(make-connection 'strike acc-plaque 0 acc-marteau .4)

; déplacement du marteau vers la plaque au cours du temps
(make-connection 'position bouge-marteau
(make-controller 'envelope 1 (list (list 0 .4) (list .01 -.1) (list 2.2 0) (list 5 0) (list 5.5 0.4))))

; ----------------- point d'écoute & sortie ---------------------
(setq plaque-ecoute (make-access plaque (const .01 .65) 'normal))
(make-point-output plaque-ecoute)
(run 6)
(play)

Une plaque rectangulaire frappée, avec effet de rebonds.
A struck rectangular plate, with effect of bounces.

L'objet 'rect-plaque est un modèle de plaque carrée ou rectangulaire.
Dans cet exemple, on fixe parmi l'ensemble paramètres possibles :
la longueur des côtés de la plaque (length0) et (length1) et l'épaisseur (thickness) en mètre.
le nombre de modes calculés (modes). Plus cette valeur augmente plus le son sera précis et détaillé mais plus il prendra du temps de calcul.
la densité et le module de Young. Ces deux paramètres ont un effet direct sur la hauteur globale du son et son harmonicité ou inharmonicité.
(freq-loss) et (const-loss) ont le même effet que pour le modèle de corde vu précédemment.
Précisions sur l'objet 'rect-plate sur le site de l'IRCAM

L'effet de rebond est dû au paramétrage de l'objet ('mono-two-mass) utilisé pour frapper (connexion 'strike). On peut se représenter cet objet comme deux masses de forme indéfinie et reliées entre elles par un ressort. Le paramètre (stiffness0) permet de fixer la raideur du ressort.
On frappe une plaque rectangulaire avec cet objet réglé dont le paramètre de raideur est réglé afin de donner une liaison molle entre les deux masses.
On définit un point de frappe variable (; déplacement du point de frappe sur la plaque au cours du temps).
Après la frappe la frappe, on remet en contact l'objet sur la plaque. (; déplacement du marteau vers la plaque au cours du temps). Le marteau mou rebondit alors sur la plaque sur un point chaque fois différent.

2 variations.

Dans ces deux variations, on explore différents réglages des paramètres de la plaque, de la raideur du ressort de l'objet à deux masses et du déplacement de ce marteau. Dans la première variation une des longueur de la plaque change graduellement au cours du temps.

La seconde variation explore une connexion plus avancée que la connexion 'strike (connexion 'felt). Celle-ci permet d'affiner la frappe en définissant des caractéristiques de surface et de matière des masses.

Écouter/listen
Écouter/listen Écouter/listen

 

Modalys & Max msp

L'objet externe modalys~ (livré avec le paquet Modalys du Forum IRCAM) permet de piloter dynamiquement des contrôleurs afin de modifier les composantes des objets et les valeurs régissant les connexions.

Le processus consiste, tout d'abord, à écrire dans Modalys un programme qui met en place l'objet dont certains paramètres et modes d'excitation seront par la suite contrôlés dynamiquement depuis Max Msp. Ce programme est compilé de telle manière à être transformé en un script que Max pourra exploiter. On entre en relation avec ce script via l'objet modalys~ auquel on envoie un certain nombre de messages.

remarque : cet exemple reprend la base du programme décrit plus haut : Une corde sur laquelle on applique une force. quelques modifications de structure sont opérées, principalement les déclarations des contrôleurs qui seront expoités par Max msp.

Écouter/listen

La vidéo présentée ici est un extrait d'un pièce qui met en jeu un assemblage de 4 cordes. Les cordes sont excitées séquenciellement, de manière automatique ainsi que par diverses actions opérées en direct sur le patch.

 

 

Contact : poser des questions ou émettre des suggestions.

Modèle additif / Modèle soustractif / Modulation de fréquence / Granulations / Synthétiseurs analogiques