Вы находитесь на странице: 1из 192

1

Introduction
La voix chante
La voix chante prend place au cur de lexpression musicale. On la retrouve
dans la plupart des genres musicaux o elle joue souvent un rle directeur.
Le chant est un mode fondamentale dexpression musicale. Il convient
particulirement lexpression dune ide spcifique dans la mesure o il est la
plupart du temps reli un texte. Mme sans aucun mot, la voix est capable de
formuler des dclarations personnelles et identifiables. Cest trs probablement le plus
subtil et le plus flexible des instruments de musique ce qui explique principalement
cette fascination autour de lart du chant.1

Des machines qui parlent


La diversit presque infinie des sons productibles avec la voix et par
consquent leur complexit ont trs tt intress compositeurs et chercheurs. Ainsi, avec
lapparition du phonographe en 1887, lide de pouvoir traiter, modifier ou amliorer la voix
chante a fait son apparition. Nanmoins, il a fallu attendre les annes soixante avec
lavnement des technologies numriques pour voir lmergence de techniques de synthse
pour la voix chante et donc de la notion de vocalit artificielle dans la cration musicale.
Du phonographe aux voix artificielles entendues dans les uvres musicales
contemporaines, le parcours semble naturel. La voix et la machine y sont chaque fois
convoques et leur rencontre est la source dune conception indite de la vocalit.2

Lide de pouvoir synthtiser la voix parle est en revanche largement


antrieure la naissance de linformatique. En effet, ds lpoque baroque, les facteurs
dorgue tentaient de crer des jeux sur leurs instruments capables de produire des sons de
types vocaux. A partir du XVIIe sicle, chercheurs et inventeurs ont travaill la cration de
machines et dautomates capables dimiter la voix humaine, en particulier la parole. On peut
par exemple citer la machine de Kratzenstein (1777) 3 qui modlisait un conduit vocal

1 JANDER, Owen, Singing , Grove Music Online, 2010,


http://www.oxfordmusiconline.com/subscriber/article/grove/music/25869Singing (en ligne le 04/09/2010), citation traduite de langlais :
Singing is a fundamental mode of musical expression. It is especially suited to the expression of specific ideas, since it is almost always
linked to a text; even without words, the voice is capable of personal and identifiable utterances. It is arguably the most subtle and flexible of
musical instruments, and therein lies much of the fascination of the art of singing. .
2 BOSSIS, Bruno, La voix et la machine : La vocalit artificielle dans la musique contemporaine, Rennes : Presses Universitaire de Rennes,
2005, p. 7.
3 GUILBERT, Jean, La parole : comprhension et synthse par les ordinateurs, Paris : Presses Universitaires de France, 1979, p. 90.

2
laide de rsonateurs de formes diverses excits par une anche mise en vibration. Elle
permettait de produire des sons voisins des voyelles.

6cm

Fig. 1 Rsonateurs de la machine de Kratzenstein pour les diffrentes voyelles de la langue


4

franaise. Lair tait envoy dans la partie infrieure de chacun dentre-eux.

Ce modle a alors inspir un grand nombre dautres projets tel que la


machine de Faber 5 qui vit le jour en 1835. Celle-ci taient contrle par un clavier et
pouvait prononcer des phrases entires.

Fig. 2 La machine de Faber.6


Enfin, il est galement important de mentionner une machine imagine par
Graham Bell en 1876 : le Harp telephone mais qui na jamais t construite. Cette dernire
constituait le premier systme de synthse de la parole par un procd lectrique. Une range
4 SCHROEDER, Manfred R., A Brief History of Synthetic Speech , Speech Communication, XIII (1993), n1 et 2, p. 231-237.
5 LIENARD, Jean-Sylvain, Les processus de la communication parle, Paris : Masson, 1977, p. 107.
6 MILLIKAN, Franck Rives, Joseph Henry and the Telephone, http://siarchives.si.edu/history/jhp/joseph23.htm (en ligne le 04/09/2010).

3
danches vibrantes, accordes de telle faon que ltendue du spectre de la voix soit couvert,
devait tre place dans le circuit magntique dun lectro-aimant.

Fig. 3 Le Harp Telephone imagin par Graham Bell.7

Ces modles primitifs ( lexception du dernier modle prsent) de synthse


mcanique que lon peut qualifier de modles physiques dans la mesure o ils tentaient de
reproduire les caractristiques de lappareil phonatoire ont t la base de la cration des
premiers synthtiseurs numriques de la voix chante.
Synthtiser la voix chante aujourdhui
Les cinquante dernires annes ont vu lmergence dun important nombre de
techniques de synthse utilisables pour la (re)production de la voix chante sur ordinateur.
Les premires dentre-elles, bases sur des modles physiques de tubes acoustiques une
dimension de lappareil phonatoire offraient des rsultats intressants mais trs loins des sons
naturels. A partir des annes soixante-dix, la demande des compositeurs qui sintressaient de
plus en plus la possibilit de pouvoir intgrer des voix de synthse dans leurs travaux a
fortement augmente.
Au milieu du vingtime sicle, la vocalit artificielle commence prendre place
dans la composition musicale []. Au fur et mesure de lapparition de nouveaux
modles et de nouvelles technologies empruntant aux avances du magntisme, de
llectronique et de linformatique, les compositeurs intresss par des sonorits
vocales inoues, de Pierre Schaeffer et Pierre Henry Karlheinz Stockhausen,

7 PRESCOTT, George Bartlett, Bells Electric Speaking Telephone, New-York : D. Appleton and company, 1884.

4
Jonathan Harvey, Philippe Manoury, Kaija Saariaho et bien dautres, tendent et
affinent lintgration de la vocalit artificielle dans leurs uvres.8

Les nouvelles techniques numriques qui ont vu le jour au cours de la seconde


moiti du vingtime sicle peuvent tre classes dans trois grandes catgories : les modles
physiques, les modles spectraux et les modles bass sur la concatnation dchantillons,
chacune dentres elles prsentant la fois divers inconvnients et avantages au niveau de leur
implmentation.

Fig. 4 Le robot Miimu de Yamaha chante grce un procd de synthse bas sur la
9

concatnation et la modification dchantillons.

Synthse de la voix par Fonctions dOnde Formantique


Lune des techniques rentrant dans cette catgorie a fortement attir notre
attention pour sa simplicit de mise en uvre et la qualit des rsultats obtenus pour la
synthse de sons de type voiss (voyelles). Appele synthse par Fonctions dOnde

8 BOSSIS, Bruno, La voix et la machine : La vocalit artificielle dans la musique contemporaine, Rennes : Presses Universitaire de Rennes,
2005, p. 285-286.
9 http://tokyobling.wordpress.com/tag/music/ Blog de Tokyobling (en ligne le 04/09/2010).

5
Formantique (ou FOF), elle a t dveloppe lIRCAM10 au dbut des annes quatre-vingt
par lquipe de Xavier Rodet. Elle peut tre classe dans deux des catgories mentionnes
prcdemment dans la mesure o elle est base sur un modle la fois physique et spectral.
Cette technique a connu un essor important au cours des annes quatre-vingt et a t utilise
par un certain nombre de compositeurs tant pour la synthse de son vocaux que pour la
synthse dautre type de sons. En effet, elle sest rvle tre particulirement efficace dans la
production de sons instrumentaux percussifs suivis dune rsonnance, comme ceux produits
par les xylophones, les instruments cordes pinces et frappes, etc.
Le programme CHANT
La premire implmentation de la synthse par Fonctions dOnde Formantique
a t faite travers le programme CHANT dvelopp lIRCAM par Xavier Rodet et PierreFranois Baisne. CHANT est un synthtiseur par rgle permettant la synthse de voyelles
avec un nombre rduit de paramtres. Chant est le synthtiseur le plus simple manier 11.
Il est galement important de noter quun gnrateur de bruit filtr permettait la synthse de
sons de type fricatifs.
Des exemples de dmonstration trs impressionant du programme ont t faits
cette priode, on peut par exemple citer la synthse de Lair de la reine de la nuit de La
Flute enchante de Mozart12 13 devenu aujourdhui clbre.
CHANT a t adapt pour fonctionner sur diffrentes plateformes jusquen
1992 avec la bibliothque Chant-PW dans PatchWork. A partir de 1995, le programme
PatchWork laissa progressivement place OpenMusic. Chant-PW na jamais t porte dans
ce programme mettant alors fin la dernire version complte de CHANT.
Aprs cette date, la synthse FOF a connu un dsintrt progressif et a t peu
peu oublie. Bien que le synthtiseur CHANT subsiste encore dans des versions simplifies
travers certains programmes comme Max/MSP ou Diphone Studio, on est trs loin des
versions antrieures du programme qui offraient un bien plus grand nombre de possibilits.

10 Institut de Recherche et Coordination Acoustique/Musique


11 BAISNEE, Pierre-Franois, CHANT manual, Document Ircam : Paris, 1985, p. 1.
12 Disponible sur le cd cd/audio/reine-IRCAM.aiff.
13 Interview tlvise de Max Mathews sur la musique assiste par ordinateur, vido disponible sur le cd dans le fichier Mathewsreine.m4v cd/vido et sur le site YouTube ladresse suivante : http://www.youtube.com/watch?v=_15ZQL82P4M (en ligne le
04/09/10).

6
Les solutions offertes par le programme CHANT pour la synthse de la voix
mais aussi pour la synthse de sons en gnral sont toujours dactualit. Ltude et la
comparaison des diffrentes techniques actuellement disponibles dans ce domaine que nous
avons faite montre que les sons produits par la synthse FOF pour limitation de sons de type
voiss font encore partie des meilleurs rsultats disponibles.
PatchWork et OpenMusic sont tous deux des environnements de
dveloppement visuel pour la cration dapplications de composition musicale assiste par
ordinateur 14. Les traitements des informations sy font en temps diffr, tout comme dans le
cas de CHANT.
Il sera donc montr au cours de notre recherche que ces deux programmes sont
assez similaires notamment au niveau de leur architecture. On peut donc imaginer que le
portage de la bibliothque Chant-PW vers OpenMusic peut tre une opration relativement
simple excuter. Ceci rendrait nouveau accessible le programme CHANT ainsi que toutes
ses fonctions.
La synthse de la voix chante par Fonctions dOnde Formantique
techniques, outils existants, exemple dimplmentation et utilisation :
dfinition du sujet
Lappareil phonatoire chez lhomme est la source de la production de la voix
chante. Il est compos dun ensemble dorganes formant un systme complexe permettant la
phonation. Afin de comprendre les modles de synthse visant reproduire des sons de types
vocaux, il est ncessaire de possder une bonne connaissance des diffrents lments de cet
appareil phonatoire. Ainsi, dans un premier temps, une brve description de ce dernier sera
faite dun point de vue anatomique. Il sera galement question de prsenter les diffrentes
interactions entre les lments qui le constituent et de montrer le rle de chaque organe dans
la phonation.
Les recherches dans le domaine de la synthse de la voix chante ont permis la
cration dun nombre consquent de techniques.

14 http://recherche.ircam.fr/equipes/repmus/OpenMusic/index.html Site officiel du programme OpenMusic (en ligne le 04/09/2010).

7
A partir du dbut des annes soixante, la voix chante a t synthtise par
lordinateur. Depuis ces toutes premires expriences, la qualit musicale et le naturel
des voix chantes de synthse a largement t amlior, [].15

La plupart de ces techniques seront prsentes afin dtablir un tat des lieu
du domaine et de les comparer la synthse par Fonctions dOnde Formantique. Cette
dernire fera lobjet dun dveloppement complet dans lequel une description dtaille de son
fonctionnement sera faite. Les diffrents procds de traitement numrique du signal (DSP16)
mis en jeu feront lobjet dune implmentation dans les programmes MATLAB et CSOUND.
Lune des principales implmentations de la synthse par FOF est le
programme CHANT. Un historique de son volution sera dress et son fonctionnement sera
dcrit prcisment. Il sera aussi question de prsenter les diffrents programmes faisant
encore appel lui de faon direct o indirect.
Nous proposerons une solution non exhaustive de r-implmentation de
CHANT dans le programme OpenMusic interfac avec le programme CSOUND qui
effectuera lensemble des taches de traitement numrique du signal relatives la synthse par
Fonction dOnde Formantique. Les codes LISP et CSOUND mis en jeu feront lobjet dune
analyse dtaille.
Enfin, le systme cr sera test travers le clbre exemple de la synthse de
Lair de la reine de la nuit de La flute enchante de Mozart. Nous tenterons dobtenir des
rsultats similaires ceux de lquipe de Xavier Rodet (1984).

15 RODET, Xavier, Synthesis of the Singing Voice : acte du colloque Benelux Workshop on Model Based Processing and Coding of Audio,
Leuven (Belgique), 15/11/2002, Paris : IRCAM, 2003, p. 99, citation traduite de langlais : As soon as the beginning of the 60s, the singing
voice have been synthesized by computer. Since thse first experiments, the musical and natural quality of singing voice synthesis has
largely improved, []. .
16 Digital Signal Processing.

I. Synthse de la voix humaine par


ordinateur

Le robot Miimu de Yamaha chante grce un procd de synthse bas sur la


concatnation et la modification dchantillons (cf. figure 4).

A. Lappareil phonatoire humain


Pour comprendre les caractristiques sonores dun instrument de musique, il
est indispensable dtudier son organologie. La voix humaine, mme si elle a bien dautres
fonctions, peut-tre utilise des fins musicales. On ne parle alors plus au niveau de sa
constitution dorganologie mais danatomie.
Dans ce chapitre, nous allons tenter de mettre en relation les caractristiques
anatomiques de lappareil phonatoire et les proprits du son qui en rsultent.

a)

Anatomie de lappareil phonatoire17


Lappareil phonatoire peut tre divis en trois parties diffrentes : le systme

respiratoire, les cordes vocales et le systme articulatoire.


Le systme respiratoire est principalement constitu des poumons et est reli
aux deux autres parties de lappareil phonatoire par la trache. Les poumons sont eux-mmes
forms de petites cavits appeles alvoles relies la trache par les bronches. Nous verrons
par la suite quils jouent principalement un rle de compresseur dair dans la production de la
voix.
Les cordes vocales, qui par ailleurs ont plutt la forme de plis , sont aussi
appeles plis vocaux . Elles sont constitues de tissus musculaires recouverts de
muqueuses plus ou moins visqueuses. La longueur moyenne des cordes vocales dpend de
lge et du sexe de lindividu. Ainsi, elles mesurent approximativement trois millimtres chez
le nourrisson, neuf treize millimtres chez la femme et quinze vingt millimtres chez
lhomme adulte. Plus les cordes vocales sont longues, plus elles permettent la production de
sons graves.
Comme on peut le voir sur la figure 6, les cordes vocales ont pour point
dorigine la thyrode et sont directement rattaches aux cartilages arytnodes par des
ligaments. Prcisons que la partie externe de la thyrode est parfois visible chez certains sujets
males lge adulte et est plus communment appele la pomme dAdam . Lespace entre
les cordes vocales est appel glotte.

17 SUNDBERG, Johan, The Science of the Singing Voice, Dekalb (Illinois) : Northern Illinois University Press, 1987, p. 6-8.

10
Les cartilages arytnodes sous laction des muscles crico-arytenodiens et
inter-arytenodiens jouent un rle primordial dans la production de la voix. En effet, ils
ouvrent ou ferment la glotte en mettant en contact les deux cordes vocales qui mettent alors
un son (figure 7). Laction de fermeture de la glotte est appele adduction et laction
douverture abduction. De ce fait, ces deux mouvements permettent ou non lmission de son
par les cordes vocales. Les sons vocaux tels que les voyelles qui sont produits lors dune
adduction sont dits voiss . A linverse, les sons produits lors dune abduction sont dits
non-voiss . Par exemple, lorsque nous prononons le mot casser , les cordes vocales
sont adductes jusqu larrive sur le son /s:/ o elles deviennent donc abductes.
Les cordes vocales ne sont pas le seul organe apte produire du son dans
lappareil phonatoire. En effet, il est possible de distinguer une autre paire de membranes se
trouvant quelques millimtres au dessus des cordes vocales appeles bandes
ventriculaires .
La courte section de lappareil phonatoire dcrite prcdemment est appele le
larynx. De faon schmatique, il stend de la glotte jusqu la partie infrieure de lpiglotte
et mesure entre un et deux centimtres. Il est directement insr dans un tube plus long et plus
large appel pharynx.
Cest la partie infrieure du larynx que lon trouve le cartilage cricode qui
permet louverture ou le fermeture de la trache et de lsophage. Ainsi, lors de la phonation,
lsophage est ferm et la trache ouverte, lors de lingestion daliments, lsophage est
ouvert et la trache ferme.
Le systme articulatoire constitue la partie terminale de lappareil phonatoire.
Il stend de la zone suprieure du larynx jusquaux lvres. Il est constitu dans sa partie
infrieure de la langue, des dents et des lvres infrieures. On trouve dans sa partie suprieure
le palais, la cavit nasale, les sinus, les dents et les lvres suprieures. La cavit nasale est
relie la partie antrieure de la bouche par un conduit qui peut-tre ouvert ou ferm par la
luette (ouvert dans le cas de la respiration, ferm dans le cas de lingestion). Toutes les
donnes anatomiques prsentes prcdemment sont schmatises dans la figure 5.

11

Fig. 5 Vue densemble de lappareil phonatoire chez lHomme.18

Fig. 6 Les diffrents cartilages du larynx.19


18 Ibid., p. 8.
19 Ibid., p. 8.

12

Fig. 7 Adduction et abduction des cordes vocales.20


La description de lappareil phonatoire qui vient dtre faite reste assez
schmatique. Les organes qui le constituent ont une taille trs rduite et sont particulirement
complexes. La configuration gnrale de ce systme dpend dun nombre trs important de
paramtres qui influent sur la nature des sons produits.

Mcanismes de production de la voix21

b)

Dans le chapitre prcdent, les diffrents lments de lappareil phonatoire ont


t dcrits dun point de vue anatomique. Dans cette partie, le rle et le fonctionnement du
systme respiratoire et vocal dans la production de la voix vont tre expliqus.
o Fonctionnement global du systme phonatoire
Dun point de vue physiologique, chacun des systmes prsents
prcdemment joue un rle important. De manire schmatique, les poumons forment un
compresseur crant un flux dair envoy aux cordes vocales par lintermdiaire de la trache.

20 Ibid., p. 8.
21 Ibid., p. 9-18.

13
Le son mis par les cordes vocales qui rentrent alors en vibration sous linfluence des
cartilages arytnodes est appel source vocale. Il est ensuite achemin jusquau systme
articulatoire qui joue un rle de rsonateur modifiant la nature du son produit. Ces
mcanismes complexes seront dcrits plus en dtail dans la partie (c) de ce chapitre.
Techniquement parlant, le systme vocal gnral peut donc tre rsum de la faon suivante :
un compresseur (les poumons) alimentant un oscillateur (les cordes vocales) filtr par des
filtres rsonants (la cavit buccale) comme le rsume le schma suivant :
Fonction

Compresseur

Oscillateur (source)

Rsonateur

Organe

Poumons

Cordes vocales

Systme articulatoire

Activit

Respiration

Phonation

Articulation

Facteurs
majeurs

Muscles de
labdomen et
diaphragme

Muscles du
larynx

Lvres,
langue et
joues

Fig. 8 Diagramme reprsentant les trois fonctions principales du systme phonatoire sous
diffrents points de vue Inspir du diagramme de Johan Sundberg

22

o Cration du signal de la source vocale


Un son est un signal acoustique variant au cours du temps compos de
variations minuscules et rapides de la pression de lair. Dans le cas prsent, ces variations sont
cres par les cordes vocales. Lorsque le flux dair gnr par les poumons passe entre les
deux cordes vocales qui sont alors en position adducte, elles souvrent et se ferment de faon
trs rapide et alternative dcoupant le flux dair en une succession dimpulsions formant un
signal acoustique (figures 9 et 10). Ce cycle tant rpt n fois par secondes, n dtermine la
frquence f0 exprime en Hertz de la fondamentale du son gnr. Ainsi, lorsquun tnor
chante un LA une frquence de 220Hz, les cordes vocales souvrent et se ferment 220
fois par seconde. On peut noter que la notion dimpulsion est trs importante dans la
comprhension de la mthode de synthse par Fonctions dOnde Formantique qui sera
prsente en dtail dans le chapitre II.

22 Ibid., p. 10.

14

Fig. 9 Cycle douverture et de fermeture des cordes vocales lors de la phonation.23

Fig. 10 Reprsentation schmatique dune impulsion cre par louverture puis la fermeture des
cordes vocales.

24

o Contrle de la frquence de vibration des cordes vocales


Dans tout langage et pour la voix chante, il est primordial dtre en mesure de
modifier sa frquence de phonation. Pour ceci, deux paramtres doivent tre pris en compte :
la pression du flux dair gnr par les poumons et la tension des cordes vocales. Plus la
pression du flux dair est importante, plus la frquence de phonation aura une valeur leve et
plus lamplitude du son gnr sera forte. Il faut toutefois prciser que linfluence de la
pression du flux dair sur la frquence du son mis reste assez minime. La longueur et donc la

23 http://fr.wikipedia.org/wiki/Fichier:Vocal_fold_animated.gif (en ligne le 04/09/2010).


24 SUNDBERG, Johan, op. cit., p. 11.

15
tension des cordes vocales est donc le paramtre le plus important dans la dtermination de
leur frquence de vibration.
En effet, plus les cordes vocales sont longues et fines plus elles produisent un
son aigu et vice-versa. La longueur des cordes vocales est contrle par la distance entre les
points dorigines de leurs extrmits : la tyrode et le cartilage arytnode sous linfluence des
muscles crico-thyrodiens.
Enfin, il est important de noter que lorsquun chanteur excute un crescendo en
se maintenant sur la mme note, il ajuste progressivement et de faon inconsciente la
longueur de ses cordes vocales afin dviter que sa frquence de phonation augmente.
o Les autres gnrateurs de son du systme phonatoire
Comme cela a t nonc prcdemment, les cordes vocales ne permettent de
gnrer que des sons voiss priodiques comme les voyelles. Or la plupart des langages
chez lHomme comportent galement des sons apriodiques tels que les consonnes. De ce
fait, dautres parties du systme vocal peuvent jouer un rle de source sonore.
Lorsque le flux dair provenant des poumons est propuls au travers de petits
espaces trs restreints o il est comprim puis libr de faon subite, il devient turbulent et on
observe alors la cration dun signal acoustique de type bruit. A la diffrence du son produit
par les cordes vocales, celui-ci est apriodique. Dun point de vue phontique, ce type de son
est assimil ceux des consonnes.
Il existe donc deux grand type de consonnes : les consonnes occlusives qui sont
produites lors dune ouverture rapide de la bouche et les consonnes continues rsultant du
passage du flux dair provenant des poumons dans un espace restreint (sons fricatifs, latraux
et vibrants).
Les dix-huit consonnes de la langue franaise peuvent tres classes de la
manire suivante :

16

Mode
darticulation

A:
consonnes
laryngales

B:
consonnes
pharyngales

/:/, /:/,
/:/ et
/:/

/h:/ et
/:/

Occlusives
Fricatives

C:
consonnes
uvulaires
/q:/ et
/:/
/:/
/:/

Nasales
Spirantes
latrales

Points darticulation
D:
E:
consonnes consonnes
vlaires
palatales
/g:/ et /k:/
/c:/ et /:/

F:
consonnes
alvolaires
/d:/ et /t:/

G:
consonnes
dentales
/t:/ et /d:/

H:
consonnes
labiales
/b:/ et /p:/

/x:/ et /:/

/:/ et /:/

/z:/, /s:/,
/:/ et /:/

/:/ et /:/

/v:/ et /f:/

/:/
/:/

/:/
/:/

/n:/
/|:/

/n:/
/l:/

/m:/

Fig. 11 Classement des consonnes de la langue franaise (en orange) et de quelques autres
25 26 27
langues europennes (en bleu) en fonction de leurs points et de leurs modes darticulation.
Afin de mieux comprendre le tableau donn prcdemment, il est ncessaire de
donner quelques exemples concrets :

Si lon prononce le son /f:/ que lon retrouve au dbut du mot fantme, une minuscule
fente est cre entre la lvre infrieure et les incisives suprieures.

Un autre gnrateur de bruit peut aussi tre cr entre la partie antrieure de la langue
et la luette. Il peut servir gnrer des sons comme /:/ que lon retrouve au dbut du
mot ronronner .

Des sons de type apriodique peuvent aussi tre produits au niveau des cordes vocales
en position abducte comme dans le cas de chuchotements. Elles sont alors tellement
tendues quelles nentrent pas en vibration mais lespace cr est si troit quil
engendre des turbulences dans le flux dair en provenance des poumons gnrant ainsi
du bruit.

25 http://fr.wikipedia.org/wiki/wiki/Fichier:Places_of_articulation.png (en ligne le 06/06/2010).


26 BOITE, Ren, Traitement de la parole, Lausanne : Presses polytechniques et universitaires romandes, 2000, p.15-16.
27 http://weston.ruter.net/projects/ipa-chart/view/ Site officiel de lalphabet phontique international (en ligne le 04/09/2010).

17
Dans cette partie, la plupart des sources sonores du systme phonatoire ont t
prsentes. Elles permettent la cration dune importante palette de sons diffrents qui
constituent en partie la phontique dun langage donn. Pour diversifier encore plus ces sons
et en particulier ceux produits par les cordes vocales, lHomme utilise sa cavit buccale
comme rsonateur. La partie suivante est consacre ltude du systme articulatoire de
lappareil phonatoire.

c)

De la source sonore au son peru :


larticulation28
Dans le cas o plusieurs individus mettent une mme note, il est reconnu que

la voix de chacun dentre eux est diffrente. Or, les recherches dans ce domaine montrent que
le son produit par les cordes vocales ne diffre que peu dun individu un autre. Ainsi, les
caractristiques sonores qui nous sont propres ne proviennent pas seulement de la nature de
nos cordes vocales mais aussi de la configuration de notre cavit buccale.
o Les formants
Les thories de lacoustique montrent que les sons priodiques peuvent tre
dcompos en un ensemble de sons sinusodaux appels partiels ayant chacun une frquence
diffrente. Pour un son priodique donn, le partiel dont les frquences de tous les autres sont
multiples est appel la fondamentale et se note f0. Celle-ci dtermine la note perue lors de
lmission dun son. Les partiels multiple de f0 sont dits harmoniques .
Les cordes vocales mettent un son trs riche du point de vue spectral. Ce son
est achemin jusqu la cavit buccale qui va le modifier en amplifiant certains de ces
harmoniques en les faisant rsonner , do le terme rsonateur utilis prcdemment.
Les bandes de frquences amplifies sont appeles formants.
Le concept de formant est primordial dans le systme vocal dans la mesure o
ils dterminent en grande partie le timbre de la voix dun individu donn ainsi que le type de
voyelle chante.

28 Ibid., p. 19-24.

18

Fig. 12 Filtrage du son mis par les cordes vocales dans le systme articulatoire.29
o Les articulateurs
Il est maintenant important dintroduire la notion darticulateur. En effet,
chaque organe constituant le systme articulatoire joue un rle dans la modification du son
mis par les cordes vocales. Ainsi, les articulateurs sont la mchoire, la langue, la luette et le
larynx.
Les frquences des formants dpendent donc principalement de la forme et de
la taille de la cavit buccale qui peuvent tre modifies par les articulateurs. La taille est
dfinie par la distance entre les lvres et la glotte. Ainsi, la cavit buccale peut-tre
schmatise par une courbe sur laquelle laxe des abscisses reprsente la distance depuis les
lvres jusqu la glotte et laxe des ordonnes la taille de lespace prsent un endroit donn :

29 BELANGER, Olivier, Analyse, synthse et traitement des sons,


http://cours.musique.umontreal.ca/mus1321/Notes_de_cours/Csound_06_Voix.html (en ligne le 09/04/2010).

19

Fig. 13 Reprsentation graphique du systme articulatoire pour les sons /i:/ et /u:/.30
La taille de la cavit buccale peut-tre modifie de deux faons diffrentes. Il
est tout dabord possible dallonger la bouche en poussant les lvres vers lextrieur. Le
larynx peut galement tre dplac. Ces deux actions se font de faon trs naturelle lorsque
lon parle, de plus, la position du larynx dpend aussi fortement de la frquence du son
produit.
Le principal effet de lallongement de la cavit buccale est labaissement de la
frquence de tous les formants. On peut donner en exemple le son /i:/ qui devient /y:/ lorsque
les lvres sont pousses vers lextrieur.
La forme globale de la cavit buccale joue aussi un rle important dans la
dtermination du timbre de la voix et des voyelles prononces. Elle peut-tre modifie dun
trs grand nombre de faons. La langue tout dabord, peut tre aplatie ou arrondie. Elle peut
aussi tre enfle vers lavant (son /i:/) ou vers larrire (son /u:/).
La luette peut tre releve ou dtendue. Dans ce dernier cas, le son est envoy
vers la cavit nasale qui comme la cavit buccale fait office de rsonateur. Les sons produits
dans de telles conditions sont dits nasaux .
En plus dtre dplac, le larynx peut aussi facilement changer de forme en
particulier grce la grande mobilit des cartilages arytnodes.
o Le rle de chaque formant

30 SUNDBERG, Johan, op. cit., p. 21.

20
Bien que le nombre de formants gnrs par le systme articulatoire soit trs
important, les cinq premiers dentre eux suffisent dfinir trs prcisment les voyelles
prononces et le type de voix peru.
Le premier formant est particulirement sensible au taux douverture de la
mchoire. En effet, plus celle-ci est ouverte, plus il aura une frquence leve, comme pour le
son /:/ prsent dans le mot papa par exemple.
La frquence du second formant change principalement en fonction de la forme
de la langue. Dans le cas o celle-ci se rtracte vers larrire de la cavit buccale, la frquence
prend des valeurs trs leves comme cest le cas pour /u:/ que lon retrouve par exemple dans
le mot douche . A linverse, si la langue est pousse vers lavant de la bouche se
rapprochant alors du palais, le second formant est abaiss.
De manire gnrale, ces deux premiers formants permettent de dterminer la
plupart des voyelles comme cela est montr dans la figure 14.
A titre indicatif, le premier formant varie gnralement entre 250 et 1000 Hz
chez lhomme adulte, le second entre 600 et 2500 Hz et le troisime entre 1700 et 3500 Hz.
Les autres formants sont beaucoup moins mobiles que les trois premiers et leur frquence
dpend principalement de la longueur de la cavit buccale. Ceci implique que leur valeur
varie aussi en fonction du sexe de lindividu et de son type de voix dans le cas de chanteurs :
basse, tnor, contre-tnor, alto, soprano, etc. Enfin, elles contribuent aussi fortement la
notion de beaut dans la perception de la voix. Un chanteur entrain est capable de mettre
en valeur certaines composantes du spectre de la source sonore des fins esthtiques.31
Pour finir, il est important de prciser que la rsonnance de la cavit buccale
peut-tre traduite mathmatiquement sous la forme dune fonction de transfert telle que celle
prsente dans la figure 12 (rsonance du conduit vocal).

31 Ibid., p. 146-147.

21

Fig. 14 Diffrentes voyelles de la langue anglaise en fonction des deux premiers formants.32

Fig. 15 Positions des voyelles de la langue franaise en fonction des deux premiers formants
Adaptation des analyses de Ren Boite.

33

o La notion de diphone
Comme cela a t prsent dans le paragraphe (I)-(A)-(b), les langages sonores
chez lHomme sont composs dun ensemble de sons. Ces sons sont combins et enchans de
faons diffrentes en fonction de ce que lindividu qui les prononce veut faire comprendre.

32 http://www.ncvs.org/ncvs/tutorials/voiceprod/tutorial/filter.html Site internet du National Center for Voice and Speech (NCVS), page de
tutoriaux sur la productions de la voix (en ligne le 04/09/2010).
33 BOITE, Ren, op. cit., p.16.

22
La notion denchanement de sons dont il est ici question permet dintroduire le
concept de diphone. Un diphone est un enchanement de deux sons stables (phonmes) avec
une priode dinstabilit entre les deux. Le nombre de diphones Q dans un langage est
proportionnel son nombre de phonmes P selon la rgle suivante : Q = P2. La valeur de Q
donne par la formule prcdente reste toutefois thorique dans la mesure o tous les
phonmes dun langage donn ne sont pas autoriss senchaner les uns avec les autres,
certaines rgles devant tres respectes.
Le programme de synthse Diphone Studio34 dvelopp par lIRCAM permet
de reprsenter graphiquement les successions de diphones dans une phrase de la manire
suivante :

Fig. 16 Enchanement de deux sons stables avec diphone dans le programme Diphone Studio.

Les diffrentes interactions entre les organes constituants le systme phonatoire


autorisent la production dun nombre trs vari de sons. Ainsi ltude de limplication de
chaque organe dans la production de la voix peut permettre la cration de modles physiques
pouvant servir sa synthse. Dans le chapitre suivant, les diffrentes techniques de
reproduction de la voix humaine imagines depuis les annes soixante mettant en application
les informations donnes prcdement vont tre prsentes.

34 http://forumnet.ircam.fr/703.html Site internet officiel du programme Diphone Studio dvelopp par lIRCAM (en ligne le 04/09/2010).

23
La synthse numrique de la voix humaine est un domaine de recherche qui a
suscit un intrt important lors de la deuxime moiti du XXe sicle et en particulier dans les
annes soixante-dix et quatre-vingt. Ainsi, un grand nombre de techniques, trs diffrentes les
unes des autres ont vu le jour.
Les domaines dapplication de ces techniques ont t alors trs nombreux. En
effet, en dehors des utilisations musicales qui sont dailleurs peut-tre les moins connues du
grand public, la voix de synthse est un lment qui fait aujourdhui partie intgrante de nos
vies. On la retrouve aussi bien sur les botes vocales de nos tlphones cellulaires que dans les
gares ou les transports en commun.

24

B. Modles physiques bass sur la simulation de


tubes acoustiques de lappareil phonatoire :
lexemple du systme SPASM (Singing
Physical Articulatory Synthesis Model)

a)

Fonctionnement des tubes acoustiques de


lappareil phonatoire
Un modle physique vise reproduire mathmatiquement les diffrents

lments constitutifs dun systme donn. Dans le cas du systme phonatoire, cette tche se
rvle tre particulirement ardue.
Le systme phonatoire peut-tre schmatis par un tube dune longueur et
dune forme donne pouvant tre apparent dautres instruments de musique comme ceux
de la famille des cuivres. On parle alors de tube acoustique. Il est nanmoins important de
prciser que sa forme est beaucoup plus complexe que ces derniers et varie au cours du temps.
La longueur dun tube acoustique simulant lappareil phonatoire tant
significativement bien plus importante que sa largeur, il est possible de rsoudre lquation de
la forme donde en ne considrant quune seule dimension.
Les tubes acoustiques de lappareil phonatoire sont en rgle gnrale modliss
par une succession de cylindres dont la taille est gale la distance parcourue par londe
sonore en une priode t o t correspond la priode de la frquence dchantillonnage
utilise. Sur la figure 17, (a) reprsente la modlisation sous forme de tube acoustique faite du
systme phonatoire et (b) la version discrte constitue de cylindres :

Fig. 17 Modlisation physique sous forme de tube acoustique de lappareil phonatoire.35


35 https://ccrma.stanford.edu/~bilbao/master/node5.html Page du cours The Kelly-Lochbaum Digital Speech Synthesis Model de Stefan
Bilbao au CCRMA de Stanford (en ligne le 04/09/2010).

25

Cette technique fut lune des premires utilises pour la synthse de la voix. En
effet, la premire version de tube acoustique modlisant lappareil phonatoire fut cre en
1962 par John Kelly et Carol Lochbaum36. Elle ne fut jamais rellement utilise dans la
mesure o elle tait trop couteuse en calcul pour les machines de lpoque.
Les touts premiers projets concernant la musique assiste par ordinateur aux
laboratoires Bell la fin des annes cinquante donnrent naissance un certain
nombre de systmes pour la synthse de la parole capable de chanter tel que le modle
par tube acoustique de Kelly et Lochbaum (1962). Il amenait les prmices des
modles physiques. A cette poque, la puissance de calcul demande pour le faire
fonctionner tait telle quil tait impossible de le commercialiser en tant que
synthtiseur pour la parole. Une utilisation pour la composition musicale tait aussi
inenvisageable cause des cots de fonctionnement.37

Ce modle fut amlior par la suite par Perry Cook qui cra le systme SPASM
38

en 1992 .

b)

Le systme SPASM (Singing Physical


Articulatory Synthesis Model) de Perry Cook39
Le systme SPASM est principalement bas sur la technologie WGF

(WaveGuide Filter) des guides dondes dveloppe par Julius Smith40. Elle permet de
modliser efficacement la partie articulatoire du systme vocal qui est alors contrle
directement par des paramtres dcrivant sa forme comme cela est montr dans la figure 18.

36 KELLY, John ; LOCHBAUM, Carol, Speech synthesis : actes du Fourth International Congress on Acoustics, Copenhagen, septembre
1962.
37 COOK, Perry-Raymond, SPASM, a Real-Time Vocal Tract Physical Model Controller ; and Singer, the Companion Software Synthesis
System , Computer Music Journal, XVII (1993), n 1, p. 38, citation traduite de langlais : The earliest computer music project et Bell
Labs in the late 1950s yielded a number of speech synthesis systems capable of singing, one being the acoustic tube model of Kelly and
Lochbaum (1962). This model was actually considered too computationally expensive for comercialization as a speech synthesiser, and too
expensive to be practical for musical composition. .
38 Ibid., p. 30-44.
39 Ibid., p. 30-44.
40 SMITH, Julius, Musical Application of Digital Waveguides, Stanford University Center for Computer Research in Music an Acoustics :
Stanford Publication STAN-M-39, 1987.

26

Fig. 18 Reprsentation du systme articulatoire ralise avec le systme SPASM pour trois
41

voyelles diffrentes.

Comme on peut le voir ci-dessus, SPASM inclut galement la cavit nasale


son modle du systme articulatoire ce qui ntait pas le cas pour le tube acoustique de John
Kelly et de Carol Lochbaum. Celle-ci peut donc tre relie au tube acoustique ou non en
fonction de la position de la luette (releve ou abaisse) exactement comme cela a t montr
dans le paragraphe (I)-(A)-(c). Pour les trois voyelles prsentes dans la figure 18, la luette est
en position releve, ce qui implique que la cavit nasale nest pas prise en compte dans le
calcul du son.
La source vocale qui est donc passe dans le tube acoustique est cre partir
dun ensemble de tables de fonctions possdant des formes dondes diffrentes en fonction du
type de voix dsir. La frquence de ces tables de fonctions peut tre module afin de crer un
vibrato.
Il est aussi important de prciser que du bruit filtr peut tre ajout au son
priodique de la source vocale afin de reproduire les turbulences gnres lors du passage du
flux dair travers les cordes vocales.
Enfin, une autre source de bruit filtr peut-tre utilise pour reproduire les sons
de type fricatifs crs lors de la prononciation de consonnes par exemple.
Ce modle de synthse est particulirement intressant puisquil permet de
traiter le problme la source . Plus une modlisation physique est prcise, plus elle

41 COOK, Perry, op. cit., p. 33.

27
permet dobtenir des rsultats proches de la ralit. Le principal inconvnient de ce type de
technique est sa complexit et donc le grand nombre de paramtres utiliss.

28

C. Techniques de synthse spectrales


Les techniques dcrites prcdemment visent reproduire un son naturel en
tudiant les proprits physiques du systme qui le produit dans le but de les modliser par
des formules mathmatiques.
Un autre type de technique de synthse appele synthse spectrale passe
par lanalyse du spectre du son naturel synthtiser. Dans ce cas, il nest donc plus question
de reproduire la source dun son, mais le son lui mme avec toutes ses caractristiques.
Dans ce chapitre, les diffrentes techniques de synthse spectrale utilises pour
la synthse de la voix vont tre prsentes.

a)

La modulation de frquence et limportance


du vibrato et des micros fluctuations de la
fondamentale42 43
La synthse par modulation de frquence est aujourdhui vritablement

devenue lgendaire. Elle fut invente en 1973 par John Chowning et a totalement
rvolutionn et dmocratis lutilisation de la synthse sonore dans la musique.
Sa popularit est certainement due au grand nombre davantages quelle offre
son utilisateur. En effet, sa simplicit, son nombre restreint de paramtres, la richesse des sons
quelle permet de produire ainsi que la dynamique de leur spectre linstar des sons naturels
furent et sont toujours ses principaux atouts.
o Technique de synthse par modulation de frquence
Un synthtiseur FM44 ncessite au moins deux oscillateurs. La frquence de
lun, que lon appelle le porteur , est module par lautre : le modulateur . La frquence
du modulateur est appele frquence de modulation et son amplitude, index de
modulation .

42 CHOWNING, John, Frequency Modulation Synthesis of the Singing Voice , Current Directions in Computer Music Research, d.
sous la direction de Max Mathews et John Pierce, Cambridge : The MIT press, p. 57-64.
43 CHOWNING, John, Interview Enregistre, Centre Interdisciplinaire dEtude et de Recherche sur lExpression Contemporaine (CIEREC),
St Etienne, 09/11/2009, enregistrement disponible sur le CD cd/audio/interview-chowning.m4a.
44 Frequency Modulation.

29
Si la frquence du modulateur est infrieure 20Hz, les modulations sont
perceptibles dans le son crant ainsi un effet de vibrato. Au dessus de 20Hz, notre cerveau
nest plus capable de diffrencier chaque variation, on observe alors la formation de partiels
harmoniques ou non autour de la frquence du porteur (figure 20).
La figure 19, prsente le circuit et la formule pour limplmentation dun
synthtiseur par modulation de frquence de base.

Fig. 19 Synthtiseur par modulation de frquence Daprs un document PowerPoint obtenu lors
de linterview de John Chowning

45

Fig. 20 Spectre typique cr par un synthtiseur FM avec un index de modulation de 1 Daprs


un document PowerPoint obtenu lors de linterview de John Chowning

45 CHOWNING, John, Interview Enregistre, op. cit.


46 CHOWNING, John, Interview Enregistre, op. cit.

46

30
o Synthse par modulation de frquence applique la synthse de
la voix
En 1979, John Chowning mit au point une version particulire de son
synthtiseur capable de reproduire des sons de type voiss tels que des voyelles. Le modle de
synthse reste particulirement simple et offre des rsultats surprenants. Un nombre de
porteur gal au nombre de formants dsirs est utilis. Leurs frquences et leurs amplitudes
doivent avoisiner celles des formants. Ces porteurs sont moduls par le mme oscillateur dont
la frquence est gale celle de la fondamentale f0 tel quil lest montr dans la figure 21.

Fig. 21 Synthtiseur vocal par modulation de frquence Daprs un document PowerPoint


obtenu de linterview de John Chowning

47

Importance du vibrato
Une autre grande dcouverte de John Chowning dans le domaine de la

synthse de la voix concerne limportance du vibrato de la frquence de la fondamentale. En


effet, un systme comme celui prsent dans la figure 21 produit un son qui nest pas
forcment rattachable celui de la voix. Ceci est d au phnomne de source segregation ,
selon les propres termes de John Chowning.
Prenons lexemple dun son compos de huit partiels dont les frquences ne
changent pas au cours du temps, du mme type que ceux productibles par le synthtiseur de la

47 CHOWNING, John, Interview enregistre, op. cit.

31
figure 21. Un tel son parat trs lectrique loreille et peut difficilement tre apparent
celui dune voix. En revanche, si la frquence de chacun des harmoniques est lgrement
module par un mme oscillateur dont la frquence est trs basse (8Hz environ en rgle
gnrale), on observe alors un phnomne de fusion des harmoniques qui rend le son
semblable celui dune voix humaine.
Lexemple sonore contenu dans le fichier FM.aif48 permet de comprendre ce
phnomne. Lors des cinq premires secondes, il est compos dun seul harmonique : la
fondamentale. Par la suite, huit autres harmoniques sont ajouts, il est alors impossible
dapparenter ce son celui dune voix humaine. Enfin, partir de la onzime seconde, les
harmoniques sont moduls une frquence de huit Hertz avec un ratio de six pour cent, on
entend une voix de femme.
o Importance des micros fluctuations de la fondamentale f0
Les sons priodiques produits par les cordes vocales ne sont pas totalement
parfaits et nont donc pas une frquence fixe lors du maintien dune note. En effet, ltude du
spectre des sons vocaux permet de montrer que la frquence de la fondamentale et des
diffrents harmoniques dune note chante et maintenue varie de faon infime et alatoire au
cours du temps49.
o Modle avanc pour la synthse de la voix par modulation de
frquence
Lors de la conception de son systme de synthse vocale par modulation de
frquence, John Chowning a pris en compte ces diffrents facteurs et a donc ajout un
systme de variation de la fondamentale la fois priodique (vibrato) et alatoire
(microvariations de la voix) tel quil lest montr dans la figure 22.
Ce modle de synthse fut utilis par John Chowning dans Phon50

51

qui souligne

limportance du vibrato dans la perception de sons vocaux.

48 Disponible sur le cd cd/audio.


49 SUNDBERG, Johan, The Science of the Singing Voice, Dekalb (Illinois) : Northern Illinois University Press, 1987.
50 GAYOU, Evelyne, John Chowning : portraits polychromes, Paris : INA, 2005.
51 http://mediatheque.ircam.fr/sites/voix/creer/phone.html Prsentation et analyse de Phon de John Chowning (en ligne le 04/09/2010).

32

Fig. 22 Synthtiseur vocal par modulation de frquence avec modulation priodique et apriodique
de la frquence du fondamental et des diffrents formants Daprs le PowerPoint de John Chowning
52
obtenu lors de son interview

b)

Analyse FFT et re-synthse : le modle


additif53 54
Comme cela a t montr dans (I)-(A)-(b), les sons produits par lappareil

phonatoire, tout comme ceux de nimporte quel autre instrument de musique sont composs
de partiels, cest dire quils peuvent tre dcomposs en une somme de signaux sinusodaux
de frquences, damplitudes et de phases diffrentes. Ils nous permettent sur le plan
perceptuel de distinguer le timbre de chaque instrument et par consquent didentifier les sons
qui nous entourent.
Le modle additif imagin par Robert McAulay et Thomas Quatieri en 198655,
consiste modliser un son par une collection de trajets sinusodaux. Un trajet dcrit les

52 CHOWNING, John, Interview Enregistre, op. cit.


53 COOK, Perry-Raymond, Singing Voice Synthesis : History, Current Work, and Future Directions , op. cit., p. 40.
54 MAC AULAY, Robert ; QUATIERI, Thomas, Speech Analysis/Synthesis Based on a Sinusoidal Representation , Transaction on
Acoustics, Speech and Signal Processing, XXXIV (1986), n4, p. 744-754.
55 Ibid.

33
variations dans le temps de lamplitude, de la phase et de la frquence dune composante
sinusodale du signal audio analys.56
Dans un premier temps, on procde une analyse FFT57 du signal resynthtiser. Cette tape consiste effectuer la transforme de Fourier du signal, fentre par
une fentre glissant dans le temps. Lanalyse est donc rpte sur le signal temporel toutes les
t priodes.
Par la suite, le trajet des diffrents partiels est dtect. Pour ceci, il est dabord
ncessaire dextraire pour chacune des t analyses un mme nombre maximal de partiels. Deux
techniques peuvent alors tre utilises :

Lanalyse harmonique : la frquence de la fondamentale f0 est dabord estime, puis,


une sinusode pour chaque multiple de f0 est extraite.

Lanalyse non harmonique : les pics sinusodaux de plus fortes amplitudes sont
slectionns.
Les paramtres supposs correspondre une mme sinusode sont ensuite

connects. Idalement, seulement les pics sinusodaux sont slectionns (il peut y avoir
confusion entre des pics de sinusodes et des zones bruites) et il est fait abstraction des
sinusodes qui ne correspondent pas un trajet. Il est galement ncessaire de prendre en
compte lapparition et la disparition ventuelle de partiels au cours du temps.
Avant de re-synthtiser le son, il est possible de modifier les paramtres issus
des diffrentes tapes danalyse prcdentes dans le but de transposer, dacclrer ou de
ralentir le son dorigine.
La dernire tape consiste enfin re-synthtiser le son en utilisant la technique
de la synthse additive.

56 CHAMPION, Gal, Application du modle additif shape invariant pour la transformation de la voix, Mmoire de stage de DEA
ATIAM, Universit Paris VI, 2004.
57 Fast Fourier Tranform.

34

Fig. 23 Analyse FFT et synthse additive.


Le modle de Robet MacAulay et de Thomas Quatieri ici prsent reste assez
basique et ntait pas forcment orient vers une utilisation pour la synthse de la voix. En
effet, il ne fonctionnait que pour des sons de type harmonique rendant alors impossible la resynthse des sons apriodiques des consonnes.
Il a t amlior plus tard par dautres quipes de recherche. On peut notament
citer les travaux de Xavier Serra et Julius Smith58 qui y ont ajout un module de
dcomposition stochastique (technique appele SMS59). Dans ce cas, une phase
supplmentaire est ajoute ltape danalyse qui spare les sons priodiques, qui sont
synthtiss avec la technique prsente ci-dessus, des sons apriodiques (on parle alors de
rsidu). Ces derniers sont re-synthtiss grce une source de bruit filtre.

c)

Analyse et synthse par prdiction linaire


(Linear Predictive Coding)60 61
Une autre technique fonctionnant sur le modle analyse/synthse est la

synthse par prdiction linaire aussi appele LPC (Linear Predictive Coding). Cest lune des
techniques les plus utilises pour la synthse de la parole. Celle-ci part du principe quun
signal vocal est produit par une source connecte un tube dont la forme varie au cours du
temps (filtre) auquel sajoute doccasionnels sons apriodiques (consonnes).
Elle passe dans un premier temps par une tape danalyse du son synthtiser.
Celle-ci consiste prdire la valeur dun chantillon donn en se basant sur celles des

58 SERRA, Xavier ; SMITH, Julius, Spectral Modeling Synthesis: a Sound Analysis/Synthesis System Based on a Deterministic plus
Stochastic Decomposition , Computer Music Journal, XIV (1990), n 4, p. 12-24.
59 Sound Modeling Synthesis.
60 COOK, Perry-Raymond, Singing Voice Synthesis : History, Current Work, and Future Directions , op. cit., p. 39.
61 ATAL, Bishnu, Speech Analysis and Synthesis by Linear Prediction of the Speech Wave , Journal of the Acoustical Society of
America, XLVII (1971), n65(A), p. 637-645.

35
chantillons prcdents. Dans le cas dun son vocal, le but est destimer la valeur de chaque
formant un instant donn et de supprimer leurs effets sur le son analys. On parle alors de
filtrage inverse (inverse filtering). Le son produit lors de cette opration est appel rsidu. La
dernire phase de cette tape danalyse consiste estimer lintensit et la frquence du rsidu.

Fig. 24 Analyse par prdiction linaire dun son vocal Les tapes obligatoires sont reprsentes
par les rectangles bleus, les tapes facultatives par les rectangles oranges.

La synthse effectue partir de cette analyse est alors trs simple mettre en
place. En effet, la rponse du filtre agissant sur la source vocale tant connue, il suffit de
lappliquer sur le signal cr par un gnrateur dimpulsions produisant un son semblable
celui des cordes vocales dont les paramtres sont la frquence et lintensit calcules partir
du rsidu (dans le cas o lon souhaite re-synthtiser le son dorigine). Pour les sons vocaux
de type fricatif, le gnrateur dimpulsion est remplac par un gnrateur de bruit.
Le son mis lors de la parole tant dynamique et changeant de faon constante,
il est ncessaire de reproduire les oprations prcdentes n fois par seconde (gnralement,
2n6).
Ce modle de synthse peut tre rsum de la faon suivante :

Fig. 25 Synthse dun son vocal par prdiction linaire.

36
Lexamen de la figure prcdente permet immdiatement de faire une parent
indirecte entre la technique de synthse par prdiction linaire et un modle physique de
lappareil phonatoire tel que celui prsent dans (I)-(B)-(a).
Le fait que cette technique parte du principe que le systme phonatoire est
linaire est un de ses principaux inconvnients. En effet, certains effets arodynamiques ainsi
que certaines mises en rsonance des cordes vocales peuvent amener lapparition de
comportements non linaires du son qui ne peuvent donc pas tre perus par lanalyse.
La LPC a t abondamment utilise dans la musique techno dans les annes
quatre-vingt-dix o des sons dinstruments de musique taient utiliss pour remplacer le
gnrateur dimpulsions du systme dcrit prcdemment. Ainsi, les proprits spectrales du
son vocal analys (formants, etc.) taient appliques au sons dinstruments utiliss.
Le champ dapplication de la LPC dpasse celui de la synthse sonore. En
effet,

cette

technique

est

galement

fortement

utilise

dans

le

domaine

des

tlcommunications pour la compression des signaux vocaux. Elle est par exemple utilise
dans le standard GSM62.

62 Global System for Mobile.

37

D. Techniques de synthse bases sur la


concatnation dchantillons
Une autre manire de reproduire de faon artificielle des sons naturels est
lutilisation de techniques dchantillonnage.
Laugmentation de la taille de la mmoire des ordinateurs au cours des trente
dernires annes ainsi que la demande de plus en plus forte des musiciens pour avoir des
outils numriques permettant limitation dinstruments de musique sont des facteurs qui ont
fortement contribus au dveloppement des mthodes dchantillonnage et leur
commercialisation. Ces dernires permettent de reproduire facilement le son dinstrument de
musique au dtriment toutefois du contrle sur le rsultat. Elles se diffrencient donc sur ce
dernier point des techniques prsentes prcdemment qui permettent un contrle accrus sur
le rsultat obtenu.
Les techniques dchantillonnage utilises pour la synthse de la voix sont
principalement bases sur la modification (transposition, filtrage, etc.) et la concatnation
dchantillons. Leur fonctionnement va tre dcrit dans ce chapitre.

a)

Modles par performance sampling :


slection automatique, concatnation et
modification dchantillons63
Limitation par synthse dun instrument de musique par une mthode

dchantillonnage passe dabord par la cration dune base de donnes dchantillons sonores.
Dans le but dobtenir de bons rsultats, ces chantillons doivent tre reprsentatifs de la
phontique complte de linstrument de musique, cest dire correspondre lensemble des
sons productibles par cet instrument lorsquil est manipul par un musicien. Le domaine
considr est alors parfois trs grand voire mme infini. Ce nest pas le cas de
lchantillonnage o seul un nombre fini dchantillons peut-tre utilis. Pour cette raison, les
chantillons slectionns doivent tre significatifs des tats particuliers de linstrument. Ainsi,
les variables peuvent tre trs diverses : frquence, timbre, amplitude, mode de jeux, etc.

63 BONADA, Jordi ; SERRA, Xavier, Synthesis of the Singing Voice by Performance Sampling and Spectral Models , Signal Processing
Magazine, XXIV (2007), n2, p. 67-79.

38
Un chantillon peut-tre reprsent sous la forme dune trajectoire dans
lespace sonore dun instrument de musique :

Fig. 26 Reprsentation et chantillonnage de lespace sonore dun instrument de musique64 Le


premier ensemble (en rose) correspond lintgralit des sons productibles par linstrument. En jaune,
on peut voir le sous-ensemble correspondant aux sons productibles par linstrument lorsquil est
manipul par un musicien. La taille de ce dernier varie en fonction de chaque musicien et de leur
niveau. Les dix flches reprsentent des chantillons audio enregistrs de linstrument sous forme de
trajectoire dans lespace sonore.

Afin de modliser lintgralit des sons contenus dans le sous-ensemble jaune


de la figure 26 avec un nombre fini dchantillons, il est ncessaire de les modifier en
fonction du rsultat souhait comme le montre la figure suivante :

64 Ibid., p. 68.

39

Fig. 27 Modification de deux chantillons afin dobtenir un rsultat indit65 Dans (a), lespace
sonore de linstrument de musique est modlis par un ensemble de 10 chantillons (flches noires).
Le son dsir est reprsent sous forme dune trajectoire dans cet espace sonore (flche grise). Dans
(b), le synthtiseur modifie les deux chantillons les plus proches de la trajectoire dsire afin de sen
rapprocher le plus possible.

La reprsentation donne prcdemment reste trs schmatique. Ainsi, lquipe


de Xavier Serra et de Jordi Bonada66 a mis au point une mthode de synthse par
chantillonnage adapte la voix. La base de donnes contenant les chantillons divise
lespace sonore de la voix en trois sous-ensembles67 :

Le premier considre un chantillon donn sous quatre aspects : son tempo, son
intensit, sa hauteur et le phonme utilis.

Le second permet de diffrencier les chantillons en fonction du type de vibrato


utilis : lger, sec, pais, lyrique, etc.

Le troisime sous-ensemble considre un chantillon donn en fonction de son type


darticulations musicales : legato, portamento, attaque pique, etc.
Les informations ncessaires pour la synthse : type de voix, syllabes, nuances,

vibrato etc. sont contenues dans une partition qui est fournie au synthtiseur. Elle est alors
traite par un module qui la transforme en listes de paramtres de plus bas niveau utilisables
pour la synthse (liste de hauteurs, liste darticulations, liste dintensits, type de vibrato,
etc.)68. Les chantillons les plus proches du rsultat obtenir sont slectionns et modifis en
fonction des paramtres donns dans ltape prcdente. Les modifications sont effectues
65 Ibid. p. 78.
66 Ibid., p. 67-79.
67 Ibid., p. 74-76.
68 Ibid., p. 76 - 77.

40
laide de mthodes danalyse et de re-synthse telles que celles prsentes dans (I)-(C)-(b) et
(I)-(C)-(c) permettant par exemple de transposer ou de modifier le tempo dun son.
Afin de synthtiser une phrase musicale complte, il est ncessaire de
concatner les chantillons modifis. Pour que le rsultat sonne le plus naturel possible et
pour viter les discontinuits, il est ncessaire dinterpoler les diffrentes composantes
spectrales de chaque chantillon. En effet, les chantillons subissent tous une re-synthse lors
de leur modification. Il est donc possible dutiliser la technique de suivi de trajectoire des
diffrentes composantes sinusodales dun son prsente dans (I)-(C)-(b) pour interpoler
chaque chantillon.

Fig. 28 Echantillonnage par performance sampling .69


Cette technique a t commercialise par Yamaha en 2004 sous le nom du
programme Vocaloid70. Les rsultats obtenus peuvent tre entendus dans la vido
vocaloid.mp471.

b)

Pitch Synchronous Overlap Add (PSOLA)72


La plupart des mthodes de synthse par chantillonnage passent par une tape

de modification des chantillons. Par exemple, dans un cas hypothtique trs simplifi o lon
veut synthtiser le son dun piano alors quon ne dispose que de deux chantillons de

69 Ibid., p. 69.
70 http://www.vocaloid.com/ Site officiel non commercial du programme vocaloid dvelopp par Yamaha (en ligne le 04/09/2010).
71 Close your eyes, chant par Kaito et Meiko, les voix virtuelles cres par Yamaha, disponible sur le cd cd/video/vocaloid.mp4, vido
tlcharge depuis le site YouTube ladresse suivante : http://www.youtube.com/watch?v=cVU-tWu9LoY (en ligne le 04/09/2010).
72 RODET, Xavier ; MANOURY, Philippe ; LEMOUTON, Serge ; PEETERS, Geoffroy ; SCHNELL, Norbet, Synthesizing a choir in realtime using Pitch Synchronous Overlap Add (PSOLA) : actes du First Benelux Workshop on Model Based Processing and Coding of Audio,
Bruxelles, 2002, Paris : IRCAM, 2002.

41
linstrument, il faudra forcment modifier leur hauteur si lon veut tre en mesure de
reproduire la tessiture totale de linstrument. La mthode la plus simple utilise dans ce cas de
figure consiste acclrer ou ralentir la vitesse de lecture de lchantillon afin de modifier
sa hauteur. Le gros inconvnient de cette mthode est quen plus de changer la hauteur de
lchantillon, on modifie aussi sa dure. Cet effet secondaire, qui est acceptable pour la
synthse de certains instruments est toutefois trs contraignant pour la synthse de la voix. En
effet, pour la voix comme pour un certain nombre dinstruments, quand on joue diffrentes
notes, certaines composantes frquentielles du son sont proportionnelles la transposition,
dautres restent fixes, comme cest gnralement le cas pour les formants de la voix par
exemple.

Ainsi, certains modles dchantillonnage utilisent la technique de Pitch

Synchronous Overlap Add73 plus communment appele PSOLA qui permet de contrler
indpendamment la frquence fondamentale f0, la vitesse de lecture et la position des
diffrents formants dun chantillon de son vocal.
PSOLA est bas sur le modle analyse/modification/re-synthse tout comme
celui utilis dans les parties (I)-(C)-(b) et (I)-(C)-(c). Pour fonctionner correctement, cette
technique ne peut tre applique qu des sons harmoniques priodiques.
Comme cela a t montr dans la partie (I)-(A)-(b), le son produit par
lappareil phonatoire est en partie compos de sons priodiques bien quil contienne aussi des
signaux apriodiques comme les sons de type fricatif. La premire tape de lanalyse PSOLA
consiste donc isoler les sons priodiques de ceux qui ne le sont pas. Des marqueurs sont
alors placs sur la partie priodique extraite du son dorigine intervalles rguliers toutes les
T0i priodes et si possible sur chaque zone o lnergie est maximale (tl,i sur la figure 29).
Lestimation de la priode et des points dnergie maximale peut se faire de la faon
suivante :

73 CHARPENTIER, Francis ; MOULINES, Eric, Pitch Synchronous Waveform Processing Techniques for Text-to-Speech Synthesis
Using Diphones , Speech Communication, IX (1990), p. 453-467.

42

Fig. 29 Estimation des zones dnergie maximale intervalle de temps rgulier (en gris) o T0i
est la priode et tl,i les points dnergie maximale.

74

Sur la figure 30, le signal est dcoup au niveau des diffrents marqueurs mi en
respectant au maximum les deux conditions donnes prcdemment (priode et points
dnergie maximale). Si lon remet bout bout dans lordre chacun des morceaux dcoups, il
est possible de reconstituer le son dorigine sans aucune perte. Pour modifier la frquence de
la fondamentale f0 de lchantillon sans affecter la dure, il suffit de changer la distance entre
chacun des morceaux et donc la priode T0 qui devient T(t) sur la figure suivante :

Fig. 30 Exemple de modification de la frquence f0 avec la technique PSOLA Le graphique


suprieur reprsente le son dorigine, le graphique infrieur le son modifi.

74 RODET, Xavier ; MANOURY, Philippe ; LEMOUTON, Serge ; PEETERS, Geoffroy ; SCHNELL, Norbet, op. cit.

75

43

La technique PSOLA a t amliore par un certain nombre de travaux de


recherche. On peut par exemple citer le systme SINOLA mis au point par Xavier Rodet et
Geoffroy Peeters lIRCAM faisant lamalgame des mthodes de synthse additive tudies
dans la partie (I)-(C)-(b) et de PSOLA76.
Enfin, on peut noter que PSOLA a t utilis lors de la cration de lopra K
de Philippe Manoury77 qui tait alors assist par Serge Lemouton. Cet exemple est assez
particulier dans la mesure o la synthse de la voix fut ici utilise pour synthtiser un chur78.

c)

Lexemple de la bande originale du film de


Grard Corbiau Farinelli, il castrato79
Bien que de plus en plus efficace, les modles de synthse et dchantillonnage

existant ne sont pas encore en mesure de reproduire la perfection une voix naturelle. Ctait
donc encore moins le cas en 1994, date de sortie du film Farinelli, il castrato de Grard
Corbiau.
Ce film, met en scne la vie dun des plus fameux castrat de lhistoire de la
musique. Le principal enjeu technique du film fut la reproduction fidle dune voix de castrat
de lpoque. En effet, la castration humaine tant interdite depuis le XIXme sicle, le dernier
castrat connu mourt en 1922.
Les castrats possdaient des aptitudes vocales quaucun chanteur nest
aujourdhui en mesure dacqurir. Ils taient capables de chanter sur plus de trois octaves et
demie et pouvait maintenir des sons pendant plus dune minute du fait de leur systme
respiratoire dadulte et de leurs cordes vocales denfant.
La voix du castrat dans le film Farinelli est donc une voix artificielle cre
grce lamalgame dune voix de contre-tnor et de soprano coloratur. La technique utilise
fut mise au point par lquipe de Philipe Depalle80 lIRCAM.

75 Ibid.
76 Ibid.
77 SCEMAMA, Patrick, K, opra en douze scnes de Philippe Manoury, Paris : Opra national de Paris, 2000.
78 RODET, Xavier ; MANOURY, Philippe ; LEMOUTON, Serge ; PEETERS, Geoffroy ; SCHNELL, Norbet, op. cit.
79 Extrait du making-of du film Il castrato, vido disponible sur le cd dans le fichier farinelli.mp4 cd/vido et sur le site YouTube
ladresse suivante : http://www.youtube.com/watch?v=No-w5l00pho (en ligne le 04/09/2010).
80 DEPALLE, Philipe ; GARCIA, Guillermo ; RODET, Xavier, A Virtual Castrato : acte de lInternational Computer Music Conference,
Aarhus (Danemark), octobre 1994, http://articles.ircam.fr/textes/Depalle94a/ (en ligne le 04/09/2010).

44
La bande originale du film fut dabord enregistre avec lorchestre et les deux
chanteurs. Le contre-tnor chantait les parties graves du castrat et la soprano les parties
hautes. Lors de linterprtation, ils se relayaient donc, chantant parfois seul pour les zones
extrmes de la tessiture du castrat et ensemble pour les zones intermdiaires. Lors de cette
tape, les deux chanteurs durent effectuer un important travail sur leur voix afin que leur
timbre et leur interprtation soient en adquation.
A partir des enregistrements effectus, une base de donnes fut cre avec la
voix du contre-tnor. Cette base de donnes contenait toutes les combinaisons possibles de
frquences de la fondamentale, dintensits et de voyelles caractrisant son interprtation. Par
la suite, la phrase musicale traiter devait tre segmente afin de crer des portions
caractrises par lun des deux chanteurs, la voyelle utilise, la frquence de la fondamentale,
lintensit et le dbut et la fin de la portion. Les rsultats de cette tape danalyse permettaient
alors la slection automatique dun des chantillons de la voix de contre-tnor dans la base de
donnes. La phase de morphing pouvait alors tre entame. Lide principale de cette
technique consiste en la modification de la voix de soprano afin de lui donner les
caractristiques de la voix de tnor par lutilisation dun vocodeur de phase.
Pour finir, des ajustements tels que lattnuation de certaines hautes frquences
du spectre furent excuts sur le son rsultant des oprations prcdentes afin de donner une
aspect plus juvnile la voix cre.
Le modle utilis peut tre rsum dans le block diagramme suivant :

Fig. 31 Block diagramme du modle dchantillonnage utilis pour la synthse de la voix de


Farinelli dans le film Farinelli, il castrato de Grard Corbiau.

81

81 DEPALLE, Philipe ; GARCIA, Guillermo ; RODET, Xavier, A Virtual Castrato : acte de lInternational Computer Music Conference,
Aarhus (Danemark), octobre 1994, http://articles.ircam.fr/textes/Depalle94a/ (en ligne le 04/09/2010).

45

Le modle prsent ici nest pas rellement une technique dchantillonnage


proprement parler comme celle de (I)-(D)-(a). En effet, il est adapt un cas de figure bien
particulier et ncessite linterprtation des phrases musicales synthtiser par de vrais
chanteurs. Le rsultat obtenu est nanmoins trs impressionnant et de bien meilleure qualit
que celui entendu dans la partie prcdente : exemple audio contenu dans farinelli.aiff 82.
La synthse de la voix chante est un domaine qui a fait dimportants progrs
au cours des quarantes dernires annes principalement cause de lvolution rapide des
technologies numriques lors de cette priode. Nanmoins, la voix humaine reste un
instrument de musique dune trs grande complexit. Les paramtres prendre en compte
sont tellement divers et varis quil est particulirement complexe de reproduire des sons
vocaux sur un ordinateur.
Bien que les rsultats obtenus de nos jours soient encourageants, on est encore
loins de pouvoir comparer une voix chante de synthse une voix chante naturelle. Ainsi,
un grand nombre dlments dans les modles de synthse prsents prcdemment
ncessitent dtre amliors. Comme cela t expliqu au cours de ce chapitre, des progrs
pourraient par exemple tre faits au niveau de la synthse des sons fricatifs de la voix et de
lexpressivit. Sur ce dernier point, il serait intressant damliorer lautomatisation de la
production des paramtres pour la synthse partir dune partition. Enfin, un travail important
reste effectuer au niveau de la cration dinterfaces graphique adaptes lanalyse et la
synthse des sons vocaux notamment au niveau de la reprsentation de certaines composantes
du son : vibrato, etc.

82 Disponible sur le cd cd/audio.

46

II. La synthse par fonctions donde


formantique et le programme CHANT

Succession de Fonctions dOnde Formantique (cf. figure 32) - Daprs le script


Matlab fofd.m disponible sur le cd cd/matlab et dans lannexe n1.

47
Bien que la plupart des techniques utilises pour la synthse de la voix aient t
brivement dcrites dans les chapitres prcdents, il reste prsenter un dernier modle : la
synthse par Fonctions dOnde Formantique ou FOF. Une attention particulire lui est
accorde ici puisquelle fait lobjet dune implmentation complte dans le chapitre III.
Cette technique de synthse spectrale fut fortement utilise dans les annes
quatre-vingt et au dbut des annes quatre-vingts-dix travers le programme CHANT. Elle
permet, au mme titre que la synthse par modulation de frquence de John Chowning,
dobtenir de trs bons rsultats sans demander trop de calculs la machine. Ce dtail tait
particulirement important une poque o les ordinateurs taient moins puissants que de nos
jours.
Dans ce chapitre, les caractristiques techniques dtailles dun synthtiseur
par Fonctions dOnde Formantique vont tre donnes. Une description complte du
programme CHANT qui implmente cette technique de synthse sera faite aussi.

A. Synthse par Fonctions dOnde Formantique


(FOF)83 84
a)

Construction dun signal partir de FOFs


La synthse par Fonctions dOnde Formantiques ou FOF a t cre au dbut

des annes quatre-vingt lIRCAM par lquipe dirige par Xavier RODET.
Cette technique permet dobtenir un rsultat semblable celui donn par un
modle traditionnel de type source/filtres mais ncessite un nombre rduit de calculs et fournit
un contrle plus intuitif et naturel des paramtres. Elle consiste faire la somme des signaux
lmentaires correspondant la rponse impulsionnelle de filtres rsonants85 du type :
J

1+ di z1
avec a et b qui contrlent la frquence centrale et la largeur de
1
2
i=1 1+ ai z + bi z

H(z) =

bande du filtre, c son amplitude et d son inclinaison. J est le nombre de FOF quivalent aux J

filtres du second ordre disposs en parallle.

83 RODET, Xavier, Time-Domain Formant-Wave-Function Synthesis , Computer Music Journal, VIII (1984), n 3, p. 9-14.
84 RODET, Xavier ; BARRIERE, Jean-Baptiste ; POTARD, Yves, Rapport de recherche n35 : Chant, de la synthse de la voix la
synthse en gnral, Paris : IRCAM, 1985.
85 POTTIER, Laurent, Le contrle de la synthse sonore par ordinateur , Le Calcul de la Musique, d. sous la direction de Laurent
Pottier, Saint-Etienne : Publication de lUniversit de Saint-Etienne, 2009, p. 278-279.

48
Ainsi, il est possible de diviser un signal E(k) en un nombre J de FOFs
correspondant J rgions du spectre. Si le signal E(k) est une succession dimpulsions :
+

E(k) = pn (k) o n indexe les impulsions successives, alors la rponse S du filtre prcdent

est la somme des rponses Sn(K) dcales dune priode du fondamental T = 1/F0 (o F0 est la

frquence fondamentale de lexcitation et de la rponse).


Cette mme rponse Sn(K) est aussi la somme des J rponses partielles des
J

cellules disposes en parallle : s(k) = Sn.i (k) o les Sn.i(K) sont des Fonctions dOnde
i=1

Formantique dans la mesure o elles correspondent de manire globale aux formants du


systme.

Pour modifier la frquence fondamentale du signal, il est possible de changer

les dures de priodes fondamentales T=1/F0.

Fig. 32 Dclenchement priodique des FOFs toutes les T secondes Daprs le script Matlab
86

fofd.m .

Chaque FOF correspondant un formant du signal produit, il est


particulirement ais de contrler son spectre et ce avec un nombre rduit de paramtres.

86 Disponible sur le cd cd/matlab et dans lannexe n1.

49

b)

Composition des FOFs


Une FOF est le rsultat dune convolution entre une sinusode et une enveloppe

exponentielle amortie dont la discontinuit initiale est lisse sur une dure de /
chantillons :
s(k) = 0 pour : k<0

(1)

s(k) = 1/2 (1 cos(k)) * e-k sin(wk + ) pour : 0 k / (2)


s(k) = e-k sin(wk + ) pour / < k (3)
o w est la frquence centrale du maximum (en Hertz), la largeur de bande -3 db (en
Hertz) et / la largeur des jupes. Cette dernire variable correspond en fait la dure de
lattaque de limpulsion qui sexprime donc en ms (2).

/
(3)
(2)

Fig. 33 Fonction dOnde Formantique Daprs le script Matlab fof.m87.

87 Disponible sur le cd cd/matlab et dans lannexe n2.

50

Fig. 34 Analyse FFT de trois FOFs avec W0=2000 Hz, =80 Hz et des valeurs de / diffrentes
88

Daprs le script Matlab fofspec.m .

c)

Cration de FOFs dans CSOUND


CSOUND est un logiciel libre dvelopp sous licence LGPL89. Il est

principalement compos dun compilateur utilis grce un langage spcifique driv du C


pour effectuer des tches de traitement numrique du signal orientes pour la musique.90
Lobjet fof91 dans CSOUND permet de gnrer un flux dimpulsions du
mme type que celles dcrites ci-dessus. Elles prsentent toutefois un certain nombre de
diffrences. En effet, il est possible de choisir le type denveloppe applique parmi toutes les
tables de fonctions disponibles dans le programme. Ainsi, dans le fichier CSOUND prsent
dans lannexe n26, lenveloppe damplitude de chaque impulsion est gnre par la fonction
GEN1992. Cette fonction permet habituellement de construire une forme donde compose
dune sinusode. Dans le cas prsent, elle est configure de la manire suivante dans
CSOUND :
f2 0 1024 19 0.5 a b
88 Disponible sur le cd cd/matlab et dans lannexe n3.
89 Lesser General Public Licence (Licence publique gnrale limite).
90 http://www.csounds.com/ Site officiel du programme CSOUND (en ligne le 04/09/2010).
91 VERCOE, Barry, FOF , The canonical CSOUND Reference Manual, Version 5.09, d. sous la direction de Barry Vercoe, Cambridge :
MIT, 2005, p. 749-751.
92 Ibid., p. 2020-2021.

51
avec :
a=0.5, lamplitude de la sinusode

=270, le dphasage en degr


b=0.5, le dcalage de lamplitude pour que la fonction soit strictement positive : 0 f2 1.
Le rsultat produit est alors de la forme : x(t) =

sin(t + ) + b
avec :
a

2 3
, le dphasage en radiant
4

b=1, pour que pour toute valeur de t, x soit positif

a=2, pour que pour toute valeur de t, 0 x 1.


x(t) est utilis par CSOUND pour construire lattaque puis est ensuite lu
lenvers pour construire la chute. Le fichier MATLAB sigmo.m 93 permet de calculer et
dafficher cette fonction :

Fig. 35 Sigmode gnre par GEN19 utilise pour le calcul de lenveloppe damplitude des FOFs
94

dans CSOUND Daprs le script MATLAB sigmo.m .

Lenveloppe gnre dans CSOUND avec GEN19 est pratiquement identique


celle obtenue avec les formules donnes prcdemment comme la montre la figure 36. On

93 Disponible sur le cd cd/matlab et dans lannexe n4.


94 Ibid.

52
peut simplement noter que lamplitude dcroit lgrement moins rapidement et que la dure
de est rendue lgrement plus courte dans CSOUND.

Fig. 36 Comparaison dune FOF gnre avec les formules donnes par Xavie Rodet95 avec une
96

FOF gnre dans CSOUND (fof-dem.csd et fof-dem.aiff ) avec lopcode fof et GEN19
97
(paramtres identiques) - Daprs le script Matlab fof.m .

Lautre diffrence entre lobjet fof de CSOUND et le modle utilis dans


CHANT concerne . En effet, dans CHANT, contrle la largeur de bande du spectre des
FOFs -3db, alors que dans CSOUND, ce contrle se fait -6db. Ainsi, dans ce dernier cas,
le paramtre a un impact plus important sur le rsultat que dans le premier puisquil agit sur
une zone plus tendue du spectre.
Lobjet fof de CSOUND prsent dans lannexe n26 permet deffectuer
ltape de synthse dans le systme prsent dans le chapitre III.

d)

Synthtiseur FOF
En appliquant les principes vus ci-dessus, il est possible de crer un

synthtiseur dont la structure est la suivante :

95 RODET, Xavier, Time-Domain Formant-Wave-Function Synthesis , Computer Music Journal, VIII (1984), n 3, p. 9-14.
96 Disponible sur le cd cd/csound.
97 Disponible sur le cd cd/matlab et dans lannexe n2.

53

Fig. 37 Structure dun synthtiseur FOF.


Les paramtres pour chaque priode fondamentale sont donc :

Les 2wi frquences centrales

Les BWi largeurs de bandes

Les Ai amplitudes

Les /i largeurs de jupes

Les i phases initiales.


En plus de ses nombreux avantages techniques, la synthse par Fonction

dOnde Formantique permet de reproduire des comportements vocaux trs complexes


implmenter avec un modle source/filtre. Toutefois, il nest possible de synthtiser que des
sons de type vois comme les voyelles98 avec un synthtiseur tel que celui prsent dans
lannexe n26. Ainsi, pour tre complet, ce modle doit galement possder un systme
capable de produire des sons vocaux de type bruit comme les consonnes. Pour ceci, il est
possible dutiliser une source de bruit blanc passe dans un banc de filtres dynamiques. Ainsi,
si on complte la figure 37, on obtient :

98 ALLESSANDRO, Christophe (d) ; RODET, Xavier, Synthse et analyse-synthse par fonctions dondes formantiques , Journal
dAcoustique, n2 (1989), p. 163-169.

54

Fig. 38 Structure dun synthtiseur FOF complet.


Ce modle est le mme que celui utilis dans CHANT. Il sera implment dans
CSOUND dans le chapitre III.

e)

Avantages de la synthse par FOFs face aux


modles de synthse par filtres
On sait daprs le chapitre (I)-(A)-(b) que le conduit vocal produit des sons

dont les frquences des formants et de la fondamentale f0 voluent en permanence. Ces


variations, bien quelles soient infimes (de lordre de + ou 2%) sont primordiales pour la
perception dun son vocal. Les coefficients dun filtre ne pouvant pas subir de discontinuits,
il est ncessaire de les interpoler entre chaque nouvelle valeur, opration trs coteuse en
calculs.
Les FOFs, sont quant elles par construction non discontinues. En effet,
comme on la montr prcdemment, le signal S issu dun gnrateur de FOFs est la somme
des rponses Sn(k) dcales dune priode du fondamental T=1/F0 o n indexe les impulsions
successives. Ainsi, les FOFs acceptent des valeurs diffrentes chaque priode.
Il arrive que certaines composantes du spectre issues dun synthtiseur FOF se
trouvent en opposition de phase et donc sannulent. Ceci pour effet lapparition de trous
au niveau des frquences centrales de deux cellules voisines. Une mthode simple pour
remdier ce problme consiste dphaser la rponse dune cellule par rapport une autre en
changeant les valeurs de . Une telle opration pourrait tre implmente avec des filtres,
toutefois, cette tche serait particulirement ardue mettre en place car soit inadquate, soit
trop complexe.

55
Un autre avantage du modle par FOF est la richesse spectrale dans le cas de
lutilisation dune largeur de bande BW rduite et dune fluctuation rapide de w. Ceci est d
au fait que les FOFs dclenches chaque priode n sont pratiquement des sinusodes de
frquences fixes diffrentes les unes des autres, alors que la rponse dune cellule dun filtre
dans de telles conditions ressemble une sinusode dont la frquence centrale volue
continment.

56

B. Le programme CHANT99 100


La premire implmentation de la technique de synthse par fonctions donde
formantique fut le programme CHANT, dvelopp par lquipe de Xavier Rodet lIRCAM
partir de 1978. Cet outil de synthse par rgles a t conu comme un instrument de
composition perceptuelle pour traiter ensemble production et perception, matriau et
organisation 101.
Les diffrentes rgles qui agissent sur les paramtres du programme permettent
un contrle de lexpressivit, de la qualit du timbre, des intonations et des nuances de la voix
chante dpassant la dure de la note pour sarticuler autour de phrases musicales 102.
CHANT a t utilis dans la cration dun certain nombre duvres dans les
annes quatre-vingt et au dbut des annes quatre-vingt-dix telles que Mortuos Plango, Vivos
Voco de Jonathan Harvey en 1980103, Les chants de lamour de Grard Grisey (1985)104 ou
encore Chrode de Jean-Baptiste Barrire (1983)105. Depuis sa cration en 1979, CHANT a
connu beaucoup de modifications et a t port sur un grand nombre de systmes. Bien que ce
programme reste lun des outils majeur pour la synthse de la voix chante, il est aujourdhui
quelque peu laiss labandon.
A lheure actuelle, lutilisation et le contrle de CHANT se fait par
lintermdiaire dautres logiciels tels que Max/MSP ou Diphone Studio.

a)

Historique du programme CHANT106 107

99 BAISNEE, Pierre-Franois, CHANT manual, Document Ircam : Paris, 1985.


100 POTTIER, Laurent, Le contrle de la synthse sonore, le cas particulier du programme PatchWork, Thse de doctorat (indite), Paris :
EHESS, 2001, p. 68-80.
101 RODET, Xavier ; BARRIERE, Jean-Baptiste ; POTARD, Yves, Rapport de recherche n35 : Chant, de la synthse de la voix la
synthse en gnral, Paris : IRCAM, 1985, p. 16.
102 POTTIER, Laurent, op. cit., p. 68.
103 BOSSIS, Bruno, La voix et la machine : La vocalit artificielle dans la musique contemporaine, Rennes : Presses Universitaire de
Rennes, 2005, p. 132-146.
104 Ibid., p. 146-172.
105 http://brahms.ircam.fr/works/work/6632/ (en ligne le 04/09/2010).
106 Laurent Pottier, op. cit., p.68.
107 BOSSIS, Bruno, La voix et la machine : La vocalit artificielle dans la musique contemporaine, Rennes : Presses Universitaire de
Rennes, 2005, p. 129-131.

57
Le point de dpart des recherches qui ont donn naissance au programme
CHANT est le systme de synthse vocale SARA dvelopp par Xavier Rodet au centre
CEA108 de Saclay. La premire version de CHANT a t crite en SAIL109 sur Dec-PDP10110
en 1979 puis a rapidement t traduite en Fortran par Jean Holleville en 1981. Cette mme
anne, CHANT est install sur la Samson-Box du CCRMA111 au SAIL de Stanford. Ce
systme pouvait alors calculer environ deux cents FOFs simultanment procurant une
synthse de bonne qualit. Toujours au dbut des annes quatre-vingt, CHANT a t cod
pour fonctionner sous UNIX par Yves Potard et Jan Vandenheede sur un ordinateur DecVAX780 au centre EMS112 de Stockholm.
Dans ses premires versions, le programme CHANT nintgrait pas de banc de
filtres, en effet, cet lment ne fut ajout au programme quen 1984. Un tage dinterpolation
linaire entre lentre des paramtres de contrle et le synthtiseur FOF a aussi t insr afin
dconomiser les flux des donnes de contrle.
A partir de 1986, le contrle de CHANT est devenu possible par
lintermdiaire dun environnement plus convivial labor sous Lisp : le programme Formes.
Ce systme interactif, comprenait un langage de programmation orient processus , des
algorithmes servant laide la composition et la synthse ainsi que des bibliothques
dexemples 113. Le compositeur tait libr des difficults daccs et de comprhension des
modles de synthse.
En 1989, CHANT a t rcrit en C sous UNIX par Francisco Iovino. Cette
modification lui a permis dtre implment sur des machines Macintosh o il a pu bnficier
peu de temps aprs du contrle par PatchWork. Il devint alors polytimbral et polyphonique et
pouvait tre contrl par Formes, Scheme et Common Lisp.
CHANT a aussi t implment sur de nombreuses plateformes pour tre
contrl en temps rel. Ainsi, en 1981, Xavier Rodet et Yves Potard lont fait fonctionner sur
la machine 4C. En 1987 galement, il a t implment sur un processeur Mercury en
priphrique UNIX sur un ordinateur SUN par Xavier Rodet et Gerhard Eckel.

108 Commissariat lEnergie Atomique.


109 Stanford Artificial Intelligence Laboratory.
110 Ordinateur central mainframe dvelopp par la Digital Equipment Corporation (DEC) partir de la fin des annes soixante.
111 Center for Computer Research in Music and Acoustics.
112 Electroacoustic Music in Sweden.
113 POTTIER, Laurent, Le contrle de la synthse sonore, le cas particulier du programme PatchWork, Thse de doctorat (indite), Paris :
EHESS, 2001, p. 68.

58
A lheure actuelle, CHANT perdure encore dans quelques programmes
dvelopps lIRCAM. En effet, depuis 1999, il est intgr au logiciel Diphone Studio. Il fut
galement port la mme poque dans OpenMusic et dans Max/MSP.

b)

Modle de production de CHANT


La spcificit de CHANT est son utilisation de la synthse par fonctions

donde formantique. En plus de celle-ci, CHANT emploie deux autres techniques pour la
synthse de sons vocaux. En effet, comme nous lavons indiqu prcdemment, les FOFs ne
permettent pas la reproduction de sons de type fricatif tels que les consonnes. Cest une des
raisons pour lesquelles CHANT est pourvu dun gnrateur de bruit blanc et dun banc de
filtres. Ce dernier peut aussi tre appliqu sur des sons extrieurs.
Ces diffrents lments peuvent alors tre connects entre eux selon plusieurs
modles en fonction du rsultat dsir comme le montre la figure 39.

Fig. 39 Diffrents modles de connexion des FOFs, filtres, fichiers sons et bruits dans le
synthtiseur CHANT de Diphone Studio.

59

C. Les rgles de synthse de CHANT


La version de base de CHANT compte un grand nombre de paramtres. Ainsi,
afin de simplifier son utilisation, ces paramtres peuvent tre contrls de faon automatique
grce des rgles et disposent de valeurs par dfaut tablies daprs des mesures et des
analyses effectues sur la voix. Ces valeurs sont stockes dans une base de donnes et sont
classes par voyelles et par types de voix (gnralement soprano, alto, contretnor, tnor et
basse). Selon Pierre-Franois Baisne, CHANT est donc le synthtiseur le plus simple
manier quil soit 114.
Les rgles de CHANT rendent possible la synthse de phrases chantes avec
un nombre trs rduit de paramtres tels que le type de voix dsir et la partition, dcrite par
des hauteurs, des dures et des intensits. Lutilisateur peut aussi, naturellement, modifier
manuellement lintgralit des paramtres lui donnant alors un contrle trs prcis sur le
rsultat.
Il est possible de discerner deux types de rgles dans CHANT : les rgles
automatiques qui calculent les paramtres des formants en fonction de la partition fournie et
les autres algorithmes qui concernent le vibrato, les microvibrations du son et les
enchanements de notes.
Afin de comprendre pleinement la rimplantation du programme CHANT
prsente dans le chapitre III, il est primordial dtudier en dtail le fonctionnement des
diffrentes rgles et fonctions de CHANT. Il sera parfois fait rfrence au code source des
rgles de la bibliothque PW-Chant pour PatchWork115.

a)

Contrle du vibrato116
Le vibrato est un facteur trs important dans la perception de la

beaut vocale dans le chant occidental117. De plus, il permet de renforcer lidentit des
formants en crant un balayage dans le spectre de la voix tel quil la t montr dans (I)-(C)(a).

114 BAISNEE, Pierre-Franois, op. cit.


115 IOVINO, Francisco ; LAURSON, Mikael, fichier voice-rules.Lisp de la bibliothque PW-Chant, Paris : IRCAM, 1996, disponible sur le
cd cd/PW et dans lannexe n4.
116 BAISNEE, Pierre-Franois, op. cit.
117 RODET, Xavier ; BARRIERE, Jean-Baptiste ; POTARD, Yves, Rapport de recherche n35 : Chant, de la synthse de la voix la
synthse en gnral, Paris : IRCAM, 1985, p. 17.

60
Dans CHANT, le vibrato est cr par un oscillateur gnrant un signal
priodique de basse frquence qui permet de moduler la frquence f0 des diffrents
gnrateurs de FOF. Typiquement, la frquence dun vibrato vocal varie entre 5 et 7 Hz tandis
que les modulations de la frquence de la fondamentale sont de lordre de +/- 1,1% +/- 3,7%
chez les femmes et de +/- 2% +/- 4% chez les hommes. Lanalyse du spectre de deux sons
de synthse FOF avec cinq formants produits par lobjet CSOUND fof-sop.csd 118 est
prsente dans la figure 40. On peut y voir leffet de lintroduction dun vibrato sur la
fondamentale et ses diffrents harmoniques.

Fig. 40 Sonagramme de deux sons produits par lobjet CSOUND fof-sop.csd , gauche sans
119

vibrato (fof-sop.aiff

), droite avec vibrato (fof-sop-vib.aiff

120

).

Afin que le vibrato produit sonne le plus naturel possible, il est ncessaire
dintroduire des microvariations alatoires au niveau de sa frquence et de son amplitude. En
effet, les cordes vocales ne sont pas en mesure de moduler de faon priodique leur frquence
de vibration de manire aussi prcise quun oscillateur. Ces micromodulations sont
implmentes dans CHANT grce un ensemble de quatre jitters qui permettent de gnrer
des valeurs alatoires une frquence donne. Ainsi, la frquence et lamplitude du vibrato
sont modules de la faon suivante dans CHANT :
Frquence finale = (frquence du vibrato)*((jitter1+jitter2)/2)
Amplitude finale = (amplitude du vibrato)*((jitter3+jitter4)/2)
Les amplitudes de jitter1 et jitter2 indiquent donc le taux de variations de la
frquence du vibrato, celles de jitter3 et jitter4 le taux de variations de lamplitude du vibrato.

118 Disponible sur le cd cd/csound et dans lannexe n5.


119 Disponible sur le cd cd/csound.
120 Ibid.

61

Variations alatoires de la fondamentale121

b)

Le son produit par les cordes vocales na pas une frquence totalement fixe. En
effet, tout comme pour le vibrato prsent prcdemment, on peut observer des
microfluctuations de la frquence f0 de la fondamentale. Ces variations infimes, mais
nanmoins trs importantes pour restituer laspect naturel du son de la voix, sont
implmentes dans CHANT grce un ensemble de trois jitters connects en parallle et
fonctionnant de la mme manire que ceux utiliss dans la modulation de la frquence et de
lamplitude du vibrato dcrite prcdemment.

Fig. 41 Transitions entre plusieurs voyelles par interpolation des frquences des formants
(transitions-voyelles.aiff

c)

122

).

Interpolation des formants et de la


fondamentale123
o Interpolation des frquences f0 de la fondamentale
Un effet rcurant utilis dans la pratique du chant est lintroduction de

glissandos entre deux notes. Ils sont produits en changeant progressivement la frquence de
vibration des cordes vocales dune note une autre. Dun point de vue physique, cette
opration revient faire une interpolation linaire entre les frquences f0 de ces deux notes
comme cela est montr dans la figure suivante :

121 BAISNEE, Pierre-Franois, CHANT manual, Document Ircam : Paris, 1985, p. 41.
122 Disponible sur le cd cd/audio.
123 POTTIER, Laurent, Le contrle de la synthse sonore, le cas particulier du programme PatchWork, Thse de doctorat (indite), Paris :
EHESS, 2001, p. 75.

62

Fig. 42 Sonagramme dun son produit par lobjet CSOUND fof-sop.csd montrant une
-1

interpolation entre deux notes ( 2s ).

Les harmoniques se trouvant au dessus de la fondamentale tant des


rsonnances de celle-ci, ils sont eux aussi interpols. La dure de linterpolation dfinie la
dure du glissando. Dans CHANT, il est possible dactiver ou de dsactiver linterpolation
des frquences de la fondamentale en fonction du contexte de la synthse. Par exemple,
linterpolation devra tre active avec une dure trs courte dans le cas dun legato alors quil
sera ncessaire de lempcher dans le cas de notes piques.
o Interpolation des voyelles
Lors du passage dune voyelle une autre dans une phrase legato ou dans un
mot, les paramtres des diffrents formants changent de faon progressive. Linterpolation
des diffrentes frquences, amplitudes et largeurs de bandes des formants permet deffectuer
ces transitions dans CHANT. Tout comme pour linterpolation des frquences de la
fondamentale, il nest pas ncessaire dactiver linterpolation des formants dans le cas de sons
piqus.

d)

Contrle de lenveloppe globale des notes


Il est possible de contrler de faon indpendante lenveloppe de chaque note

dans CHANT. Il est toutefois important de prciser que les diffrentes versions de CHANT
ont vu se succder un certain nombre de gnrateur denveloppes donnant des rsultats
lgrement diffrents.

63
Dans la version VAX-780 de 1985, lenveloppe tait dfinie par trois
paramtres : la dure totale de lenveloppe et les proportions de la dure de lattaque et de la
chute sur la dure totale de lenveloppe. Ces trois phases taient totalement linaires. Enfin, il
est important de prciser que si la dure totale de lenveloppe tait infrieure celle de la
note, un silence correspondant la diffrence entre ces deux valeurs tait introduit.124 La
figure 43 montre la forme dune enveloppe typique de celles proposes sur le systme VAX780 de CHANT :

Fig. 43 Forme de lenveloppe globale dune note dans la version VAX-780 de CHANT.
La version 1.2 de CHANT pour Patchwork de 1996 dispose dun gnrateur
denveloppe lgrement diffrent de celui prsent prcdemment. En effet, chacune des
parties de lenveloppe (attaque, maintien et chute) est produite indpendamment par une
portion de fonction sinusodale.125 Il en rsulte une enveloppe avec des formes plus arrondies
comme cela est montr dans la figure suivante :

124 BAISNEE, Pierre-Franois, CHANT manual, Document Ircam : Paris, 1985, p. 6.


125 IOVINO, Francisco ; LAURSON, Mikael, envelope , PatchWork PW-Chant reference, Paris : IRCAM, 1996, p. 51.

64

Fig. 44 Exemple denveloppe produite par le module envelope du programme Patchwork.126

e)

Rgle pour le calcul automatique des largeurs


de bande des formants
Chant dispose dune rgle capable de calculer la largeur de bande dun formant

partir de sa frquence. Daprs Pierre-Franois Baisne, les largeurs de bande des formants
varient en fonction de leur frquence centrale suivant une courbe parabolique dfinie sur le
spectre par trois points. Ces trois points sont calculs partir de trois frquences et de trois
largeurs de bande de rfrence selon lalgorithme suivant127 :
Frquences de rfrence = (fref0 fref1 fref2)
Largeurs de bande de rfrence = (bwref0 bwref1 bwref2)
v = fref02 fref12
u = fref0 fref2
w = bwref0 bwref1
x = fref0 fref1
y = fref1 fref2
z = x/y
d = v ((fref12 fref22).z)
Si x, u et d sont diffrents de 0, alors les points de rfrence pour la
parabole peuvent tre calculs de la manire suivante :
ptref2 = (z.(w bwref1 bwref2))/d
ptref1 = (w (ptref2.v))/x
ptref0 = (fref0.ptref1) + (fref02.ptref2) - bwref0

Les frquences et les largeurs de bande de rfrence peuvent tre dfinies par
lutilisateur. Elles disposent nanmoins de valeurs par dfaut qui donnent des rsultats de trs

126 POTTIER, Laurent, Le contrle de la synthse sonore, le cas particulier du programme PatchWork, Thse de doctorat (indite), Paris :
EHESS, 2001, p. 75.
127 IOVINO, Francisco ; LAURSON, Mikael, Rule for the Automatic Calculation of the Bandwidths , fichier voice-rules.lisp de la
bibliothque PW-Chant, op. cit.

65
bonne qualit dans la plupart des cas : bw0 = 75, bw1 = 75, bw2 = 150, fref0 = 200, fref1 = 500
et fref2 = 4000. Dans ce cas : ptref0 = 471, ptref1 = 138,6 et ptref2 = 12,04.
La fonction utilise pour le calcul des largeurs de bande des formants en
fonction de leur frquence est de la forme suivante :
bwi = ptref0 ptref1Ln(freqi) + ptref2Ln(freqi)2
En utilisant les frquences et largeurs de bande par dfaut, on obtient donc la
fonction suivante dont il est possible de voir la forme sur la figure 45 :
bwi = 471 138,6Ln(freqi) + 12,04Ln(freqi)2

Fig. 45 Calcul de la largeur de bande des formants en fonction de leur frquence dans CHANT en
utilisant les frquences et largeurs de bande de rfrence par dfaut, daprs le script MATLAB
128
chantbw.m .

f)

Rgles pour le calcul automatique et


lajustement des amplitudes des formants
Les amplitudes des diffrents formants jouent un rle primordial dans la

dtermination du timbre. Leurs valeurs peuvent tres amenes varier en fonction dun grand
nombre de facteurs.

128 Disponible sur le cd cd/matlab et dans lannexe n6.

66
o Calcul automatique des amplitudes des formants129 130
Le calcul automatique des amplitudes des formants se fait dans CHANT grce
une rgle simulant une srie de filtres qui en fonction de la frquence de chacun dentre eux,
donne les amplitudes des formants. Le but de ce calcul est de prendre en compte les
diffrentes interactions possibles entre les formants. Par exemple, lorsque deux formants
sapprochent lun de lautre, la simulation de filtres permet le renforcement de leurs
amplitudes exactement de la mme faon que dans le systme phonatoire.
Un autre effet de cette rgle est de calculer lamplitude des formants selon une
loi inversement proportionnelle leur frquence. Ainsi, lenveloppe spectrale rsultante nest
pas plate mais a une forme descendante.
o Ajustement des amplitudes des formants131 132
Il a t dmontr dans (I)-(C)-(a) que lamplitude des formants de la voix varie
en fonction de leffort vocal fait par un chanteur. En effet, il ne suffit pas daugmenter ou de
rduire de faon linaire lamplitude des formants pour modifier les nuances dune phrase
musicale.
Le programme CHANT dispose dune rgle permettant dajuster lamplitudes
des diffrents formants du son synthtis en fonction du type de voix utilis (soprano, alto,
contretnor, etc.). Les paramtres ncessaires son fonctionnement sont lindice dinclinaison
du spectre (cslope), le type de voix (sex), la frquence mdiane de la tessiture de la voix
utilise (f0moyen), la liste des amplitudes des formants ajuster, la frquence de la
fondamentale (f0) et un coefficient dynamique pour la modification du spectre (coefamp).
Lalgorithme de la rgle dajustement des amplitudes de formants peut tre rsum de la
faon suivante :
tino = coefamp.(f0/f0moyen)ajus3
Si cslope est ngatif, alors les fonctions suivantes sont utilises :
Dans le cas dune voix masculine :
amplitude ajuste = amplitude.tino.coefamp.(3+(1,1.((400-f0)/300)))
Dans le cas dune voix fminine :

129 BAISNEE, Pierre-Franois, CHANT manual, Document Ircam : Paris, 1985, p. 34.
130 IOVINO, Francisco ; LAURSON, Mikael, Rule for the Automatic Calculation of the Amplitude , fichier voice-rules.lisp de la
bibliothque PW-Chant, op. cit.
131 BAISNEE, Pierre-Franois, CHANT manual, Document Ircam : Paris, 1985, p. 34-36.
132 IOVINO, Francisco ; LAURSON, Mikael, Rule for the Vocal Effort Correction , fichier voice-rules.lisp de la bibliothque PWChant, op. cit.

67
amplitude ajuste = amplitude.tino.coefamp.(0,8+1,05.((1000f0)/1250))
Si cslope est positif, il est utilis de la manire suivante pour mettre
lchelle les amplitudes de chaque formant :
scaler = cslope.exp(ajus1.atan(ajus2.Ln(f0/f0moyen)))
amplitude ajuste = amplitude.tino.scaler

g)

Rgle pour lajustement des frquences du


premier et du deuxime formant133 134
Johan Sundberg a montr que dans le cas de notes situes dans le registre aigu,

les frquences des deux premiers formants sont modifies, suivant alors les mouvements de la
fondamentale f0 lorsque celle-ci monte et pourrait dpasser la frquence du premier
formant135.
La rgle dauto ajustement des frquences du premier et du deuxime formant
de CHANT applique les observations faites par Sundberg. Ses diffrents paramtres sont la
liste des frquences des formants ajuster, la frquence de la fondamentale (f0), le type de
voix (sex) et un indice de correction (corr). Lalgorithme de cette rgle peut tre rsum de la
faon suivante :
Si f0 est plus grand que la frquence de premier formant, celle-ci est
ajuste de la faon suivante :
f1 = corr.(f0-f1)
A moins que le type de voix utilise soit celle dun contretnor, les
oprations suivantes sont effectues :
Si f2 est plus grand ou gal 1300 et si f0 est plus grand ou gal 200
alors :
f2 = corr.(2/3).(f0-200).((f2 1300)/700)
Si f2 est plus petit ou gal 30+2f0 alors :
f2 = corr.((30+2f0)-f2)

133 BAISNEE, Pierre-Franois, CHANT manual, Document Ircam : Paris, 1985, p. 36.
134 IOVINO, Francisco ; LAURSON, Mikael, Rule for the Automatic Bending of the First two Formants , fichier voice-rules.lisp de la
bibliothque PW-Chant, op. cit.
135 SUNDBERG, Johan, The Science of the Singing Voice, Dekalb (Illinois) : Northern Illinois University Press, 1987.

68

D. Le programme CHANT aujourdhui :


utilisation travers Diphone Studio et
Max/MSP
La synthse par fonctions donde formantique ne fut pratiquement
implmente qu travers le programme CHANT. Comme cela a t montr dans (I)-(B)-(a),
CHANT connu un important succs dans les annes quatre-vingt et au dbut des annes
quatre-vingt-dix mais fut rapidement oubli et abandonn au profit dautres programmes et
dautres techniques de synthse. La dernire implmentation complte de CHANT se fit en
1992 dans le programme PatchWork avec la bibliothque PW-Chant136. PatchWork fut
toutefois remplac par OpenMusic partir de 1998 mettant dfinitivement fin la dernire
version de CHANT.
Malgr tout, CHANT, ou plutt la synthse par fonctions donde formantique
perdure toujours de nos jours dans certains programmes dvelopps par lIRCAM bien que
lon reste trs loin des versions compltes disponibles avant 1995. Ces diffrents cas vont tre
ici prsents.

a)

CHANT dans Diphone Studio137


Diphone Studio est un groupe dapplications permettant lanalyse puis la

synthse de sons en utilisant diffrents modles et ce de faon trs intuitive. Deux types
danalyse sont disponibles dans Diphone Studio : lanalyse additive effectue par le
programme Addan et lanalyse par modle de rsonnance effectue par le programme
Resan . Les rsultats de chacune dentre-elles peuvent tre ensuite utiliss pour la synthse
de son avec les diffrentes techniques disponibles : additive, PSOLA, CHANT, DirectSignal
et GRET.
Bien quil soit ici question de CHANT, il serait plus juste de parler de synthse
par fonctions donde formantique. En effet, aucune des rgles de CHANT nest disponible
dans Diphone Studio et le contrle des paramtres de synthse est extrmement rduit.
Un autre gros inconvnient de CHANT dans Diphone Studio pour la synthse
de son vocaux est que seul les rsultats obtenus par une analyse par modle de rsonnance
peuvent tre utiliss. CHANT est donc ici plutt orient vers une utilisation pour la synthse

136 IOVINO, Francisco ; LAURSON, Mikael, PatchWork PW-Chant reference, Paris : IRCAM, 1996.
137 LOIZILLON, Guillaume, Diphone Studio: User Manual and Tutorial, Paris : IRCAM, 1999.

69
de sons percussifs, le modle par fonctions donde formantique permettant dobtenir de trs
bons rsultats pour ce cas de figure.
Si CHANT est implment dans Diphone Studio de nos jours, ce nest
certainement pas pour effectuer de la synthse vocale. Il faut donc retenir de ce cas que la
synthse par fonctions donde formantique peut avoir dautres utilisations que celles pour
lesquelles elle a t cre lorigine comme le souligne Xavier Rodet :
On aura compris que le programme CHANT na pas pour ambition restrictive
ltude de la voix, ou plutt que nous ne considrons pas la voix comme un objet
simple, univoque. Mais que bien au contraire la voix se prsente pour nous comme un
point de dpart dune richesse et dune complexit la fois uniques et incontournables
par lexemplarit de ses productions et leur grande diversit, notamment par la mise
jour de la notion constitutive darticulation.138

b)

Chant dans Max/MSP


Max/MSP est aujourdhui lun des outils les plus utilis pour le traitement du

signal orient vers la musique139. Une bibliothque dobjets regroupant quelques unes des
rgles et des procds de CHANT a t cre par Francisco Ionivo.
A la diffrence de CHANT ou de PatchWork, Max/MSP est un logiciel de
traitement en temps rel. La bibliothque dobjets de Fransisco Iovino y est donc utilise de
faon instantane pour produire des sons de type vocaux. Lavantage dun tel systme est
quil peut par exemple tre connect un priphrique Midi pour une utilisation en direct par
le musicien. Son gros inconvnient est quil ne permet pas de produire des rsultats aussi
prcis que ceux gnrs par un systme en temps diffr o il est possible de prciser
lavance les voyelles utilises, les nuances ou encore le phras.
Afin de crer un patch reproduisant le modle de synthse de CHANT, il est
ncessaire dans un premier temps dutiliser cinq gnrateurs de FOFs et de les connecter en
parallle. Pour ceci, il est possible de crer un patcher rcuprant tous les paramtres
ncessaires la synthse (largeurs de bande, amplitude et frquences des formants, etc.) et qui
les envoie aux diffrents gnrateurs de FOFs :

138 RODET, Xavier ; BARRIERE, Jean-Baptiste ; POTARD, Yves, Rapport de recherche n35 : Chant, de la synthse de la voix la
synthse en gnral, Paris : IRCAM, 1985, p. 20.
139 http://cycling74.com/products/Max/Mspjitter/ Site officiel commercial du programme Max/MSP (en ligne le 04/09/2010).

70

Fig. 46 Patcher fofs rcuprant depuis le patch principal les diffrents paramtres ncessaire
au fonctionnement des gnrateurs de FOFs connects en parallle.

La bibliothque de CHANT pour Max/MSP met disposition de lutilisateur


les diffrentes rgles suivantes :

Calcul automatique des amplitudes des formants : chant_autoamp

Correction de lamplitudes des formants en fonction de leffort vocal :


chant_spcor

Calcul automatique des largeurs de bande des formants : chant_autobw

Vibrato : chant_vibrato

Jitter : chant_jitter

En les utilisant, il nest ncessaire de donner que les frquences des formants
pour que le systme fonctionne, les autres paramtres sont calculs automatiquement. Un
patch utilisant la bibliothque CHANT de Max/MSP peut avoir la forme suivante :

71

Fig. 47 Patch utilisant la bibliothque de CHANT pour Max/MSP.


La synthse par fonctions donde formantique, et par consquent le programme
CHANT, ont t beaucoup utiliss entre le milieu des annes quatre-vingt et la fin des annes
quatre-vingt-dix dans la production musicale contemporaine en particulier lIRCAM. Cet
outil, lorigine conu pour la synthse de la voix chante sest rvl tre aussi
particulirement efficace dans la synthse de sons percussifs suivis dune rsonnance
(percussions, instruments cordes princes et frappes, etc.). Cest dailleurs pour ce type
dutilisation quil est disponible dans le programme Diphone Studio avec le systme
danalyse ResAn.
Dans la partie suivante, un exemple non-exhaustif dimplmentation de
CHANT dans le programme OpenMusic ralis par nos soins est prsent.

72

III. Implmentation possible et


utilisation du programme CHANT dans
OpenMusic : la bibliothque chant-lib

Exemple dutilisation de la bibliothque chant-lib dans OpenMusic

73
La synthse par fonctions donde formantique telle quelle est implmente
dans le programme CHANT permet dobtenir des rsultats dune trs grande qualit pour la
synthse de la voix chante. En dpit de ce constat, il a t montr que depuis sa rimplmentation dans PatchWork en 1992, le programme CHANT (et toutes ses fonctions) na
jamais t port dans son intgralit sur des plateformes actuelles.
En effet, bien que la bibliothque de CHANT pour Max/MSP prsente dans
(II)-(D)-(b) permette encore lutilisation de certaines des rgles et des fonctions de CHANT,
elle est loin doffrir toutes les possibilits du programme dorigine notamment cause du
fonctionnement en temps rel de Max/MSP.
La version de CHANT pour PatchWork tait particulirement complte et
interactive. La bibliothque de CHANT pour Max/MSP sen est dailleurs trs certainement
inspire. PatchWork fut progressivement remplac par OpenMusic partir 1998 laissant
labandon cette collection doutils particulirement efficaces pour la synthse de la voix.
OpenMusic et PatchWork possdent beaucoup de points communs dans leur
architecture, ils sont par exemple tous deux programms en Common LISP. Il est par
consquent envisageable dimaginer que le portage de certains des lments de la
bibliothque PW-Chant sur OpenMusic se fasse de faon assez aise. Une telle opration
permettrait de redonner accs au synthtiseur CHANT par le biais dun logiciel open source
et donc disponible tous.
Dans ce chapitre, une proposition non exhaustive dimplmentation du
programme CHANT dans OpenMusic ralis par nos soins va tre dcrite. Les outils crs
seront par la suite tests en essayant de reproduire de la faon la plus fidle possible Lair de
la reine de la nuit de La flute enchante de Mozart synthtis par lquipe de Xavier Rodet
lIRCAM en 1984.

74

A. Le programme OpenMusic et la synthse par


Fonctions dOndes Formantique
a)

Fonctionnement et architecture de
OpenMusic
o Le Common LISP la base de larchitecture dOpenMusic140 141
Avant de dcrire et dexpliquer le fonctionnement dOpenMusic, il est

important de redonner quelques notions sur le langage la base de sa structure : le Common


LISP. LISP est lune des plus anciennes familles de langage de programmation imprative.
Les langages LISP furent fortement utiliss dans les annes soixante-dix et quatre-vingt dans
les domaines de recherche sur lintelligence artificielle. De nos jours, on les retrouve
principalement dans la programmation pour la musique assiste par ordinateur et dans le
domaine des finances.
OpenMusic est programm dans un dialecte particulier des langages de la
famille LISP : le Common LISP. Cest une version standardise par ANSI142 des variantes
divergentes de LISP qui lont prcd.
Lune des grandes spcificits des langages LISP est le traitement de liste. Une
liste est constitue dlments entours par deux parenthses et spars par des espaces selon
le modle suivant : (a b c d 1 2 3 4 pim pam poum). Des listes peuvent en contenir
dautres et ce linfini : ((a b) (c d)).
Les fonctions pour le traitement des listes sont elles-mmes contenues dans des
listes. En LISP, une fonction est invoque en plaant son nom au dbut de la liste traiter. Par
exemple pour effectuer lopration 1+2, on crira : (+ 1 2).
Tout comme dans lexemple donn ci-dessus, des listes contenants des
fonctions peuvent tre elles aussi embotes. Ainsi, lexpression suivante : (- 1 (+ 1 2))
correspond 1-(1+2).
Les commentaires sont introduits avec des points-virgules sils ne sont que sur
une ligne et sont encadrs par #| commentaire |# sils stalent sur plusieurs lignes.

140 WINSTON, Patrick-Henry ; HORN, Berthold-Klaus-Paul, LISP Third Edition, Reading (Massachusetts) : Addison-Wesley, 1989.
141 http://common-lisp.net/ Site officiel de la communaut travaillant sur Common Lisp (en ligne le 04/09/2010).
142 American Standart National Institute.

75
Les codes LISP tant cods en ASCII143 dans OpenMusic, il est ncessaire de
normaliser le nom des fonctions et des variables utilises ainsi que les lignes de commentaires
pour quils soient compatibles avec ce standard. Par consquent, lutilisation des accents et
des caractres spciaux tel que est prohibe dans les codes LISP.
Enfin, il est important de prciser que OpenMusic utilise le standard CLOS qui
fait partie de Common LISP. CLOS tant labrviation Common Lisp Object System, on
comprend quil est ici fait rfrence de la programmation oriente objet qui est abondement
utilise dans OpenMusic.
o lments fondamentaux dOpenMusic144 145
OpenMusic est dvelopp lIRCAM depuis 1998 par Grard Assayag, Carlos
Agon et Jean Bresson. Cest un environnement de dveloppement graphique permettant la
cration de patchs pour la composition musicale assiste par ordinateur (CAO). De la mme
manire que dans Max/MSP, un patch est cr en connectant entre eux diffrents objets
reprsents par des icones. Certains bnficient dune interface graphique ddie, comme les
diteurs de partitions ou encore les fichiers audio qui peuvent tre reprsents par leur forme
donde, on parle alors de classes (cf. partie suivante : Bibliothque, package, fonctions et
classes).

Fig. 48 Exemple de patch effectuant une transposition dans OM Daprs le patch exemplepatch.omp

146

143 American Standart Code for Information Interchange.


144 HADDAD, Karim, OpenMusic Users Manual, Paris : IRCAM, 2003.
145 http://recherche.ircam.fr/equipes/repmus/OpenMusic/index.html (en ligne le 04/09/2010).
146 Disponible sur le cd cd/om.

76

OpenMusic (OM) est dvelopp sous une licence GNU/GPL147 et est bas sur
le langage Common Lisp tout comme son prdcesseur PatchWork. Linterface graphique
interprtant les codes Lisp ainsi que lutilisation du standard CLOS148 rendent son utilisation
particulirement intuitive. Avec CLOS, la programmation dans OpenMusic est donc
oriente-objet .
La plateforme de travail la base dOpenMusic est appele Workspace .
Elle se prsente sous la forme dun explorateur de dossiers dans lequel il est possible de
trouver des patchs (damiers verts) et des dossiers contenants des patchs ou dautres dossiers
comme le montre la figure suivante :

Fig. 49 Exemple de Workspace dans OpenMusic.


Un autre lment fondamental de OM est le listener. Cest une interface de
communication entre lutilisateur et le noyau Digitool Macintosh Common Lisp avec lequel le
programme fonctionne :

Fig. 50 Listener dans OpenMusic.


147 Licence Publique Gnrale.
148 Common Lisp Objet System.

77

o Bibliothques, packages, fonctions et classes149 150


Les objets utiliss dans les patchs de OM sont rpertoris dans diffrents
packages qui peuvent tre visualises dans la fentre Library comme le montre la figure 53.
Certains dentre eux sont directement intgrs la base dOpenMusic tandis que dautre
peuvent tre ajouts en fonction des besoins de lutilisateur.
On trouve sur la partie suprieure des icones reprsentant un objet dans OM ses
diffrentes entres et sur la partie infrieure ses sorties symbolises par des boules appeles
slots dans le manuel dOpenMusic. Il existe deux types dobjet dans OpenMusic hritant
directement du standard CLOS pour la programmation oriente objet : les fonctions et les
classes.
Les fonctions sont en mesure de prendre en entre diffrents types de donnes
(chaine de caractre, nombres, etc.) et ne peuvent retourner quun seul paramtre. Les
fonctions sont composes de mthodes rpondants chacune un type de donnes. Ainsi, plus
une fonction pourra prendre en paramtre un nombre important de type de donnes, plus elle
contiendra de mthodes.

Fig. 51 Exemple de fonction dans OM.


Les classes sont des prototypes pour certains types dobjets et permettent de
grouper nimporte quel ensemble de donnes dans une seule entit. Les classes retournent
autant de paramtres quelles ont dentres. La premire entre correspond toujours au self de
la classe reprsentant lobjet dans son intgralit avec tous ses paramtres. Enfin, il est
important de mentionner le principe dhrdit dans le fonctionnement des classes. En
effet, une classe peut hriter des proprits dune autre et ce linfini.

Fig. 52 Exemple de mthode dans OM.


149 HADDAD, Karim, OpenMusic Users Manual, Paris : IRCAM, 2003.
150 http://recherche.ircam.fr/equipes/repmus/OpenMusic/index.html Site officiel du programme OpenMusic (en ligne le 04/09/2010).

78

La fentre Library dOpenMusic classe les diffrents objets dun package en


fonction de son type :

Fig. 53 Organisation de la fentre Library dans OpenMusic.

b)

Premires tentatives dimplmentation de


CHANT dans OpenMusic : la bibliothque
omChroma151 152
Lune des bibliothques dobjets la plus ancienne dOpenMusic est

omChroma. Elle est ddie au contrle de systme pour la synthse sonore tel que SuperVP
ou encore CSOUND. Dans sa premire version de septembre 2000, elle incluait galement
une collection dobjets pour le contrle de la synthse dans CHANT. OpenMusic nayant pas
t conu pour effectuer des tches de traitement numrique du signal, omChroma faisait
appel au plugin CHANT contenu dans Diphone. Ce dernier devait donc tre install sur la
machine excutant lopration dcrite prcdemment.
Les objets CH-FOB-EVT et chant-patches permettaient la cration dun fichier
SDIF qui tait envoy et utilis par CHANT pour gnrer le son de synthse. chant-patches,
lorsquil tait valu, permettait la slection dun modle de connexion des diffrents
lments de CHANT :
151 ASSAYAG, Grard ; AGON, Carlos, OpenMusic omChroma: Paradigms for the high-level musical control of sonic processes using
omChroma, Paris : IRCAM, 2000, p. 29-30.
152 BRESSON, Jean, Sound Processing in OpenMusic : actes de la neuvime Conference on Digital Audio Effects (DAFx-06), Montral,
18-20/09/2006, Paris : IRCAM, p. 4.

79

Fig. 54 Modles de connexion des diffrents lments de CHANT dans le plugin CHANT de
Diphone Studio

153

Ltape de production du fichier SDIF et de synthse tait mene bien par


lobjet synthesize qui, la diffrence des deux autres, est toujours disponible dans la
bibliothque omChroma dOpenMusic.
Malheureusement, les rsultats obtenus dans OpenMusic pour la synthse avec
CHANT taient loin dgaler ceux des versions antrieures comme cela est prcis dans le
manuel dutilisation de omChroma :
Le synthtiseur SDIF de CHANT ne permet pas davoir un contrle de haut niveau
sur ses paramtres. Dans le but de produire des sons plus convaincants, il est
ncessaire de trouver de meilleures stratgies de contrle, davoir des instruments plus
labors ainsi que des paradigmes plus sophistiqus.154

153 ASSAYAG, Grard ; AGON, Carlos, op. cit, p. 30.


154 ASSAYAG, Grard ; AGON, Carlos, op. cit, p. 30, citation traduite de langlais : The Chant SDIF synthesizer does not provide any
high-level controls for these parameters. In order to generate more convincing sounds, it is necessary to find better control strategies, have
more elaborated instruments and more sophisticated paradigms. .

80

B. Implmentation possible de CHANT dans


OpenMusic : la bibliothque chant-lib
Bien que quelques tentatives dimplmentation de CHANT dans OpenMusic
aient t faites, elles nont jamais totalement t en mesure de remplacer les outils existants
dans le pass. Il a t montr dans la partie prcdente que la rutilisation du plugin CHANT
de Diphone Studio nest pas la meilleure solution.
Il est ais de voir daprs les observations faites dans le paragraphe (II)-(C) que
la complexit du programme CHANT rside plus dans ses diffrentes rgles que dans son
procd de synthse. En effet, il a t montr quil est particulirement simple dimplmenter
un synthtiseur par fonctions donde formantique dans CSOUND en connectant en parallle
plusieurs opcodes fof (cf. (II)-(A)-(c) et fof-sop.csd155 ).
Interfacer OpenMusic avec CSOUND est une opration simple effectuer avec
la collection doutils disponibles dans la bibliothque om2csound. Il tait donc tout fait
possible dimaginer la cration dune collection dobjets permettant limplmentation de
CHANT dans OpenMusic grce CSOUND.
Ces outils ont ainsi t regroups dans une bibliothque nomme chant-lib et
fonctionne dune manire semblable ceux autrefois disponibles dans PatchWork.
Dans cette partie, nous prsentons la dmarche que nous avons adopte pour
implmenter CHANT dans CSOUND.

a)

Description gnrale de la bibliothque


chant-lib
Limplmentation des diffrents lments de CHANT dans OpenMusic passe

ici par une collection de fonctions rpertories dans la nouvelle bibliothque que nous avons
construite : chant-lib. Elles gravitent toutes autour dune fonction principale appele chant.
Celle ci permet de rcuprer lensemble des paramtres ncessaires la synthse, de les
transformer en partition CSOUND et de jouer cette partition avec lorchestre chant.orc
dont le fonctionnement sera dtaill dans (III)-(B)-(d). La fonction chant compte au total neuf
entres. Ses principaux paramtres sont la liste des dures des notes, la liste des dbuts des

155 Disponible sur le cd cd/csound et dans lannexe n5.

81
attaques des notes et la liste des frquences f0. Les autres entres permettent de connecter les
diffrentes rgles et fonctions calculant les valeurs des largeurs de bandes, frquences et
amplitudes des formants, vibrato, etc.
Les autres objets de la bibliothque chant-lib permettent de gnrer les
paramtres de la synthse de la mme manire que dans les versions antrieures de CHANT
et en respectant un modle semblable celui de la bibliothque PW-Chant de PatchWork :

jitter : contrle des paramtres des micros-fluctuations de la frquence de la


fondamentale (cf. (III)-(B)-(e)).

vibra : contrle des paramtres du vibrato (cf. (III)-(B)-(e)).

envelope : cre une enveloppe de type attaque maintien chute (cf. (III)-(B)-(f)).

envelope2 : cre une enveloppe partir dun BPF (cf. (III)-(B)-(f)).

envelope-vib : cre une enveloppe pour lamplitude du vibrato (cf. (III)-(B)-(e)).

ampf : gnre une liste damplitudes de formants en fonction dune voyelle et dun
type de voix (cf. (III)-(B)-(g)).

ffreq : gnre une liste de frquences de formants en fonction dune voyelle et dun
type de voix (cf. (III)-(B)-(g)).

bdwth : gnre une liste de largeurs de bandes en fonction dune voyelle et dun type
de voix (cf. (III)-(B)-(g)).

auto-bw : calcul automatique des largeurs de bandes des formants (cf. (III)-(B)-(h)).

auto-bend : ajustement automatique de la frquence des deux premiers formants (cf.


(III)-(B)-(h)).

auto-amp : calcul automatique des amplitudes des formants (cf. (III)-(B)-(h)).

amp-cor : correction automatique des amplitudes des formants en fonction de leffort


vocal (cf. (III)-(B)-(i)).

ampmid2db : convertie une liste damplitude linaire en une liste damplitude


logarithmique en dcibels (cf. (III)-(B)-(j)).

onset-calc : calcul automatique de lonset en fonction de la dure des notes (cf. (III)(B)-(k)).

voy-calc : gnre une liste de la mme voyelle gale au nombre de notes jouer (cf.
(III)-(B)-(k)).

kill-last : supprime le dernier lment dune liste (cf. (III)-(B)-(k)).


La figure 55 prsente un exemple simple de synthse utilisant quelques unes

des fonctions prsentes ci-dessus. Deux notes de frquences 440 et 550 Hz sont synthtises.
La voix utilise est une voix de soprano et la voyelle un a :

82

Fig. 55 Exemple simple de synthse avec la bibliothque chant-lib en utilisant la fonction


principale chant et quelques unes des autres fonctions disponibles. Le patch produit ici deux notes
de frquence 440 et 550 Hz chantes par une soprano sur la voyelle a Daprs le patch
156
synthese-base.omp .
Lexemple donn prcdemment reste particulirement simple. Avant
dexpliquer de faon prcise le fonctionnement et la construction de chaque fonction de la
bibliothque chant-lib et leur rle dans la synthse, il est important de dcrire le cheminement
du raisonnement qui a amen la conception de larchitecture globale des lments de cette
dernire.

b)

La bibliothque om2csound : modle de


dpart dans la ralisation du systme
o Prsentation du matriel dorigine
OpenMusic offre plusieurs possibilits dinterfaage avec CSOUND. On peut

par exemple citer les objets contenus dans la bibliothque chroma-classes157 qui permettent
lutilisation de certains opcodes de CSOUND dans un patch OM. Ils se prsentent sous la
forme de classes, rattaches un orchestre CSOUND contenant lopcode muler. Ltape de
synthse se fait dans CSOUND avec lobjet synthesize comme le montre la figure 56 :

156 Disponible sur le cd cd/om.


157 Aucune documentation nest actuellement disponible pour cette bibliothque.

83

Fig. 56 Exemple dutilisation de lobjet FOF-1 de la bibliothque chroma-classes Daprs le patch


fof-chroma.omp

158

Cette solution sest rvle inadapte dans notre cas dans la mesure o elle
limitait fortement la libert dans lutilisation dorchestres CSOUND complexes.
Lautre modle dinterfaage dOpenMusic avec CSOUND est celui propos
par la bibliothque om2csound159. Dans ce cas, OpenMusic sert de support la cration de
partitions CSOUND qui sont ensuite joues avec un orchestre donn.
La fonction auto-editsco de om2csound permet de gnrer une partition
CSOUND. Elle prend en argument des listes contenant les diffrentes tables de fonctions
utilises, les notes jouer ainsi que les diffrents paramtres qui leurs sont relatifs. Elle
retourne le chemin daccs de la partition cre.
Les tables de fonctions sont gnres grce la fonction table. Ses quatre
premiers arguments sont : le numro de la fonction, sa dure dexcution (zro si inconnue),
le nombre de point dans la table et le GEN utilis. Les autres informations sont donnes aux
dernires entres sous la forme dune liste.
La liste de notes et les paramtres dun instrument sont crs avec la fonction
instrument1. Ses arguments sont le numro de linstrument, une liste des onsets, une liste de
la dure des notes et les diffrents p-fields.
Une fois la partition cre, elle peut tre joue dans CSOUND avec la fonction
csound-synth qui prend en paramtres les chemins daccs de la partition et de lorchestre. Il

158 Disponible sur le cd cd/om.


159 HADDAD, Karim, om2csound : bibliothque de modules pour la gnration de scores pour Csound (version 1), Paris : IRCAM, 1999.

84
est important de prciser que la fonction auto-editsco peut donc tre directement connecte
csound-synth. Il est enfin possible dcouter et de visualiser le son produit avec la classe
sound.

Fig. 57 Exemple dutilisation de la bibliothque om2csound Daprs le patch


om2csound.omp

160

La bibliothque om2csound fait partie intgrante de larchitecture de la


bibliothque chant-lib dont il est question dans ce chapitre. Ainsi, un nombre important des
fonctions de om2csound sont utilises dans les diffrents objets de chant-lib. Il est primordial
pour cette raison dactiver et de charger om2csound chaque fois que des lments de chantlib sont utiliss dans OpenMusic.
o Fonction pour la conversion de listes de paramtres en partition
CSOUND : exec-csound
Les diffrents paramtres envoys la fonction chant sont transforms en une
partition CSOUND qui est ensuite lue avec lorchestre chant.orc . Cette opration est

160 Disponible sur le cd cd/om.

85
effectue par une fonction interne la bibliothque chant-lib qui nest pas visible dans le
package de cette dernire : exec-csound. Celle-ci sinspire fortement des fonctions autoeditsco et csound-synth de la bibliothque om2csound.
Afin de comprendre au mieux son fonctionnement, il est ncessaire dtudier
son code LISP. Celui-ci est prsent dans lannexe n7.

c)

La fonction chant
La fonction chant permet de crer la liste de paramtres qui sera envoye la

fonction exec-csound et qui sera convertie en partition. Pour cela, elle rcupre et analyse les
rsultats des autres fonctions de la bibliothque chant-lib qui sont envoys sous formes de
listes.
chant compte au total huit entres obligatoires et une optionnelle. Chacune
dentre elles permet de faire passer un type de paramtre particulier ncessaire la synthse.
o Entres pour lonset, la dure et la frquence f0
Lentre n1 (onset) permet de dfinir la liste de dures correspondant au
minutage du dbut de chaque note. Cette liste est de la forme : (t0 t1 t2 (tn-1+tn)) o t est la
dure totale dun vnement dans CSOUND. Par exemple, si on souhaite jouer deux notes
successives ayant chacune une dure de deux secondes, onset aura pour valeur (0 2). Si on
ajoute un silence entre ces deux notes dune dure dune seconde, onset = (0 3).
Dans la mesure o cette entre naccepte que des listes, il est ncessaire de
mettre des parenthses mme lorsque une seule dure est fournie. Pour une note de quatre
secondes on notera donc : (4).
Lentre n2 (duree) permet de donner la liste des dures de chaque note. Si on
reprend le premier exemple donn prcdemment (deux notes conscutives de deux
secondes), duree sera gal (2 2). Tout comme le paramtre onset, duree naccepte que des
listes.
Lentre n3 (f0) permet de fournir la liste des frquences de la fondamentale
en Hertz. Par exemple deux notes successives, un La3 et un Do#4 se noteront (440 550). Un
Mi4 (660).

86

Fig. 58 Exemples de phrases musicales avec lobjet chant - Daprs le patch


ons-dur-freq.omp

161

o Entres pour les paramtres de lenveloppe, du vibrato et des listes


damplitudes des formants
Lentre n4 (envelope) permet de connecter lune des deux fonctions pour le
contrle de lenveloppe des notes ou de la phrase musicale joue : envelope et envelope2 dont
le fonctionnement sera dcrit plus en dtail dans (III)-(B)-(f). Ces fonctions permettent
galement dindiquer lamplitude de chaque note en dcibels.

Fig. 59 Exemples de connexions des fonctions envelope et envelope2 la fonction chant Daprs le patch envelope.omp

162

Lentre n5 (vibra) permet de connecter la fonction vibra qui contrle les


paramtres des diffrents types de modulation de la frquence f0 de la fondamentale. Il est
important de prciser que la fonction jitter doit tre connecte vibra pour avoir un effet sur
le son produit comme cela sera expliqu plus en dtail dans (III)-(B)-(e).
Lentre n6 (ampf) permet de dfinir la liste de listes des amplitudes des
formants du son produit. Les amplitudes donnes sont en dcibels et doivent avoir des valeurs
ngatives. Elles seront ainsi soustraites lamplitude positive du premier formant dont les
valeurs sont dfinies par la fonction envelope. Lorchestre CSOUND chant.orc de la
bibliothque chant-lib fonctionnant avec cinq gnrateurs de formants, il est ncessaire de
fournir des listes de (5 1) amplitudes (lamplitude du premier formant est donne dans la
fonction envelope).

161 Disponible sur le cd cd/om.


162 Disponible sur le cd cd/om.

87
Si deux voyelles a sont chantes successivement, la liste de listes damplitudes
sera de la forme : ((-6 -32 -20 -50) (-6 -32 -20 -50)). Dans le cas dun seul a : ((-6
-32 -20 -50)).

Enfin, en plus dtre entre manuellement, la liste de listes damplitude peuttre gnre avec les fonctions ampf et auto-amp.

Fig.60 Exemple dutilisation de liste de listes damplitudes de formants avec modulations de la


frquence de la fondamentale - Daprs le patch ampf+vib.omp

163

o Entres pour les listes de frquences et de largeurs de bandes de


formants
Les entres sept et huit permettent de dfinir respectivement la liste des listes
des frquences (ffreq) et la liste des listes des largeurs de bandes (bdwth) des formants. Elles
fonctionnent de la mme manire que lentre n6. La seule diffrence rside dans le nombre
dlments de chaque liste : cinq au lieu de quatre pour lamplitude des formants.
La fonction ffreq, permet de donner une liste de listes de formants en fonction
dun type de voix et dune voyelle donne. bdwth effectue la mme tche pour les largeurs de
bandes des formants. Enfin, la fonction auto-bw permet de calculer automatiquement les
largeurs de bandes des formants en fonction de leur frquence.

163 Disponible sur le cd cd/om.

88

Fig. 61 Exemples dutilisations de liste de listes de frquences et de largeurs de bandes de


formants Daprs le patch ffreq+bdwth.omp .

Enfin, il existe une neuvime et dernire entre (out-name). Dans la mesure o


celle-ci est de moindre importance, elle est optionnelle ce qui laisse le choix lutilisateur de
lafficher ou pas. Elle permet de modifier le nom par dfaut (chant.aif) du fichier audio
issu du processus de synthse. Dans la mesure o ce nom est une chaine de caractres, il doit
tre entour par des guillemets.
Le fonctionnement de la fonction chant est prsent dans lannexe n8.

d)

Description gnrale lorchestre CSOUND


chant.orc
CSOUND permet deffectuer ltape de synthse dans notre systme de

CHANT pour OpenMusic. La partition my-sco.sco produite par la fonction chant est
joue dans CSOUND avec lorchestre chant.orc .
Il serait inutile de prsenter maintenant le code complet de chant.orc dans
la mesure o il ne peut tre compris sans avoir tudi le fonctionnement et le rle des
diffrentes fonctions de la bibliothque chant-lib.
Nanmoins, il intressant ce stade de connatre le fonctionnement global de
chant.orc
i.

164

Les paramtres audio-numriques de lorchestre sont dclars. Le son produit sera en


mono et aura un taux dchantillonnage de 44100 Hz. Chaque priode k-rate contient
4410 chantillons et il y a 10 priodes k-rate par seconde.
sr = 44100

164 Le code complet de chant.orc est disponible dans lannexe n9.

89
kr = 4410
ksmps = 10
nchnls = 1

ii.

Les variables globales sont dclares. Elles permettent principalement le maintien de


certaines valeurs dune note une autre. Elles sont par exemples trs utiles pour la
cration denveloppes globales sur toute une phrase (cf. (III)-(B)-(f)) sur la fonction
enveloppe).
gilast init 0
gifre1 init 0
gifre2 init 0

[]
iii.

Le seul instrument de lorchestre est initialis. Les paramtres des cinq gnrateurs de
FOFs sont dclars tout comme certaines variables dont lutilit sera explique
ultrieurement.
koct = 0
kris = .003
kdur = .02
kdec = .007
iolaps = 100000
ifna = 1
ifnb = 2
itotdur = p3
iphs = 0
ifmode = 1
iinterp = p24
kenvar1 = 1
if0 = p4
aengar1 = 1

Comme nous lavons expliqu dans (II)-(A)-(c), les gnrateurs de FOFs sont
crs dans CSOUND avec lopcode fof qui est de la forme165 :
ares fof xamp, xfund, xform, koct, kband, kris, kdur, kdec, iolaps, \
ifna, ifnb, itotdur [, iphs] [, ifmode] [, iskip]

o :

xamp est lamplitude du flux de FOFs en dBfs.

xfund est la frquence f0 de la fondamentale.

xform est la frquence du formant.

koct est un index doctaviation, ici 0 pour empcher loctaviation.

kband est la largeur de bande du formant -6dB en Hertz.

kris, kdur et kdec sont les paramtres de lenveloppe de chaque impulsions, ici
respectivement 0.003, 0.02 et 0.007.

165 VERCOE, Barry, FOF , The canonical CSOUND Reference Manual, Version 5.09, d. sous la direction de Barry Vercoe,
Cambridge : MIT, 2005, p. 750-751, disponible en ligne : http://www.csound.com/manual/ (en ligne le 04/09/2010).

90

iolaps est la taille de lespace rserv dans la mmoire lors du chevauchement


de donnes, ici 100000.

ifna et ifnb sont les numros des tables de fonctions utilises pour le calcul des
impulsions et de leur enveloppe. ifna est une sinusode (GEN10) et ifnb une
sigmode (GEN19) (cf. (II)-(A)-(c)).

itotdur est la dure totale pendant laquelle lopcode fof restera actif. Ici,
itotdur est gal la dure de la note joue.

iphs est la phase initiale de la fondamentale, ici 0.

ifmode indique lopcode fof si la frquence du formant sera statique ou


dynamique. Sa valeur par dfaut au dbut de lorchestre est 1 (frquence
dynamique).

iskip indique lopcode fof si la phase dinitialisation de chaque note est


effectue ou non. Dans le cas dune phrase musicale o les notes sont joues
legato, iskip doit tre gal 1 (la phase dinitialisation est saute), dans le cas
inverse, iskip doit tre gal 0.

iv.

Les valeurs des frquences, des amplitudes et des largeurs de bande des formants sont
attribues des variables afin de faciliter la lecture des procds de traitement de ces
informations. (cf. (III)-(B)-(g)).

v.

Le vibrato est calcul partir des paramtres donns par la fonction vibra. (cf. (III)(B)-(e)).

vi.

Le jitter est calcul partir des paramtres donns par la fonction jitter. (cf. (III)-(B)(e)).

vii.

Si linterpolation linaire des formants est active, leurs frquences, amplitudes et


largeurs de bandes sont interpoles dune note une autre. Lenveloppe damplitude
dcrite soit par la fonction envelope soit par la fonction envelope2 est applique sur
chaque note si linterpolation linaire des formants est dsactive ou sur la phrase
musicale entire si elle est active.

viii.

Les amplitudes des formants sont ajustes selon lalgorithme dcrit dans (II)-(C)-(f) si
la fonction amp-cor est connecte lobjet chant dans OpenMusic. En effet, il est
important de rappeler que amp-cor est la seule fonction excute directement dans
CSOUND dans la mesure o lamplitude des formants varie au cours du temps en
fonction de lenveloppe.

ix.

La synthse FOF est excute en additionnant les signaux de cinq gnrateurs de


FOFs.

91
ar1 fof
iamp1*kenv*aenvg*kenvar1*aengar1,aint+(if0*amod*kenv_vib)+kfond
_var, afre1i, koct, kwid1i, kris, kdur, kdec, iolaps, ifna,
ifnb, itotdur, iphs, ifmode, iskip
ar2 fof aamp2i*kenv*aenvg, aint+(if0*amod*kenv_vib)+kfond_var,
afre2i, koct, kwid2i, kris, kdur, kdec, iolaps, ifna, ifnb,
itotdur, iphs, ifmode, iskip
ar3 fof aamp3i*kenv*aenvg, aint+(if0*amod*kenv_vib)+kfond_var,
afre3i, koct, kwid3i, kris, kdur, kdec, iolaps, ifna, ifnb,
itotdur, iphs, ifmode, iskip
ar4 fof aamp4i*kenv*aenvg, aint+(if0*amod*kenv_vib)+kfond_var,
afre4i, koct, kwid4i, kris, kdur, kdec, iolaps, ifna, ifnb,
itotdur, iphs, ifmode, iskip
ar5 fof aamp5i*kenv*aenvg, aint+(if0*amod*kenv_vib)+kfond_var,
afre5i, koct, kwid5i, kris, kdur, kdec, iolaps, ifna, ifnb,
itotdur, iphs, ifmode, iskip
asort = ar1 + ar2 + ar3 + ar4 + ar5
out asort
endin

Les parties en orange du code correspondent aux informations relatives


lamplitude des FOFs, les parties en mauve la frquence f0 de la fondamentale. Leur
signification sera donne ultrieurement.

e)

Modulations de la frquence de la
fondamentale
o La fonction jitter
La fonction jitter permet de contrler les paramtres des trois jitters connects

en parallle (cf. (II)-(C)-(d)) ajoutant des micro-fluctuations la frquence de la


fondamentale. Ses paramtres sont dans lordre :

Les amplitudes des trois jitters exprimes comme un ratio de f0 : jitt1, jitt2 et jitt3 dont
leurs valeurs par dfaut sont respectivement : 0.01, 0.02 et 0.03.

Les frquences de production des valeurs alatoires des trois jitter : jittf1, jittf2 et jittf3
dont les valeurs par dfaut sont respectivement : 50, 111 et 1218 Hz.
Dans OpenMusic, la fonction jitter se contente de rassembler les paramtres de

trois jitters et de les insrer dans une liste qui pourra tre envoye la fonction chant via la
fonction vibra (cf. figure 63). En dautres thermes, le corps de la fonction jitter se rsume :
(list jitt1 jitt2 jitt3 jittf1 jittf2 jittf3)

La cration du jitter dans CSOUND est dcrite dans lannexe n12.

92

o La fonction vibra
La fonction vibra permet de contrler les paramtres de la modulation
priodique de la frquence f0 de la fondamentale. Le vibrato utilis est du mme type que
celui de CHANT qui a t dcrit dans (II)-(C)-(a). En effet, il est coupl avec un ensemble de
jitters qui ont pour but dajouter des micros-fluctuations son amplitude et sa frquence afin
de reproduire les caractristiques naturelles dun vibrato vocal chez lhomme.

vibamp : amplitude du vibrato exprime comme un ratio de la frquence de la


fondamentale. Si vibamp=0, aucun vibrato nest appliqu, si vibamp=1, la frquence
de la fondamentale oscillera entre -50% et +50% de sa valeur initiale. Des valeurs
cohrentes pour vibamp peuvent tre comprise entre 0 et 0.07. Sa valeur par dfaut est
0.05.

vala1 et vala2 : amplitudes des deux jitters variant de faon alatoire lamplitude du
vibrato exprime comme un ratio de vibamp. Leur valeur par dfaut est 0.01.

tvala1 et tvala2 : frquence de production des valeurs alatoires modulant vibamp.


Leur valeur par dfaut est 5000Hz.

vibfreq : frquence de vibrato. Des valeurs cohrentes sont comprises entre 5 et 8 Hz.
La valeur par dfaut de vibfreq est 5Hz.

valf1 et valf2 : amplitudes des deux jitters variant de faon alatoire la frquence du
vibrato exprime comme un ratio de vibfreq. Leur valeur par dfaut est 0.01.

tvalf1 et tvalf2 : frquence de production des valeurs alatoires modulant vibfreq. Leur
valeur par dfaut est 1000Hz.
Enfin, il est important de prciser que la fonction vibra possde deux entres

optionnelles permettant la connexion des fonctions jitter et envelope-vib comme le montre la


figure 63.
Le traitement des informations par la fonction vibra dans OpenMusic est
expliqu dans lannexe n10.
La cration du vibrato dans CSOUND est dcrite dans lannexe n11.
o La fonction envelope-vib
Dans la ralit, lamplitude du vibrato dun chanteur est loin dtre constante.
En effet, celle-ci est en gnrale beaucoup plus faible au dbut et la fin dune note quau

93
milieu. Il est donc possible de parler denveloppe damplitude de vibrato comme le montre le
sonagramme suivant :

Fig. 62 Sonagramme montrant lenveloppe de lamplitude du vibrato dune note chante.


La fonction envelope-vib, lorsquelle est connecte la fonction vibra sur sa
douzime entre permet dintroduire une enveloppe de type attaque maintien chute
lamplitude du vibrato. Ses deux paramtres sont donc la dure de lattaque (att) et la dure de
la chute (rel) exprimes en secondes166. Leur valeur par dfaut est 0.1 (cf. figure 63).
Dans OpenMusic, envelope-vib se contente de lister les deux paramtres
donns :
(list att rel)

166 La cration du vibrato dans CSOUND est dcrite dans lannexe n11.

94

Fig. 63 Mode de connexion et diffrents arguments des fonctions vibra, jitter et envelope-vib Daprs le patch vibra+jitter+envelope-vib.omp

f)

167

Contrle de lenveloppe damplitude des


notes et des phrases musicales et de
linterpolation linaire dune note une
autre
Plusieurs objets permettent de contrler lenveloppe damplitude des notes et

des phrases musicales dans la bibliothque chant-lib pour OpenMusic. Leur utilisation et leur
fonctionnement vont tre prsents ici.
o La fonction envelope
La fonction envelope de la bibliothque chant-lib permet dappliquer une
enveloppe damplitude de type attaque maintien chute sur les diffrentes notes dune
phrase musicale produite par la fonction chant ou sur la phrase musicale dans sa totalit.
envelope est la seule fonction obligatoire avec chant de la bibliothque chant-lib. En effet,
elle doit tre connecte lentre envelope de la fonction chant pour que la synthse ait lieu.
Elle permet aussi de contrler les paramtres de linterpolation linaire entre chaque note.
Enfin, cest par cette fonction que la liste des amplitudes est transmise la fonction chant
comme le montre la figure 64. Les paramtres de envelope sont donc (dans lordre des
entres) :

167 Disponible sur le cd cd/om.

95

att : La dure de lattaque en secondes. Sa valeur par dfaut est 0,1.

dec : La dure de la chute en secondes. Sa valeur par dfaut est 0,1.

tpe : La dure de linterpolation linaire entre chaque note. Si celle-ci est gale zro,
ltape dinterpolation est saute dans CSOUND et lenveloppe sapplique toutes les
notes de la phrase musicale (cf. annexe n16 sur linterpolation linaire de la
fondamentale f0, des amplitudes, des frquences et des largeurs de bandes dans
CSOUND). Si celle-ci est suprieure zro, lenveloppe est applique la phrase
musicale dans sa totalit dans la mesure o les notes sont interpoles. Sa valeur par
dfaut est 0,15.

amps : La liste des amplitudes de chaque note jouer est en dcibels. Sa valeur par
dfaut est (70).
La tche effectue par la fonction envelope est particulirement simple

puisquelle consiste simplement en la cration dune liste avec les diffrents paramtres qui
lui sont fournis :
(list att rel interp amps)

Par exemple, une liste issue de la fonction envelope pourrait tre : (0.1 0.1 0 (70 70)) ce
qui correspond donc deux notes damplitudes soixante-dix dcibels, sans interpolation, avec
une attaque et une chute de 0,1 secondes.
Le traitement des informations retournes par envelope par la fonction chant
est dcrit dans lannexe n14.
o La fonction envelope2
La fonction envelope2 de la bibliothque chant-lib permet dappliquer une
enveloppe damplitude chacune des notes synthtises par lobjet chant. La forme de cette
enveloppe est dfinie par une BPF dont la sortie self peut-tre connecte sur la premire
entre de la fonction envelope2 (bpf0). La forme dcrite dans la BPF est alors transforme en
une table de fonction CSOUND (GEN07) dont la prcision (nombre de points) est dfinie par
la valeur donne la troisime entre (pnts) de la fonction envelope2 comme le montre la
figure 64. Sa valeur par dfaut est 2048. Enfin, la deuxime entre (amps) permet de
transmettre la liste des amplitudes des notes synthtiser lobjet chant.
Il faut prciser qu la diffrence de la fonction envelope, il nest pas possible
dutiliser linterpolation (cf. annexe n16 sur linterpolation linaire de la fondamentale f0, des
amplitudes, des frquences et des largeurs de bandes dans CSOUND). Dans la mesure o
lamplitude de chaque note est dfinie au niveau de la liste des amplitudes, il serait inutile

96
dappliquer une enveloppe complexe globale lensemble de la phrase musicale dans le cas
prsent.
Le mode de fonctionnement de envelope2 est dcrit dans lannexe n13.
Le traitement des informations retournes par envelope2 par la fonction chant
est dcrit dans lannexe n14.
La cration denveloppes damplitude dans lorchestre CSOUND chant.orc
est explique dans lannexe n15.

Fig. 64 Utilisation des fonctions envelope et envelope2 de la bibliothque chant-lib Daprs le


patch envelope1+2.omp

g)

168

Les fonctions ffreq, ampf et bdwth : cration


de listes de paramtres pour les formants
Il a t vu prcdemment que la frquence, lamplitude et la largeur de bande

des diffrents formants du systme vocal varient en fonction du type de voix et des voyelles
utilises. La bibliothque chant-lib possde un ensemble de fonctions capables de fournir les
paramtres des formants pour une synthse FOF comme le montre la figure 65. Leurs
paramtres sont les mmes :

sexe : type de voix utilise (soprano, alto, contretenor, tenor ou basse). Il est ici
important de rappeler que le noyau LISP dOpenMusic utilise le protocole ASCII169.

168 Disponible sur le cd cd/om.


169 American Standard Code for Information Interchange.

97
Les noms des types de voix ne doivent donc pas contenir daccents. La valeur par
dfaut de cet argument est soprano .

txt : liste des voyelles chanter (a, e, i, o ou u), le nombre dlments de cette liste
doit tre gal celui de la liste des frquences f0, des onsets et des dures de notes. La
valeur par dfaut de cette argument est (a).

Les fonctions permettant deffectuer ces tches sont donc :

ffreq qui permet de dlivrer une liste de listes de frquences de formants. On lutilise
en la connectant sur lenre ffreq de la fonction chant.

ampf donne une liste de listes damplitude de formants. On lutilise en la connectant


sur lentre ampf de la fonction chant.

bdwth donne une liste de listes de largeurs de bandes de formants. On lutilise en la


connectant sur lentre bdwth de la fonction chant.

Fig. 65 Crations de listes de paramtres de formants avec la bibliothque chant-lib - Daprs le


patch ampf+ffreq+bdwth.omp

170

Le fonctionnement des fonctions ffreq, ampf et bdwth est dcrit dans lannexe
n17. Le traitement des informations retournes par ffreq et bdwth par la fonction chant est
expliqu dans lannexe n18. Le cas de la fonction ampf est trait avec celui de la fonction
amp-cor dans lannexe n21 puisque le traitement des informations par chant dpend ici aussi
de la fonction amp-cor. Le traitement des largeurs de bandes, frquences et amplitudes des
formants dans CSOUND est prsent dans lannexe n19.

170 Disponible sur le cd cd/om.

98

h)

Les rgles auto-bw, auto-amp et auto-bend de


la bibliothque chant-lib
Comme cela a t expliqu prcdemment, les rgles utilises dans la

bibliothque chant-lib sont une simple r-implmentation de celles prsentes dans la


bibliothque PW-Chant de PatchWork dans la mesure o leur code LISP est totalement
compatible avec celui dOpenMusic. En effet, les seules modifications effectues concernent
la plupart du temps la forme des arguments pris par les fonctions afin de rendre ces dernires
compatibles avec les autres fonctions de la bibliothque chant-lib. Ainsi, les arguments
concernant les frquences de la fondamentale, les frquences, les amplitudes et les largeurs de
bandes des formants sont des listes de listes plutt que de simples listes.
Il est important de rappeler que les algorithmes de chacune des fonctions qui
vont tre ici prsentes ont t comments dans (II)-(C). Il ne sera donc pas question ici de
dcrire leur code LISP comme cela a t fait pour les fonctions prcdentes.
Enfin, il faut prciser que la rgle amp-cor fera ici figure dexception. Elle a en
effet fait lobjet dune rcriture complte dans CSOUND principalement cause de la
dimension dynamique de lamplitude des formants qui varie en fonction de leur enveloppe.
o La fonction auto-bw et le calcul automatique de la largeur de
bande des formants
Comme nous lavons vu dans (II)-(C)-(e), il est possible de calculer la largeur
de bande des formants de la voix en fonctions de leur frquence grce une courbe
parabolique dfinie par trois points de rfrence. Cette opration est effectue dans la
bibliothque chant-lib par la fonction auto-bw. Lunique entre (freq) de cette fonction prend
donc en argument une liste de listes de frquences de formants du mme type que celle
produite par les fonctions ffreq et auto-bend. Sa valeur par dfaut est une liste de frquence
dune soprano chantant un a : ((800 1150 2900 3900 4950)). La fonction auto-bw peut
par consquent jouer le mme rle que la fonction bdwth et peut la remplacer comme le
montre la figure 66.
o La fonction auto-amp et le calcul automatique de lamplitude des
formants
Il a t montr dans (II)-(C)-(f) quil est possible de calculer les amplitudes des
formants de la voix en fonction de leur frquence et de leur largeur de bande en simulant une

99
srie de filtres. La fonction auto-amp de la bibliothque chant-lib permet de mener bien
cette opration. Ses deux entres prennent respectivement en argument des listes de listes des
frquences des formants (freq) et de leur largeur de bande (bw). Il est donc possible de
connecter les fonctions auto-bend et ffreq sur lentre freq et les fonctions auto-bw et bdwth
sur lentre bw comme le montre la figure 66. Les valeurs par dfaut de ces deux entres sont
respectivement ((800 1150 2900 3900 4950)) et ((80 90 120 130 140)) ce qui
correspond une soprano chantant sur la voyelle a.
o La rgle auto-bend et lajustement automatique de la frquence du
premier et du deuxime formant
Il a t expliqu prcdemment que dans le cas de notes situes dans le registre
aigu, la frquence des deux premiers formants est modifie, suivant alors les mouvements de
la fondamentale f0 lorsque celle-ci monte et pourrait dpasser la frquence du premier
formant. Cette rgle est applique dans OpenMusic grce la fonction auto-bend de la
bibliothque chant-lib comme le montre la figure 66. Celle-ci prend donc en paramtre (dans
lordre des entres de lobjet) :

ffreq : la liste de listes de frquences des formants corriger. Il est possible de


connecter la fonction ffreq sur cette entre. Sa valeur par dfaut est ((800 1150 2900
3900 4950))

ce qui correspond une soprano chantant sur la voyelle a .

sexe : le type de voix (soprano, alto, contretenor, tenor, basse). La valeur par dfaut de
cette entre est soprano.

f0 : la liste des frquences de la fondamentale. Sa valeur par dfaut est (440).

corr : le coefficient de correction de la frquence des deux premiers formants. Sa


valeur doit tre suprieure ou gale 1 (valeur par dfaut) sinon une correction
ngative sera applique.

i)

Le cas particulier de la fonction amp-cor pour


lajustement de lamplitude des formants en
fonction de leffort vocal
La fonction amp-cor de la bibliothque chant-lib permet dajuster lamplitude

des formants produits lors de la synthse avec lobjet chant en fonction de leffort vocal. En
effet, il a t montr dans (II)-(C)-(g) que le spectre dun son de type vocal volue en fonction
de lamplitude de la note chante. Les paramtres ncessaires au fonctionnement de cette
fonction sont donc (dans lordre des entres de lobjet) :

100

ampf : la liste de listes des amplitudes des formants corriger. Sa valeur par dfaut est
((-6 -32 -20 -50))

: une soprano chantant sur la voyelle a.

cslope : lindice dinclinaison du spectre. Sa valeur par dfaut est 1.

ajus : la liste des coefficients dajustement influant sur lune des deux formules de
mise lchelle (tino et scaler dans lalgorithme prsent dans (II)-(C)-(g)). La valeur
par dfaut de cette entre est (1 1 0).

Sexe : le type de voix (soprano, alto, contretenor, tenor, basse). La valeur par dfaut
est soprano .

Fig. 66 Calcul automatiques des paramtres pour la synthse avec la bibliothque chant-lib Daprs le patch rgles.omp

171

Le traitement des informations envoyes amp-cor est dcrit dans lannexe


n20.
Le traitement des informations retournes par les fonctions amp-cor et ampf
par la fonction chant est expliqu dans lannexe n21.
La correction dans amplitudes des formants dans CSOUND partir des
paramtres issus de la fonction amp-cor est dcrite dans lannexe n22.

171 Disponible sur le cd cd/om.

101

j)

La fonction ampmid2db et la conversion des


amplitudes Midi en dcibels
Comme nous lavons expliqu en dtail dans la partie (III)-(B)-(i), la

bibliothque chant-lib a t construite pour tre au maximum compatible avec le standard


Midi. Toutefois, lutilisation des vlocits de notes Midi pour contrler lamplitude des sons
produits avec la fonction chant prsente quelques ambigits auxquelles il est possible de
remdier avec la fonction ampmid2db.
En effet, la vlocit dune note Midi est exprime sur une chelle linaire dont
les valeurs sont des entiers naturels compris entre 0 et 127 tandis que la liste des amplitudes
donnes la fonction chant doit tre exprime en dcibels (chelle logarithmique). Afin de
convertir des dynamiques Midi en dcibels il est donc ncessaire dtablir une relation entre
amplitude et vlocit de notes Midi.
Lensemble des tests qui vont tres prsents par la suite ont t effectus
partir du mme fichier Midi test-dynamique.mid 172 afin de corrler les rsultats obtenus.
Ce dernier a t cr dans OpenMusic laide du patch test-dynamique.omp 173 qui gnre
une srie de 127 notes de mme frquence intervalles rguliers avec une amplitude
croissante allant de 0 127 avec un pas de un :

Fig. 67 Crescendo augmentant la vlocit Midi de un chaque note Daprs le patch testdynamique.omp .

172 Disponible sur le cd cd/test-dynamique.


173 Ibid.

102

Le premier test effectu a permis danalyser le comportement dOpenMusic vis


vis des dynamiques Midi. La classe chord-seq permet en effet de connatre la nuance
musicale de chaque note quelle contient comme le montre la figure suivante :

Fig. 68 Affichage des nuances musicales dans la classe chord-seq dOpenMusic.


Les travaux de Fletcher et Munson174 ont permis de montrer quil existe des
correspondances entre les nuances musicales et les amplitudes en dcibels :
Nuances musicales

Fig.

Abrviations

Amplitudes en dcibels

Pianississimo
ppp
40
Pianissimo
pp
50
Piano
p
60
Mezzo-piano
mp
66
Mezzo-forte
mf
76
Forte
f
80
Fortissimo
ff
90
Fortississimo
Fff
100
69 Tableau des correspondances entre nuances musicales et amplitudes en dcibels daprs
175
Fletcher et Munson.

Il est donc possible dassocier une vlocit Midi une amplitude en dcibels en
se basant sur les valeurs donnes dans OpenMusic :

174 FLETCHER, Harvey ; MUNSON, William, Loundness, its definition, measurement and calculation , Journal of the Acoustical
Society of America, V (1933), n 2, p. 82-108.
175 http://www.aamhl.org/dBchart.htm (en ligne le 04/09/2010).

103
Amplitudes (dB)

120
100
80
Amplitudes mesures

60

Amplitudes modlises
40
20
0
0

20

40

60

80

100

120

140

Vlocits midi

Fig. 70 Conversion des vlocits Midi en amplitudes en dcibels dans OpenMusic.176


Dans le cas prsent, on peut voir que lamplitude volue de faon quasi linaire
(courbe bleue). Il est donc possible de modliser ce comportement (courbe rouge) avec la
formule suivante :
AmplitudeDcibels = (DynamiqueMidi x 0,5) + 40
Pour effectuer le test suivant, le fichier test-dynamique.mid a t jou au
piano avec le synthtiseur Midi de Mac OS X. Le son normalis obtenu a t enregistr dans
le fichier test-dynamique.aif 177. Lvolution de lamplitude du son enregistr au cours du
temps a alors t mesure dans Max/MSP avec le patch test-dynamique.maxpat 178. Ce
dernier utilise lobjet fiddle qui permet deffectuer tout un ensemble de mesures sur des
signaux sonores. Les amplitudes, qui peuvent tre mesures en dcibels ou en raw sont alors
affiches dans la fentre de message de Max/MSP. Afin de rduire le nombre dinformations
traiter, les mesures sont effectues toutes les 250ms, soit environ deux fois par notes
(DureNote = 500ms). Enfin, la valeur maximale atteinte par lamplitude en dcibels et
lamplitude raw est enregistre.

176 Le tableau contenant les valeurs qui ont permis le traage de ce diagramme est disponible sur le cd dans le fichier test-dynamique.xslx
cd/test-dynamique.
177 Disponible sur le cd cd/test-dynamique.
178 Ibid.

104

Fig. 71 Patch Max/MSP pour lanalyse dynamique de lamplitude de fichiers audio en dcibels et
en raw Daprs le patch test-dynamique.maxpat .

Lanalyse du fichier test-dynamique.aif par le patch Max/MSP prsent


prcdemment a fourni un total de 248 chantillons damplitudes en raw et en dcibels.
Lensemble de ces mesures ont t places dans un tableau de la forme :
Amplitudes Midi
Amplitudes
Amplitudes raw
Amplitudes
calcules daprs le
mesures en
converties
mesures en dB
numro de
raw dans
linairement en
dans Max/MSP
lchantillon
Max/MSP
dB
0,512096774
0,001266
20,194746
0,235476
1,024193548
0,001266
20,096311
0,235476
1,536290323
0,001266
27,746653
0,235476
(NumEchn x 127)/248
AmpRawn
AmpdBn
AmpRawn x 186
Tableau comparatif des amplitudes calcules dans diffrentes units partir du fichier
test-dynamique.aif .

Numro de
lchantillon
1
2
3
n

Fig. 72

Il est possible de consulter le tableau complet dans le CD dans le fichier testdynamique.xslx cd/test-dynamique.
Les dynamiques Midi ont t dduites du numro de chaque chantillon en
effectuant lopration suivante : AmplitudeMidi = (NumroEchantillon x 127)/248. Dans la
mesure o le but de ces analyses est dtablir une relation schmatique entre vlocit et
amplitude de notes Midi, il nest pas ncessaire davoir des mesures prcises lchantillon
prs, une certaine marge derreur est donc tolrable. Il est alors possible de simplifier la
formule prcdente : AmplitudeMidi = NumroEchantillon / 2.
Afin de modliser le comportement de la courbe des amplitudes raw pour une
utilisation avec la bibliothque chant-lib, il est ncessaire de convertir linairement ces
dernires en dcibels. Pour ceci, lamplitude maximale contenue dans le fichier testdynamique.aif a t releve en dcibels (environ 93dB) et en raw (environ 0.5) et a permis

105
dtablir un ratio entre ces deux valeurs : 186,1 . Ce dernier est utilis pour mettre lchelle
les valeurs raw en dcibels.
Amplitudes (dB)
120

100

80

Amplitudes mesures (raw


converti en dB)
Amplitudes modlises (dB)

60

Amplitudes mesures (dB)

40

20

0
0

20

40

60

80

100

120

140

Vlocits midi

Fig. 73 Evolution de lamplitude du fichier test-dynamique.aif mesure en dcibels et en raw


(ici converti linairement en dcibels avec la formule : AmplitudeRaw x 186) en fonction de la vlocit
Midi. La courbe rouge est une modlisation en trois phases de lvolution de lamplitude raw. Ce
modle sera utilis dans OpenMusic avec la fonction ampmid2db pour convertir des vlocits midi en
179
amplitude en dcibels.
Il est facile de constater que la courbe la plus semblable celle prsente dans
la figure 70 est celle des amplitudes mesures en raw converties linairement en dcibels, la
courbes des amplitudes mesures en dcibels ayant une forme logarithmique. Par consquent,
le modle utilis dans la fonction ampmid2db est celui des amplitudes mesures raw.
Cette dernire a une volution en trois phases quasi linaires. Les deux
premires ont lieu en dessous de 20dB et la dernire au dessus ce qui correspond une
vlocit Midi denviron cinquante. Cette information est importante souligner. En effet, les
sons en dessous de 20dB sont difficilement audibles. Ainsi, un modle simplifi de cette
courbe pourrait considrer que toute vlocit Midi infrieure cinquante correspond une
valeur de 0dB et que toute vlocit Midi suprieure cinquante correspond une amplitude
dont la valeur peut tre calcule linairement en fonction de la vlocit.

179 Le tableau contenant les valeurs qui ont permis le traage de ce diagramme est disponible sur le cd dans le fichier test-dynamique.xslx
cd/test-dynamique.

106
Le modle utilis dans ampmid2db est lgrement diffrent puisquil prend
aussi en compte les deux premires phases de lvolution de la courbe des amplitudes raw
converties en dcibels. Il est de la forme (courbe rouge de la figure 73) :

AmplitudeDcibels = DynamiqueMidi x 0,14 pour 0DynamiqueMidi<14

AmplitudeDcibels = (DynamiqueMidi x 0,45) 4,61 pour 14DynamiqueMidi<48

AmplitudeDcibels = DynamiqueMidi 31 pour 48DynamiqueMidi


Le fonctionnement de la fonction ampmid2db est dcrit dans lannexe n23.

k)

Les autres fonctions de chant-lib


Les autres fonctions encore non prsentes de la bibliothque chant-lib sont

principalement utilises pour effectuer des calculs de conversion ou des opration trs
basiques sur les listes donsets et de voyelles afin de faciliter lutilisation du systme.
o La fonction kill-last
La fonction kill-last de la bibliothque chant-lib permet de supprimer le dernier
lment dune liste. Elle peut-tre trs utile lors de lutilisation dune classe chord-seq
dOpenMusic pour supprimer un silence la fin dune phrase musicale en modifiant la liste
donsets. Sa seule entre correspond donc la liste modifier (duree) (cf. figure 74).
Pour accomplir cette tche, une boucle copiant le contenu dune liste dans une
autre et ne lisant pas le dernier lment de cette liste est utilise :
(om::defmethod! kill-last ((duree list))
:icon 178
:indoc '("liste de durees")
:initvals '(0)
(let ((lduree (length duree)) res)
(dotimes (n (- lduree 1) res)
(push (nth n duree) res))
(reverse res)))

o La fonction onset-calc
La fonction onset-calc de la bibliothque chant-lib permet de dduire une liste
donset partir dune liste de dures. Cela peut permettre du supprimer tout les silences dune
phrase musicale qui peuvent parfois tres gnants ou non souhaits en particulier si la source
est un fichier Midi. La seule entre de cette fonction (duree) prend donc en argument une liste
de dure (cf. figure 74).

107
Pour mener bien cette opration, onset-calc cre une liste commenant par
zro et dont les autres lments sont calculs selon la formule suivante :
onsetn = duren-1 + duren.
(om::defmethod! onset-calc ((duree list))
:icon 178
:indoc '("dures des notes")
:initvals '(0)
(let ((lduree (length duree)) res temp (hold 0))
(push 0 res)
(dotimes (n (- lduree 1) res)
(setf temp (+ (nth n duree) hold))
(setf hold temp)
(push temp res))
(reverse res)))

o La fonction voy-calc
Dans le cas o lon souhaiterait synthtiser une phrase musicale en utilisant
toujours la mme voyelle, il peut tre intressant davoir une fonction crant une liste o la
mme lettre est rpte en fonction du nombre de notes jouer. La fonction voy-calc de la
bibliothque chant-lib permet deffectuer cette opration (cf. figure 74).
Sa premire entre prend en argument la liste des frquences de la
fondamentale et sa deuxime la voyelle rpter (la lettre ici donne nest pas considre
comme un caractre, il nest donc pas ncessaire de lencadrer avec des guillemets) :
(om::defmethod! voy-calc ((f0 list) (txt t))
:icon 178
:indoc '("note" "voyelle")
:initvals '('(0) 'a)
(make-list (length f0) :initial-element txt))

l)

Interfaage des objets de la bibliothque


chant-lib avec la classe chord-seq
La bibliothque chant-lib a t construite pour avoir une grande compatibilit

avec les autres fonctions dOpenMusic. Ainsi, il peut par exemple tre intressant dutiliser la
classe chord-seq180 pour piloter la fonction chant de faon intuitive. Celle-ci permet dcrire
des partitions dans OpenMusic et de les connecter dautres objets. Elle est base sur le
standard Midi.
Ses cinq premires entres permettent de linterfacer avec les diffrentes
fonctions de la bibliothque chant-lib, elles sont dans lordre :

180 HADDAD, Karim, OpenMusic Users Manual, Paris : IRCAM, 2003.

108

self : lobjet lui-mme

lmidic : liste des notes en midicents

lonset : dure des onsets en millisecondes

ldur : dure des notes en millisecondes

lvel : amplitude des notes en Midi.


Les fonctions de la bibliothque chant-lib fonctionnant en hertz pour les

frquences de la fondamentale, il est ncessaire de convertir dans cette unit les notes fournies
par lmidic. Pour ceci, il est possible dutiliser la fonction mc->f.
Les donnes fournies par les entres lonset et ldur doivent elles aussi faire
lobjet dune conversion qui reste nanmoins trs simple : il suffit de les diviser par mille.
Enfin, il est ncessaire dutiliser la fonction ampmid2db pour rendre les
donnes fournies par lvel compatibles avec lensemble des fonctions de la bibliothque chantlib (cf. (III)-(B)-(h)).

Fig. 74 Utilisation de lensemble des fonctions de la bibliothque chant-lib avec la classe chordseq - daprs le patch exemple-complet.omp

181 Disponible sur le cd cd/om.

181

109

C. Test des performances de la bibliothque


chant-lib pour OpenMusic travers lexemple
de Lair de la reine de la nuit de La flte
enchante de Mozart
En 1984, dans le but de dmontrer lefficacit de la synthse par Fonctions
donde formantique et du programme CHANT, Xavier Rodet et son quipe ont travaill sur
un projet de synthse dun extrait de Lair de la reine de la nuit de La flte enchante de
Mozart quil est possible dentendre dans reine-IRCAM.aiff182 . Bien que le texte dorigine
ne soit pas utilis et que lensemble de lair soit chant sur la voyelle a, le rsultat obtenu fut
tellement impressionnant quil est devenu lune des rares expriences de synthse pure de la
voix chante connue du grand public. Il fut par exemple cit comme exemple de rfrence par
Max Mathews lors dune interview tlvise en 1986 afin de montrer les progrs fait par
linformatique musicale depuis son apparition dans les annes 1950.183
Afin de dmontrer lefficacit de la bibliothque chant-lib pour OpenMusic
dans la r-implmentation du programme CHANT, il peut tre intressant de tenter de
reproduire le travail effectu par lquipe de Xavier Rodet en 1984. Dans cette partie, la
dmarche suivie pour effectuer ce travail est prsente.

a)

Analyse du fichier audio original


Bien que Lair de la reine de la nuit synthtis par lquipe de Xavier Rodet

soit trs populaire, aucune documentation na t publie au sujet de sa cration. Il est donc
ncessaire de procder une analyse dtaille du fichier audio si on souhaite reproduire les
paramtres de la synthse de la faon la plus prcise possible. Cette analyse passe
principalement par ltude du spectrogramme gnr avec le programme AudioSculpt partir
du fichier audio.
La voix tant accompagne par un piano acoustique, il est assez ais de
distinguer ses partiels de ceux de linstrument. En effet, les proprits spectrales dune voix
chante sont trs diffrentes de celle dun piano qui nest par exemple pas en mesure de

182 Disponible sur le cd cd/audio.


183 Vido disponible sur le cd dans le fichier Mathews-reine.m4v cd/vido et sur le site YouTube ladresse suivante :
http://www.youtube.com/watch?v=_15ZQL82P4M (en ligne le 04/09/10).

110
produire un vibrato et dont lamplitude des notes dcroit au cours du temps comme le montre
la figure 75.

Fig. 75 Spectrogramme dune note tenue par la soprano de synthse accompagne au piano.
Lanalyse de la dure de la priode du vibrato en plusieurs points du fichier
audio permis de dduire sa frquence moyenne qui est donc denviron 6,5 Hz daprs le
calcul suivant : frquence moyenne = 1/priode moyenne o priode moyenne 0,150
secondes. Lanalyse du spectrogramme dans son ensemble a galement permis de dduire que
linterpolation linaire des formants nest jamais utilise et quune enveloppe damplitude de
type attaque maintien chute est applique lensemble des notes comme le montre la
figure 76.

111

Fig. 76 Enveloppe damplitude dune note tenue par la soprano de synthse.


Il a t remarqu que deux grands types de paramtres pour la synthse ont t
utiliss dans lensemble de la partie ici concerne de Lair de la reine de la nuit :
Paramtres pour des notes aiges piques de courte dure :

Lattaque et la chute de lenveloppe damplitude de chaque note ont une dure trs
courte : en moyenne, respectivement 0,04 et 0,06 secondes.

Aucune enveloppe damplitude nest utilise pour le vibrato.

Lamplitude globale du vibrato est trs faible (entre 0,01 et 0,05). Ce point est
important souligner. En effet, la dure des notes dans ce cas l (en moyenne 0,156
secondes) est infrieure la priode du vibrato (environ 0,167 secondes). Ainsi, si
lamplitude du vibrato tait ici trop importante, les notes seraient probablement
dsaccordes. Il est nanmoins ncessaire de conserver une modulation de la
frquence de la fondamentale afin que le son produit garde des proprits vocales .

112

Fig. 77 Spectrogramme dune succession de 12 notes piques de courte dure chantes par la
soprano de synthse.

Paramtres pour des notes longues du milieu de la tessiture dune soprano :

Lattaque est plus courte que la chute : en moyenne, respectivement 0,1 et 0,2
secondes. Ceci cre un effet dattnuation de lamplitude la fin de chaque note.

Une enveloppe damplitude est utilise pour le vibrato. Ces paramtres sont
semblables ceux de lenveloppe dcrite prcdemment.

Le vibrato, assez ample une amplitude globale denviron 0,1

Fig. 78 Spectrogramme de trois notes successives tenues chantes par la soprano de synthse.

b)

Synthse de Lair de la reine de la nuit laide


dOpenMusic

113
OpenMusic est une plateforme de travail qui permet dinterconnecter un grand
nombre de procds et de standards. Dans notre cas, il est donc important dexploiter au
maximum les possibilits offertes. Ainsi, il est possible dans OM dutiliser un fichier Midi
comme source une srie dvnements dans une classe chord-seq par exemple. On peut
alors connecter les classes midifile et chord-seq entre elles comme le montre la figure 79.

Fig. 79 Exemple dutilisation dun fichier Midi dans OpenMusic Daprs le patch midi.omp184 .
Il a t montr prcdemment que la classe chord-seq est compatible avec la
bibliothque chant-lib, on en dduit par rcursivit que les fichiers Midi le sont aussi.
La premire tape du travail de synthse de Lair de la reine de la nuit est donc
passe par la cration dun fichier Midi contenant la partie chanter et laccompagnement sur
des pistes Midi spares. Cette opration a t effectue dans Cubase partir du fichier reineoriginal.MID185. Ce dernier a fait lobjet de lgres retouches en particulier au niveau des
figures rythmiques qui ont t quantizes. Le rsultat obtenu aprs cette tape est prsent
dans le fichier reine-final.mid186.
La partition de la partie de soprano a ensuite fait lobjet dun dcoupage en
quatorze sections correspondant chacune un des deux cas de figures prsents
prcdemment dans ltape danalyse.187 Chaque section a par la suite t convertie en fichier
Midi utilisable dans OpenMusic.188
Un ensemble de quatorze patchs ont t crs dans OpenMusic afin de
synthtiser le contenu des diffrents fichiers Midi189 190. Tous ces patchs ont t construits sur
la mme base. Les seuls divergences visibles se trouvent au niveau de lutilisation ou non de
la fonction envelope-vib et de paramtres diffrents, conformment ce qui a t expliqu
184 Disponible sur le cd cd/om.
185 Disponible sur le cd cd/reine. Fichier Midi tlcharg ladresse suivante : http://leonard.www.itaque.com/ (en ligne le 04/09/2010).
186 Disponible sur le cd cd/reine. La partition correspondante ce fichier Midi est disponible dans lannexe n25.
187 Le dcoupage effectu est visible dans la partition disponible dans lannexe n25.
188 Lensemble des fichiers Midi crs sont disponible sur le CD cd/reine/decoupage-midi.
189 Lensemble des patchs sont disponibles sur le cd cd/reine/om.
190 Les paramtres dtaills de chaque patchs sont rsums dans un tableau disponible dans lannexe n25.

114
dans la partie prcdente sur lanalyse du fichier audio dorigine. Les patchs utiliss sont donc
de la forme :

Fig. 80 Patch OpenMusic pour la synthse des sections des phrases musicales de Lair de la reine
de la nuit de La flute enchante de Mozart - daprs le patch exemple-reine.omp

191

On peut voir que les largeurs de bandes des formants sont calcules
automatiquement et que la frquence des deux premiers dentre eux est ajuste en fonction de
la frquence f0 de la fondamentale avec la fonction auto-bend. Ce dernier point est
particulirement important dans le cas prsent. En effet, les notes synthtiser ont des
frquences trs leves qui pourraient tre suprieures la frquence des deux premiers
formants.
Les quatorze fichiers audio crs192 par les diffrents patchs ont ensuite t
monts dans Cubase afin de reconstituer le passage musical synthtis dans son intgralit.
Cubase a galement permis dajouter un accompagnement au piano. Ce dernier est jou avec
le synthtiseur HALionOne intgr la version 4 quatre de Cubase. Enfin, le mixage a t
effectu lors de cette tape o une lgre rverbration a t fut ajoute lensemble des

191 Disponible sur le cd cd/om.


192 Lensemble des fichiers audio cres sont disponibles sur le cd cd/reine/dcoupage-audio.

115
pistes dans le but de rendre le rsultat final plus naturel.193 Il est possible dcouter le rsultat
obtenu dans le fichier reine-synth.aif194 .

Fig. 81 Montage dans Cubase des diffrents fichiers audio gnrs dans OpenMusic pour la
synthse de Lair de la reine de la nuit de La flute enchante de Mozart.

Limplmentation du programme CHANT faite dans OpenMusic travers la


bibliothque chant-lib permet lacquisition de rsultats tout fait convainquants comme le
montre lexemple de synthse de Lair de la reine de la nuit de La flute enchante de Mozart.
Ladaptation du code LISP des rgles de la bibliothque PW-chant de
PatchWork pour le rendre compatible avec OpenMusic a t une opration relativement aise
bien quun important nombre de modifications ont du y tre apportes.
Linterfaage de OpenMusic avec CSOUND est rendu particulirement
efficace et fonctionnel grce la bibliothque om2csound. Enfin, il est important de noter que
lutilisation combine de ces deux programmes savre tre une solution intressante pour la
cration rapide et efficace doutils de synthse de sons avec interface graphique.

193 Le fichier Cubase rein.cpr est disponible sur le cd cd/reine/cubasse.


194 Disponible sur le cd cd/reine.

116

Conclusion
La synthse par fonctions donde formantique a t utilise dans un nombre
consquent de composition musicale pour la synthse de la voix chante au cours des trente
dernires annes. La simplicit du procd, le contrle important sur les diffrents paramtres
du son et la qualit des rsultats obtenus pour la synthse de sons de type vois comme les
voyelles ont attir un grand nombre de compositeurs.
Le programme CHANT a t la principale plateforme dutilisation de cette
technique pour la composition musicale. Il offrait des possibilits quil est impossible de
retrouver aujourdhui dans les programmes disponibles sur le march. Limplmentation des
diffrentes fonctions de CHANT dans le programme OpenMusic interfac avec CSOUND en
sinspirant de la bibliothque Chant-PW autrefois disponible dans PatchWork sest rvl tre
une solution possible adapte au problme.
Dans le systme prsent, OpenMusic permet un contrle graphique ludique et
intuitif des diffrents paramtres de la synthse avec une collection dobjets gravitants autour
dune fonction principale (chant) permettant de regrouper lensemble des paramtres et de les
envoyer au programme CSOUND. Ce dernier a permis deffectuer les tapes de traitement du
signal avec une trs grande simplicit grce lobjet fof.
Les rsultats obtenus lors de ltape de test pour la synthse de Lair de la
reine de La nuit de la flute enchante de Mozart sont tout fait convenables compte tenu du
nombre trs restreint de paramtres utiliss.
Les principales rgles de CHANT ont t intgres dans diffrents objets
regroups dans la bibliothque chant-lib. Toutefois, bien que lensemble des fonctions et des
rgles de CHANT y soient implmentes, certaines fonctions de Chant-PW nont pas t
traduites et quelques lments restent amliorer notamment au niveau de la prcision du
contrle des paramtres. Il serait par exemple intressant de pouvoir modifier les valeurs par
dfaut des amplitudes, largeurs de bandes et frquences des formants par lintermdiaire de
fichiers textes fournis aux objets ampf, ffreq et bdwth. Il serait aussi ncessaire dintgrer un
gnrateur de bruit blanc filtr (pour les sons vocaux de type fricatif) dont les paramtres
seraient contrls en fonction des consonnes fournies au synthtiseur. Ces modifications
pourraient faire lobjet de recherches ultrieures et pourraient tre apportes facilement dans

117
la mesure o lensemble des programmes utiliss sont conus sous une licence OpenSource
GNU/GPL195.
Depuis son apparition dans les annes soixante, la synthse numrique de la
voix chante est un domaine qui a connu une grande volution. Laugmentation de la
puissance de calcul des ordinateurs au cours de la seconde moiti du vingtime sicle a
permis denvisager limplmentation de modles de plus en plus complexes. Les
modlisations de lappareil phonatoire par des tubes acoustiques une dimension ont laiss
place des techniques permettant lacquisition de rsultats toujours meilleurs. Aujourdhui, il
est possible de distinguer trois grands types de techniques pour la synthse de la voix chante.
Les modles physiques de lappareil phonatoire tentent de reproduire
mathmatiquement les diffrentes interactions entre chacun des organes qui aboutissent la
phonation. Plus un modle physique est complet (et par consquent complexe), plus il permet
lobtention de rsultats proches du son naturel. Lavantage de ce type de technique est la
flexibilit et la possibilit dintervenir sur chaque paramtre du son. Toutefois, leur
complexit, le grand nombre de paramtres ncessaires pour la synthse et par consquent la
quantit importante de calculs impliqus en font des outils qui sont aujourdhui peu utiliss au
dtriment de techniques plus simples implmenter.
Les modles spectraux tentent de reproduire un son naturel en se basant sur
lanalyse spectrale de ce son. Plusieurs techniques peuvent tres classes dans cette catgorie.
La synthse par modulation de frquence permet dobtenir dexcellents rsultats avec un
nombre de paramtres trs restreints et est trs peu coteuse en calculs de par sa simplicit.
De plus, elle permet dobtenir des rsultats de trs bonne qualit pour la synthse des sons
apriodiques (consonnes). Les techniques de synthse additive visent reproduire un son
priodique en synthtisant chacune des composantes sinusodales qui le constitue. Ces
techniques, tout comme la synthse par prdiction linaire (LPC196) permettent dobtenir des
rsultats de trs grande qualit pour la re-synthse et la modification de voix dj enregistres.
Le principal inconvnient des techniques de synthse de la voix chante bases sur des
modles spectraux ( lexception de la synthse par modulation de frquence) est quils ne
permettent pas de synthtiser des sons apriodiques et par consquent les sons fricatifs de la
voix comme les consonnes. Ainsi, dans la plupart des cas, il est ncessaire dajouter au
modle utilis une source de bruit filtre.

195 General Public Licence.


196 Linear Predictive Coding.

118
Les modles bass sur la concatnation et la modification dchantillons font
partie des plus utiliss pour la synthse de la voix parle. Ils permettent dobtenir des rsultats
de trs grande qualit dans la mesure o ils sont bass sur des sons naturels. Ce type de
modle prsente toutefois un certain nombre dinconvnients. En effet, ils sont trs
gourmands en espace mmoire cause de limportance du nombre dchantillons ncessaires
et offrent une flexibilit et un contrle trs limit sur la synthse.
Le domaine de la synthse numrique de la voix chante a fait des progrs
significatifs au cours des vingt dernires annes. Toutefois, bien que les rsultats disponibles
aujourdhui soient intressants, ils sont encore loin dtre comparables au son dorigine. Un
nombre important de progrs restent par exemple faire au niveau de lexpressivit et donc
de lintonation. Sur ce point, il serait intressant damliorer lautomatisation de la production
de paramtres pour la synthse partir dune partition. Ceci impliquerait deffectuer une
analyse complte du comportement de chanteurs professionnels en fonction de diffrents
contextes. Un tel travail se rvlerait toutefois tre certainement colossal cause du nombre
de combinaisons possibles qui est pratiquement infini.
Chacune des techniques dcrites prcdemment prsentant des qualits
diffrentes, il pourrait tre intressant de les runir au sein dun mme modle comme le
souligne Bruno Bossis :
Les barrires technologiques tombant les unes aprs les autres, des modles aussi
diffrents que ceux issus de la granulation, de la modulation de frquence, de la
prdiction linaire et des fonctions donde formantique pourront tre exploits au sein
dun mme processus dlaboration de la vocalit artificielle de faon tirer parti des
qualits de chacun.197

Lamlioration de la synthse des sons fricatifs produits par lappareil


phonatoire est aussi un domaine qui ncessite dtre tudi en particulier au niveau de
lenchainement avec des sons de type vois.
Enfin, un travail important reste effectuer au niveau de la cration
dinterfaces graphiques adaptes lanalyse et la synthse des sons vocaux notamment au
niveau de la reprsentation de certaines composantes du son : vibrato, etc.
LHomme a toujours t fascin par la voix chante. Elle occupe un rle
important dans la plupart des civilisations dans la mesure o elle est un moyen de

197 BOSSIS, Bruno, La voix et la machine : La vocalit artificielle dans la musique contemporaine, Rennes : Presses Universitaire de
Rennes, 2005, p. 290.

119
transmission musicale privilgie. Cest trs certainement le plus ancien des instruments de
musique, mais aussi le plus complexe et le plus complet.
La voix sest souvent rvle exemplaire des grandes articulations de lhistoire de la
musique. De la naissance de la polyphonie avec lcole de Notre-Dame lmergence
du romantisme dans les Lieder germaniques jusquau Sprechgesang dArnold
Schnberg, la vocalit a non seulement toujours t prsente, mais, par sa souplesse et
son pouvoir expressif, elle a t un lment central dans de nombreuses
exprimentations et remis en cause.198

Au cours des derniers sicles, la fabrication de machines capables de chanter a


t le but dun grand nombre de scientifiques et dinventeurs. Les rsultats disponibles de nos
jours paraitraient trs certainement impressionnants pour nos anctres. Nanmoins, beaucoup
de chemin reste encore parcourir avant de voir un robot chanter au ct des plus grands
interprtes sur une scne dopra.

198 BOSSIS, Bruno, La voix et la machine : La vocalit artificielle dans la musique contemporaine, Rennes : Presses Universitaire de
Rennes, 2005, p. 283.

120

Annexes

Extrait de la partition issu du fichier Midi reine-final.mid pour la synthse de Lair


de la reine de la nuit de La flute enchante de Mozart.

121

ANNEXE n 1 : contenu du fichier MATLAB fofd.m


%Calcul d'une succession de Fonctions d'Onde Formantique selon le modle de
CHANT
%Romain MICHON, Janvier 2010
freq=2000; %Frquence de la FOF
Fs=44100; %Frquence d'chantillonage
alpha=400;
time_sec=0.02; %Dure de la FOF
timek=time_sec.*Fs; %Nombre total d'chantillons
time=1./Fs:1./Fs:time_sec; %Vecteur temps pour le graph
beta=0.003; % en ms
beta2=pi./beta; %calcul de pi/
betak=beta.*Fs; %Conversion de en chantillons
x1=exp(-alpha.*time).*sin(2.*pi.*freq.*time); %Calcul des pi/ premiers
chantillons
x2=((1-cos(beta2.*time)).*(exp(-alpha.*time).*sin(2.*pi.*freq.*time)))./2;
%Calcul des chantillons aprs pi/
x(1:betak)=x2(1:betak); %Sauvegarde du rsultat final dans x
x((betak+1):timek)=x1((betak+1):timek);
lgtx=length(x); %Calcul la taille de x en nombre d'chantillons
t=0.005; %Priode 1/FO
yt=t.*Fs; %Priode en chantillons (correspond au dbut de la seconde FOF)
zt=t.*Fs.*2; %Dbut de la troisime FOF
y(1:yt)=0;
z(1:zt)=0;
y((yt+1):(lgtx+yt))=x; %Deuxime FOF
z((zt+1):(lgtx+zt))=x; %Troisime FOF
plot(x) %Affiche la premire FOF
hold all
plot(y) %Affiche la seconde FOF
hold all
plot(z) %Affiche la troisime FOF
xlabel('echantillons k')
ylabel('amplitude de s')

122

ANNEXE n 2 : contenu du fichier MATLAB fof.m


%Calcul d'une Fonction d'Onde Formantique selon le modle de CHANT
%Romain MICHON, Janvier 2010
freq=2000; %Frquence de la FOF
Fs=44100; %Frquence d'chantillonage
alpha=400;
time_sec=0.02; %Dure de la FOF
timek=time_sec.*Fs; %Nombre total d'chantillons
time=1./Fs:1./Fs:time_sec; %Vecteur temps pour le graph
beta=0.003; % en ms
beta2=pi./beta; %calcul de pi/
betak=beta.*Fs; %Conversion de en chantillons
x1=exp(-alpha.*time).*sin(2.*pi.*freq.*time); %Calcul des pi/ premiers
chantillons
x2=((1-cos(beta2.*time)).*(exp(-alpha.*time).*sin(2.*pi.*freq.*time)))./2;
%Calcul des chantillons aprs pi/
x(1:betak)=x2(1:betak); %Sauvegarde du rsultat final dans x
x((betak+1):timek)=x1((betak+1):timek);
env1=exp(-alpha.*time); %Calcul de la forme de l'envellope
env2=((1-cos(beta2.*time)).*(exp(-alpha.*time)))./2;
env(1:betak)=env2(1:betak);
env((betak+1):timek)=env1((betak+1):timek);
%le fichier audio "fof-dem.wav" gnr dans CSOUND est charg
[y,Fsy]=wavread('/Users/romainmichon/Desktop/Memoire/Labete/Final/CD/csound
/fof-dem.wav');
subplot(2,1,1)
plot(x) %Affiche x en fonction du nombre d'chantillons
xlabel('echantillons k')
ylabel('amplitude de s')
title('FOF calcule d aprs les formules prcdente')
%hold all
subplot(2,1,2)
plot(y) %Affiche le contenu de "fof-dem.wav" en fonction du nombre
d'chantillons
%plot(env) %Affiche l'envellope en fonction du nombre d'chantillons
xlabel('echantillons k')
ylabel('amplitude de s')
title('FOF dans CSOUND')

123

ANNEXE n 3 : contenu du fichier MATLAB fofspec.m


%Calcul et analyse FFT de 3 Fonctions d'Onde Formantique avec 3 valeurs
%de diffrentes
%Romain MICHON, Janvier 2010
freq=2000; %Frquence des FOFs
Fs=44100; %Frquence d'chantillonnage
alpha=80; %Alpha en Hz
time_sec=0.08; %Dure des FOFs
timek=time_sec.*Fs; %Nombre total d'chantillons
time=1./Fs:1./Fs:time_sec; %Vecteur 'time'
betaa1=0.01; %dure de l'attaque
betaa2=0.001;
betaa3=0.0001;
betab1=pi./betaa1; %calcul du paramtre
betab2=pi./betaa2;
betab3=pi./betaa3;
betak1=betaa1.*Fs; %Conversion des diffrentes valeurs de en chantillons
betak2=betaa2.*Fs;
betak3=betaa3.*Fs;
xa1=exp(-alpha.*time).*sin(2.*pi.*freq.*time); %Calcul des pi/ premiers
chantillons
xb1=((1-cos(betab1.*time)).*(exp(alpha.*time).*sin(2.*pi.*freq.*time)))./2; %Calcul des chantillons aprs
pi/
x1(1:betak1)=xb1(1:betak1); %Sauvegarde du rsultat final dans x1
x1((betak1+1):timek)=xa1((betak1+1):timek);
xa2=exp(-alpha.*time).*sin(2.*pi.*freq.*time); %Calcul des pi/ premiers
chantillons
xb2=((1-cos(betab2.*time)).*(exp(alpha.*time).*sin(2.*pi.*freq.*time)))./2; %Calcul des chantillons aprs
pi/
x2(1:betak2)=xb2(1:betak2); %Sauvegarde du rsultat final dans x2
x2((betak2+1):timek)=xa2((betak2+1):timek);
xa3=exp(-alpha.*time).*sin(2.*pi.*freq.*time); %Calcul des pi/ premiers
chantillons
xb3=((1-cos(betab3.*time)).*(exp(alpha.*time).*sin(2.*pi.*freq.*time)))./2; %Calcul des chantillons aprs
pi/
x3(1:betak3)=xb3(1:betak3); %Sauvegarde du rsultat final dans x3
x3((betak3+1):timek)=xa3((betak3+1):timek);
N=time_sec.*Fs; %Nombre total d'chantillon
faxis=(0:N-1).*Fs./N; %Vecteur 'frquences' pour le graphs
fx1=pow2db(abs(fft(x1)./N))+11;
%Analyses
FFT
de
chaques
conversion de l'amplitude en db
fx2=pow2db(abs(fft(x2)./N))+11;
fx3=pow2db(abs(fft(x3)./N))+11;
plot(faxis,fx1) %Graph
xlabel('Frquence (Hz)')
ylabel('Amplitude (db)')
hold all
plot(faxis(1:N-1),fx2)
hold all
plot(faxis(1:N-1),fx3)

FOFs

avec

124

ANNEXE n 4 : contenu du fichier voice-rules.Lisp de


la bibliothque PW-chant de PatchWork
;;;;=========================================================
;;;;
;;;; CHANT - PATCH-WORK
;;;; By Mikael Laurson, Francisco Iovino.
;;;; 1991-1992 IRCAM
;;;;
;;;;=========================================================
(in-package :PW)
;==========================================================================
; RULE FOR THE AUTOMATIC BENDING OF THE FIRST TWO FORMANTS
;==========================================================================
(pw::add-menu-items *chant-voice-rule-menu* (pw::new-leafmenu "-" ()))
(defun calc-auto-bend (freq sex fund corr)
(let ((f-elem (first freq)) (s-elem (second freq)))
(when (<= f-elem fund)
(incf f-elem (* (- fund f-elem) corr)))
(unless (string= sex "ctn") ; castrato
(when (and (>= s-elem 1300.) (>= fund 200.))
(decf s-elem (* corr (* (* (/ 2 3) (- fund 200)) (/ (- s-elem
1300) 700)))))
(when (<= s-elem (+ 30 (* 2. fund)))
(incf s-elem (* corr (- (+ 30 (* 2 fund)) s-elem)))))
(cons f-elem (cons s-elem (cddr freq)))))
(make-chant-vector-rule CHANT-USER::auto-bend
((fund chant-buffer)
(corr chant-buff/fix/float (:value 1.0))
(vfreq chant-vector))
"auto-bend rule"
(let ((fundamental-now (nth-rule-input self 1))
(corr
(nth-rule-input self 2))
(freq-list
(nth-rule-input self 3))
(sex (formant-db-sex (formant-object (chant-synth self)))))
(calc-auto-bend freq-list sex fundamental-now corr))
:menu *chant-voice-rule-menu*
)
;==========================================================================
; RULE FOR THE AUTOMATIC CALCULATION OF THE BANDWIDTHS
;==========================================================================
(defvar *chant-atb-pol-coefs* ())
(defun matrix-solver (matrix var)
(let (u v w x y z d res1 res2 res3)
(setq v (- (third (first matrix)) (third (second matrix))))
(setq u (- (second (first matrix)) (second (third matrix))))
(setq w (- (first var) (second var)))
(setq x (- (second (first matrix)) (second (second matrix))))
(setq y (- (second (second matrix)) (second (third matrix))))
(setq z (/ x y))
(setq d (- v (* (- (third (second matrix)) (third (third matrix)))
z)))
(if (and (not (zerop x)) (not (zerop u)) (not (zerop d)))
(progn (setq res3 (/ (* (- w (- (second var) (third var))) z) d))
(setq res2 (/ (- w (* res3 v)) x))

125
(setq res1 (- (first var) (+ (* res2 (second (first matrix)))
(* res3 (third (first matrix))))))
(list res1 res2 res3))
(print "ERROR IN MATRIX RESOLUTION."))))
(defclass C-atb-class ()
((chant-ref-freq :initform '(200 500 4000) :accessor chant-ref-freq)
(chant-ref-bw
:initform '(75 75 150) :accessor chant-ref-bw)))
(defmethod get-pol-coefs ((self C-atb-class))
(let (matrix temp)
(list 1 (log (first (chant-ref-freq self))) (* (log (first (chant-reffreq self))) (log (first (chant-ref-freq self)))))
(for (i 0 1 2)
(setq temp (log (nth i (chant-ref-freq self))))
(push (list 1 temp (* temp temp)) matrix))
(setq matrix (nreverse matrix))
(setq
*chant-atb-pol-coefs*
(matrix-solver
matrix
(chant-ref-bw
self)))))
(defmethod calc-auto-band ((self C-atb-class) freq)
(let (result temp (nof (length freq)))
(for (i 0 1 (1- nof))
(setq temp (log (nth i freq)))
(push (+ (+ (first *chant-atb-pol-coefs*) (* temp (second *chantatb-pol-coefs*)))
(* (* temp temp) (third *chant-atb-pol-coefs*)))
result))
(nreverse result)))
(defvar *atb-rule-object* (make-instance 'C-atb-class))
(get-pol-coefs *atb-rule-object*)
;(calc-auto-band *atb-rule-object* '(609 1000 2450 2700 3240))
(make-chant-vector-rule CHANT-USER::auto-bw
((vfreq chant-vector))
"auto-bend rule"
(let ((freq-list (nth-rule-input self 1)))
(calc-auto-band *atb-rule-object* freq-list))
:menu *chant-voice-rule-menu*
)
;==========================================================================
; RULE FOR THE AUTOMATIC CALCULATION OF THE AMPLITUDES
;==========================================================================
(defvar *chant-atb-pol-coefs* ())
(defclass C-ata-class ()
((chant-chp :initform (make-array 12) :accessor chant-chp)))
(defmethod initialize-instance :after ((self C-ata-class) &rest args)
(declare (ignore args))
(setf (svref (chant-chp self) 0) 1.0)
(setf (svref (chant-chp self) 1) (expt 10 (/ 1 20)))
(setf (svref (chant-chp self) 2) (expt 10 (/ 2.5 20)))
(setf (svref (chant-chp self) 3) (expt 10 (/ 5 20)))
(setf (svref (chant-chp self) 4) (expt 10 (/ 9 20)))
(setf (svref (chant-chp self) 5) (expt 10 (/ 14.5 20)))
(setf (svref (chant-chp self) 6) (expt 10 (/ 21.5 20)))
(setf (svref (chant-chp self) 7) (expt 10 (/ 30. 20)))
(setf (svref (chant-chp self) 8) (expt 10 (/ 41. 20)))
(setf (svref (chant-chp self) 9) (expt 10 (/ 51. 20)))
(setf (svref (chant-chp self) 10) (expt 10 (/ 55. 20)))

126
(setf (svref (chant-chp self) 11) (expt 10 (/ 55. 20))))
(defvar *ata-rule-object* (make-instance 'C-ata-class))
(defun get-chant-chp-index (f)
(let ((i (truncate (/ f 500))))
(cond ((>= i 11) 11)
((<= i 0) 0)
(t i))))
;(get-chant-chp-index 1200)
(defun get-chant-cont-factor (cf f-list bw-list)
(let ((result 1.) mbw mbw2 numer denom fi)
(for (i 0 1 (1- (length f-list)))
(setq mbw (max (nth i bw-list) 0.000001))
(setq mbw2 (/ (* mbw mbw) 4))
(setq fi (nth i f-list))
(setq numer (+ (* fi fi) mbw2))
(setq denom (* (expt (+ mbw2 (* (- fi cf) (- fi cf))) 0.5)
(expt (+ mbw2 (* (+ fi cf) (+ fi cf))) 0.5)))
(setq result (* result (/ numer denom))))
result))
(defmethod calc-auto-ampl ((self C-ata-class) freq bw)
(let (result ind chp-cont fi)
(for (i 0 1 (1- (length freq)))
(setq fi (nth i freq))
(setq ind (get-chant-chp-index fi))
(setq chp-cont (+ (svref (chant-chp self) ind)
(* (- (svref (chant-chp self) (1+ ind)) (svref
(chant-chp self) ind))
(/ (- fi (* 500 ind)) 500))))
(push (* (get-chant-cont-factor fi freq bw)
(/ chp-cont fi)) result))
(nreverse result)))
(defmethod calc-auto-ampl ((self C-ata-class) freq bw)
(let (result ind chp-cont fi)
(for (i 0 1 (1- (length freq)))
(setq fi (nth i freq))
(setq ind (get-chant-chp-index fi))
(setq chp-cont (+ (svref (chant-chp self) ind)
(* (- (svref (chant-chp self)
(if (= ind 11) ind (1+ ind)))
;;;Array index 12 out of bounds for #<SIMPLE-VECTOR 12>
(svref (chant-chp self) ind))
(/ (- fi (* 500 ind)) 500))))
(push (* (get-chant-cont-factor fi freq bw)
(/ chp-cont fi)) result))
(nreverse result)))
(make-chant-vector-rule CHANT-USER::auto-ampl
((vfreq chant-vector)
(vbw chant-vector))
"auto-ampl rule"
(let ((freq-list (nth-rule-input self 1))
(bw-list (nth-rule-input self 2)))
(calc-auto-ampl *ata-rule-object* freq-list bw-list))
:menu *chant-voice-rule-menu*
)

127
;==========================================================================
; RULE FOR THE VOCAL EFFORT CORRECTION
;==========================================================================
(defun ampl-correction (cslope fund f-mean ajus sex amp coefamp envelo freq
ampl)
(let (result tino rslope amp-i)
(when (zerop cslope) (setq cslope 0.000001))
(setq tino (* coefamp (expt (/ fund f-mean) (third ajus))))
(setq rslope (* cslope (exp (* (first ajus)
(atan (* (second ajus) (log (/ fund fmean))))))))
(do ((i 0 (+ 1 i))) ((eq i (length ampl)))
(setq amp-i (* envelo tino (nth i ampl)))
(if (> (nth i freq) (first freq))
(if (< cslope 0)
(if (or (string= sex "ctn") (string= sex "bas")(string= sex
"ten")(string= sex "mal"))
(progn
;
(print (list "foo" i tino amp-i))
(push (* amp-i amp coefamp (+ 3 (/ (- 400 fund) 300)
(* .1 (/ (- 400 fund) 300))))
result))
(push (* amp-i amp coefamp (+ .8 (/ (- 1000 fund) 1250)
.05 (* .1
(/ (- 1000 fund)
1250))))
result))
(push (* amp-i rslope) result))
(push amp-i result)))
(nreverse result)))
(make-chant-vector-rule CHANT-USER::ampl-corr
((envelo chant-buffer)
(vfreq chant-vector)
(vamp chant-vector))
"amplitude-correction rule"
(let ((envelo
(nth-rule-input self 1))
(freq-list (nth-rule-input self 2))
(ampl-list (nth-rule-input self 3))
(sex (formant-db-sex (formant-object (chant-synth self)))))
(ampl-correction -1 100 200 '(0. 5.7 0.) sex 1. 1. envelo freq-list
ampl-list))
:menu *chant-voice-rule-menu*
)

128

ANNEXE n 5 : contenu du fichier CSOUND fofsop.csd


;Synthse d'une voix de soprano chantant la voyelle 'a' avec interpolation
entre chaque note.
;Romain MICHON, Janvier 2010
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
;Variables permettant de mmoriser la frquence de la note joue
prcdemment, elles doivent tres initialises la frquence de la
premire note joue
gilasts init 440
gilasta init 440
instr 1 ;Soprano chantant un 'a'
kris init .003 ;Dure de l'attaque des impulsions
kdur init .02 ;Dure totale des impulsions
kdec init .007 ;Dure du decay des FOF
iolaps = 15
ifna = 1 ;Utilisation d'une table de fonction de sinusode (GEN10) pour les
impulsions
ifnb = 2 ;Utilisation d'une table de fonction de sigmode (GEN19) pour la
cration de l'enveloppe
itodur = 440 ;frquence de production des impulsions
iskip = 1 ;supprime l'attaque de chaque objet 'fof' autorisant ainsi les
legato
ifre1 = 800 ;frquences des formants d'aprs les valeurs donnes aux pages
2350-2354 du manuel de Csound
ifre2 = 1150
ifre3 = 2900
ifre4 = 3900
ifre5 = 4950
iamp1 = p5 ;amplitudes des formants d'aprs les valeurs donnes aux pages
2350-2354 du manuel de Csound
iamp2 = iamp1 - 6
iamp3 = iamp1 - 32
iamp4 = iamp1 - 20
iamp5 = iamp1 - 50
iwid1
pages
iwid2
iwid3
iwid4
iwid5

= 80 ;largeurs de bandes des formants d'aprs les valeurs donnes aux


2350-2354 du manuel de Csound
= 90
= 120
= 130
= 140

aint linseg gilasts, .05, p4 ;Permet l'interpolation des diffrents


formants d'une note l'autre
gilasts = p4 ;enregistre la valeur de la frquence actuelle pour la
rutiliser lors de la prochaine interpolation
amod oscil 20, 5, 1 ;signal modulant la frquence de chaque formant
(vibrato)

129
;amod = 0 ;si amod = 0, le vibrato est dsactiv
;Creation des 5 formants
ar1 fof ampdb(iamp1), aint+amod,
ifna, ifnb, itodur, 0, 0, iskip
ar2 fof ampdb(iamp2), aint+amod,
ifna, ifnb, itodur, 0, 0, iskip
ar3 fof ampdb(iamp3), aint+amod,
ifna, ifnb, itodur, 0, 0, iskip
ar4 fof ampdb(iamp4), aint+amod,
ifna, ifnb, itodur, 0, 0, iskip
ar5 fof ampdb(iamp5), aint+amod,
ifna, ifnb, itodur, 0, 0, iskip

ifre1, 0, iwid1, kris, kdur, kdec, iolaps,


ifre2, 0, iwid2, kris, kdur, kdec, iolaps,
ifre3, 0, iwid3, kris, kdur, kdec, iolaps,
ifre4, 0, iwid4, kris, kdur, kdec, iolaps,
ifre5, 0, iwid5, kris, kdur, kdec, iolaps,

asort = ar1 + ar2 + ar3 + ar4 + ar5 ;addition des 5 formants


out asort
endin

130

ANNEXE n 6 : contenu du fichier MATLAB fof.m


%Script affichant la largeur de bande (bw) d'une Fonction d'Onde
%Formantique en fonction de sa frquence selon la formule applique par
%CHANT
%Romain MICHON, Janvier 2010
freq=[0:1:2000]; %Cration d'un vecteur 'frquence' pour le graph
bw = 471 - 138.6 .* reallog(freq) + 12.04 .* (reallog(freq)).^2; %calcul de
la largeur de bande
plot(bw) %Cration d'un graphique
xlabel('frquence (Hz)')
ylabel('largeur de bande (Hz)'

131

ANNEXE n7 : fonctionnement de la fonction execcsound de la bibliothque chant-lib


Dans un premier temps, le nom de la fonction est dfini ainsi que ses diffrents arguments : la
liste envoye par la fonction chant convertir en partition (resform) et le nom du fichier
audio produit (out-name).
(om::defmethod! exec-csound (resformf out-name)

Cration de la partition CSOUND :


Les variables locales sont dclares.
(let* ((normalize) (resolution)

filename contient le nom et le chemin daccs de la future partition my-sco.sco . Elle sera
automatiquement place dans le dossier out-files du workspace.
(filename (make-pathname
:directory (pathname-directory
*om-tmpfiles-folder*)
:name "my-sco"
:type "sco")))

La partition CSOUND est cre partir de la variable resformf et est place dans la variable
lst?.
(setf
(setf

lst? (list! (reverse resformf)))


lst? (mapcar #'(lambda (x) (if (typep x 'son-obj)
(insts->sco x) (list x))) lst?))
(setf lst? (om::flat-once (mapcar #'flat-max-1 (remove '() lst?))))
(setf *lastcsdfile* filename)

La fonction with-open-file cre un fichier dont le nom et le chemin daccs sont dfinis par
filename et le contenu par fd. Si un fichier du mme nom existe dj dans le rpertoire
spcifi, il est remplac.
(with-open-file
delete

(fd filename :direction :output :if-exists :rename-and:if-does-not-exist :create)

(let ((glou nil))

Les diffrents vnements CSOUND ayant t placs dans des listes auparavant, le nombre de
listes est dtect et les oprations suivantes sont rptes en fonction du nombre
dvnements.
(dotimes (n (length lst?))

Les lignes de commentaires sont gnres avec la fonction print-comment de om2csound et


sont places dans la variable glou. Elles contiennent le numro de chaque p-field de chaque
vnement CSOUND.
(setf glou (print-comment (nth n lst?) fd glou))

La fonction printscoseq de om2csound lit chacune des listes contenues dans la variable lst?,
les transforme en vnements CSOUND et place le rsultat dans fd. La partition CSOUND se

132
termine par la lettre e indiquant au compilateur lemplacement de la fin de linstrument.
Enfin, lutilisateur est averti dans le listener du nom et de lemplacement du fichier partition
cr.
(printscoseq (nth n lst?) fd)
(format fd "~%"))
(format fd "e")))
(print (string+ "CREATION D'UN FICHIER SCO A L'ADRESSE SUIVANTE :"
(namestring filename)))

Synthse avec CSOUND :


Cration dune variable globale contenant les flags par dfauts de CSOUND pour la
compilation.
(setf *flags* *csound-defflags*)

On vrifie si CSOUND est install sur la machine. Si cest le cas, les oprations suivantes
sont excutes sinon un message derreur est affich dans le listener : IMPOSSIBLE DE
TROUVER CSOUND .
(if (probe-file *CSOUND-PATH*)

Une normalisation tant applique au fichier audio cr, il sera dabord plac dans un fichier
temporaire : norm.tmp .
Le nom et le chemin daccs du fichier audio final sont sauvegards dans la variable outpath.
*om-outfiles-folder* indique que ce dernier sera plac dans le dossier out-files du
workspace.
(let* ((tmppath (tmpfile "norm.tmp"))
(outpath (corrige-sound-filename (if out-name out-name "sndout")
*om-outfiles-folder*)))

On vrifie dabord si un fichier porte le mme nom que celui dfini lors de ltape prcdente
dans le dossier out-files du worspace. Si cest le cas, il est effac et un message saffiche
dans le listener.
(when (probe-file outpath)
(print (string+ "SUPRESSION DU FICHIER EXISTANT : "
(namestring outpath)))
(om-delete-file outpath))

Le compilateur de CSOUND est appel directement dans le terminal grce la fonction omcmd-line. Cette dernire permet denvoyer dans le terminal une commande contenue dans une
chane de caractres. Dans le cas prsent, la commande est constitue :

du chemin daccs CSOUND contenu dans *CSOUND-PATH*

des flags dfinissants les paramtres de la compilation : *flags*

du nom et du chemin daccs de lorchestre CSOUND : chant.orc qui doit tre


plac au pralable dans le dossier in-files du workspace

133

du nom et du chemin daccs de la partition CSOUND contenue dans la variable


filename

du nom et de lemplacement du fichier audio crer, en loccurrence, ceux du fichier


temporaires norm.tmp contenus dans tmppath.
(print "SYNTHESE AVEC CSOUND...")
(om-cmd-line (print (format nil "~s ~A ~s ~s -o ~s"
(om-path2cmdpath *CSOUND-PATH*)
*flags*
(om-path2cmdpath (make-pathname
:directory (pathname-directory *om-infiles-folder*)
:host (pathname-host *om-infiles-folder*)
:name (pathname-name "chant.orc")
:type (pathname-type "chant.orc")))
;affiche et deffini l'emplacement de la partition pour

CSOUND
(om-path2cmdpath filename)
(om-path2cmdpath tmppath)))
*sys-console*)

Comme cela a t indiqu prcdemment, le fichier audio temporaire cr (norm.tmp) est


normalis zro dcibels afin dhomogniser le son. Ceci est ralis avec la
fonction general-normalize. Le fichier audio produit lors de cette opration sera plac
lemplacement spcifi par la variable outpath.
Une fois la normalisation effectue, les fichiers temporaires sont effacs et un
message indiquant le nom et lemplacement du fichier final est envoy au listener.
(let ((real-out (general-normalize *normalizer*
tmppath outpath normalize resolution)))
(push tmppath *tmpparfiles*))
(when *delete-inter-file* (clean-tmp-files))
(probe-file outpath))
(om-beep-msg "CSOUND NOT FOUND"))))

134

ANNEXE n8 : explication du fonctionnement de la


fonction chant de la bibliothque chant-lib
Dans un premier temps, le nom de la fonction est dfini ainsi que ses diffrents arguments.
Des valeurs initiales sont donnes chaque entre afin que la synthse puisse seffectuer
mme si lune des entres de la fonction nest pas renseigne.
(om::defmethod! chant ((onset t) (duree t) (f0 t) (envelope list)
(vibra list) (ampf list) (ffreq list)
(bdwth list) &optional (out-name t))
:icon 150
:indoc '("onset" "durees" "f0" "enveloppe" "vibrato" "jitter"
"amplitudes des formants" "frequences de formants"
"largeurs de bande des formants" "Nom du fichier audio")
:initvals '(0 1 440 '(0.1 0.1 0.15 '(70))
'(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
'((0)) '((0)) '((0)) '"chant.aif")

Le nombre de notes jouer est calcul partir de la liste onset et est sauvegard dans la
variable notes. Les oprations suivantes seront rptes en fonction de la valeur de notes afin
de crer une liste pour chaque note.
(if (and (= (length duree) (length onset)))
(let* ( (notes (length onset)) (resform) (resformf))
(dotimes (n notes resform)

Ltape suivante permet la dtection des fonctions sur les diffrentes entres. Comme cela a
t dit prcdemment, le code de cette section sera prsent ultrieurement au cas par cas lors
de ltude des autres fonctions afin de faciliter la comprhension.
[]

Une liste resform est cre avec lensemble des listes de paramtres fournis la fonction
chant pour chaque note. Chaque lment dune liste correspond alors un p-field
dvnement CSOUND. resform est donc de la forme ((vnement 1) (vnement 2)
(vnement n)).
resform sera traite par la fonction exec-csound qui la transformera en partition et lexcutera
dans CSOUND avec lorchestre chant.orc . Les premiers lments de chaque liste sont
i pour instrument dans CSOUND et 1 pour instrument n1.
(push

(list 'i '1

Les valeurs des onsets, des dures, des frquences et des amplitudes sont extraites pour
chaque note.
(nth n onset) (nth n duree)
(if (= (length f0) '1) (nth 0 f0) (nth n f0))
(if (= (length amps) '1) (nth 0 amps) (nth n amps))

135
Les paramtres du vibrato et du jitter sont dfinis. Dans lordre : vibamp, vala1, vala2, tvala1,
tvala2, vibfreq, valf1, valf2, tvalf1, tvalf2, jitt1, jitt2, jitt3, jittf1, jittf2, jittf3. Ces paramtres
ntant pas dynamiques, leurs valeurs resteront les mme pour chaque notes.
(nth
(nth
(nth
(nth

0 vibra) (nth 1 vibra) (nth 2 vibra) (nth 3 vibra)


4 vibra) (nth 5 vibra) (nth 6 vibra) (nth 7 vibra)
8 vibra) (nth 9 vibra) (nth 10 vibra) (nth 11 vibra)
12 vibra) (nth 13 vibra) (nth 14 vibra) (nth 15 vibra)

Les paramtres relatifs la fonction envelope sont insrs dans resform. Leur valeur sont
statique et restent les mmes pour chaque note (cf. (III)-(B)-(f)).
att rel interp notes

Les valeurs des amplitudes, frquences et largeurs de bandes des formants sont ajoutes
resform. Ces valeurs sont dynamiques.
amp1 amp2 amp3 amp4
freq1 freq2 freq3 freq4 freq5
bdw1 bdw2 bdw3 bdw4 bdw5

Le traitement des informations pour la correction de lamplitude des formants se faisant


directement dans lorchestre CSOUND, il est ncessaire denvoyer les paramtres cette
rgle (cf. (III)-(B)-(i)). Ceci est du au caractre volutif de lamplitude dune note au cours du
temps (enveloppe). Les informations doivent donc tre traites en direct.
cslope ajus1 ajus2
ajus3 f-mean sexef

Le paramtre suivant permet dindiquer lorchestre CSOUND laquelle des enveloppes


utiliser : envelope ou envelope2.
envgen)
resform))

Trois tables de fonction sont utilises par lorchestre CSOUND chant.orc :

Une crant une sinusode (GEN10) pour les impulsions des gnrateurs de FOFs (cf.
(II)-(A)-(c)).

Une crant une sigmode (GEN19) pour dfinir lenveloppe de chaque impulsion (cf.
(II)-(A)-(c)).

La dernire table de fonction est optionnelle, elle est ici sauvegarde dans la variable
fenv. Ses paramtres sont gnrs par envelope2 en fonction de la forme dessine dans
le BPF qui lui est associ (cf. (III)-(B)-(f)). Elle permet donc de dcrire la forme de
lenveloppe damplitude des diffrentes notes produites.

Ces tables de fonctions sont sauvegardes sous forme de liste au dbut de resform.
(push (append
(list '(f 1 0 8192 10 1))
(list '(f 2 0 1024 19 0.5 0.5 270 0.5))
(list fenv)
(reverse resform)
)
resformf)

136
La dernire opration effectue par la fonction chant consiste envoyer la liste de paramtres
cre resformf la fonction exec-csound qui la transformera en partition CSOUND puis
lexcutera avec lorchestre chant.orc .
(exec-csound resformf out-name)))

137

ANNEXE n 9 : contenu du fichier CSOUND chant.orc


;Cet Orchestre CSOUND est rattach la bibliothque "synth-chant"
d'OpenMusic.
;Il implmente toutes les tches de traitement du signal demand par la
mthode "chant".
;Cette dernire cre une partition CSOUND partir d'une liste de
paramtres, cette partition est ensuite
;appliqu l'orchestre suivant.
;Romain MICHON, mai 2010, "La synthse de la voix chante par Fonctions
d'Onde Formantique ;techniques, outils existants, exemple d'implmentation et d'utilisation",
master de musicologie.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
gilast init 0 ;dclaration des variables globales
gifre1 init 0
gifre2 init 0
gifre3 init 0
gifre4 init 0
gifre5 init 0
giwid1 init 0
giwid2 init 0
giwid3 init 0
giwid4 init 0
giwid5 init 0
giamp1 init 0
giamp2 init 0
giamp3 init 0
giamp4 init 0
giamp5 init 0
gilast_tst init 0
gicnt init 0
instr 1
koct = 0
kris = .003 ;Dure de l'attaque des impulsions
kdur = .02 ;Dure totale des impulsions
kdec = .007 ;Dure du decay des FOF
iolaps = 100000
ifna = 1 ;Utilisation d'une table de fonction de sinusode (GEN10) pour les
impulsions
ifnb = 2 ;Utilisation d'une table de fonction de sigmode (GEN19) pour la
cration de l'enveloppe
itotdur = p3 ;dure totale de la note
iphs = 0 ;phase initiale de la fondamentale
ifmode = 1 ;permet d'utiliser des frquences de formants diffrentes pour
chaque notes
iinterp = p24
kenvar1 = 1 ;si la rgle amp-cor n'est pas utilise, kenvar1 doit tre
gale 1
aengar1 = 1 ;si la rgle amp-cor n'est pas utilise, aengar1 doit tre
gale 1
if0 = p4 ;frquence de la fondamentale

138

;si la mthode "ffreq" n'est pas connect la mthode "chant" dans OM,
l'orchestre CSOUND utilise des valeurs par dfaut
if (p30==0 && p31==0 && p32==0 && p33==0 && p34==0) then
ifre1
ifre2
ifre3
ifre4
ifre5

=
=
=
=
=

800 ;frquences par dfaut des formants


1150
2900
3900
4950

ifre1
ifre2
ifre3
ifre4
ifre5

=
=
=
=
=

p30 ;frquences des formants dfinies dans OM


p31
p32
p33
p34

else

endif
;si la mthode "ampf" n'est pas connect la mthode "chant" dans OM,
l'orchestre CSOUND utilise des valeurs par dffaut
if (p26 == 0 && p27 == 0 && p28 == 0 && p29 == 0) then
;amplitudes par dffaut des formants des formants traduites
de dB 0dbfs = 32767
iamp1
iamp2
iamp3
iamp4
iamp5

=
=
=
=
=

ampdb(p5)
ampdb(p5 ampdb(p5 ampdb(p5 ampdb(p5 -

6)
32)
20)
50)

else
;amplitudes des formants dffinies dans OM traduites de db 0dbfs =
32767
iamp1
iamp2
iamp3
iamp4
iamp5

=
=
=
=
=

ampdb(p5)
ampdb(p5 +
ampdb(p5 +
ampdb(p5 +
ampdb(p5 +

p26)
p27)
p28)
p29)

endif
;si la mthode "bdwth" n'est pas connect la mthode "chant" dans OM,
l'orchestre CSOUND utilise des valeurs par dffaut
if (p35 == 0 && p36 == 0 && p37 == 0 && p38 == 0 && p39 == 0) then
iwid1 = 80 ;largeurs de bandes par dffaut des formants
iwid2 = 90
iwid3 = 120
iwid4 = 130
iwid5 = 140
else
iwid1 = p35 ;largeurs de bandes dffinies dans OM
iwid2 = p36
iwid3 = p37
iwid4 = p38
iwid5 = p39
endif
;si la mthode "vibra" n'est pas connecte la mthode "chant", pas de
vibrato
if (p6=0 && p7=0 && p8=0 && p9=0 && p10=0 && p11=0 && p12=0 && p13=0 &&
p14=0 && p15=0) then
amod = 0

139
else
;modulation de l'amplitude du vibrato
kvala1 = p7
ktvala1 = p9
kvala2 = p8
ktvala2 = p10
;des valeurs sont tires au sort dans une gamme dfinie par kvala1
une frquence de ktvala1
krand_amp1 randh kvala1*1000, ktvala1
kavar_amp1 = 1+((krand_amp1/1000) - (kvala1/2))
;chaque valeur est interpole avec la prcdente et la suivante
kavar_amp_interp1 lineto kavar_amp1, 1/ktvala1
krand_amp2 randh kvala2*1000, ktvala2
kavar_amp2 = 1+((krand_amp2/1000) - (kvala2/2))
kavar_amp_interp2 lineto kavar_amp2, 1/ktvala2
;modulation de la frquence du vibrato
kvalf1 = p12
ktvalf1 = p14
kvalf2 = p13
ktvalf2 = p15
;des valeurs sont tires au sort dans une gamme dfinie par kvalf1
une frquence de ktvalf1
krand_freq1 randh kvalf1*1000, ktvalf1
kavar_freq1 = 1+((krand_freq1/1000) - (kvalf1/2))
kavar_freq_interp1 lineto kavar_freq1, 1/ktvalf1
krand_freq2 randh kvalf2*1000, ktvalf2
kavar_freq2 = 1+((krand_freq2/1000) - (kvalf2/2))
kavar_freq_interp2 lineto kavar_freq2, 1/ktvalf2
;paramtres de l'enveloppe du vibrato
iatt_vib = p47
idurn_vib = p3-0.02
idec_vib = p48
;si la fonction envelope-vib est connecte, alors une enveloppe est
applique au vibrato
if (iatt_vib != 0 && idec_vib != 0) then
kenv_vib linen 1, iatt_vib, idurn_vib, idec_vib
else
kenv_vib = 1
endif
;cration du vibrato
kvibamp = p6
kvibfreq = p11
;signal modulant pour la fondamentale
amod oscili kvibamp*((kavar_amp_interp1+kavar_amp_interp2)/2),
kvibfreq*((kavar_freq_interp1+kavar_freq_interp2)/2), 1
endif
;jitters pour les variations alatoires de la fondamentale
;la mthode "jitter" est-elle connecte la mthode "chant"?
if (p16=0 && p17=0 && p18=0 && p19=0 && p20=0 && p21=0) then
kfond_var = 0
else
kjitt1 = p16
kjitt2 = p17

140
kjitt3 = p18
kjittf1 = p19
kjittf2 = p20
kjittf3 = p21
kfond_var1 jitter kjitt1*if0, kjittf1, kjittf1
kfond_var2 jitter kjitt2*if0, kjittf2, kjittf2
kfond_var3 jitter kjitt3*if0, kjittf3, kjittf3
;le jitter final est compos d'une moyenne des trois prcdents
kfond_var = (kfond_var1 + kfond_var2 + kfond_var3)/3
endif
;Interpolation des frquences, bandwidths et amplitudes des formants d'une
note une autre
if (iinterp==0) then
iskip = 0
else
iskip = 1
endif
;pour empcher l'interpolation si elle est dsactive ou lors de la
premire note
if (gilast_tst>0 && iinterp!=0) then
iduri = iinterp ;dure de l'interpolation
af0i linseg gilast, iduri, p4 ;interpolation linaire de la
fondamentale
;interpolation linaire de la frquence de chaque formant
afre1i linseg gifre1, iduri, ifre1
afre2i linseg gifre2, iduri, ifre2
afre3i linseg gifre3, iduri, ifre3
afre4i linseg gifre4, iduri, ifre4
afre5i linseg gifre5, iduri, ifre5
;interpolation linaire de la largeur de bande de chaque formant
kwid1i linseg giwid1, iduri, iwid1
kwid2i linseg giwid2, iduri, iwid2
kwid3i linseg giwid3, iduri, iwid3
kwid4i linseg giwid4, iduri, iwid4
kwid5i linseg giwid5, iduri, iwid5
;interpolation linaire des amplitudes des formants
aamp1i linseg giamp1, iduri, iamp1
aamp2i linseg giamp2, iduri, iamp2
aamp3i linseg giamp3, iduri, iamp3
aamp4i linseg giamp4, iduri, iamp4
aamp5i linseg giamp5, iduri, iamp5
;Variables globales sauveguardant les paramtres des notes
prcdentes pour l'interpolation
gilast = p4
gifre1 = ifre1 ;Variables globales pour les frquences des formants
gifre2 = ifre2
gifre3 = ifre3
gifre4 = ifre4
gifre5 = ifre5
giwid1
giwid2
giwid3
giwid4
giwid5

=
=
=
=
=

iwid1 ;Variables globales pour les largeurs de bandes


iwid2
iwid3
iwid4
iwid5

giamp1 = iamp1

141
giamp2 = iamp2 ;Variables globales pour les amplitudes des formants
giamp3 = iamp3
giamp4 = iamp4
giamp5 = iamp5
;pas d'interpolation lors de la premire note ou si elle est dsactive
else
gilast = p4
gifre1
gifre2
gifre3
gifre4
gifre5

=
=
=
=
=

ifre1
ifre2
ifre3
ifre4
ifre5

giwid1
giwid2
giwid3
giwid4
giwid5

=
=
=
=
=

iwid1
iwid2
iwid3
iwid4
iwid5

giamp1
giamp2
giamp3
giamp4
giamp5

=
=
=
=
=

iamp1
iamp2
iamp3
iamp4
iamp5

af0i = p4
afre1i
afre2i
afre3i
afre4i
afre5i

=
=
=
=
=

ifre1
ifre2
ifre3
ifre4
ifre5

kwid1i
kwid2i
kwid3i
kwid4i
kwid5i

=
=
=
=
=

iwid1
iwid2
iwid3
iwid4
iwid5

aamp1i = iamp1
aamp2i = iamp2
aamp3i = iamp3
aamp4i = iamp4
aamp5i = iamp5
gilast_tst = 1
endif
;paramtres fournis par la fonction "envelope" utiliss soit pour crer une
enveloppe globale sur la phrase musicale entire, soit pour une enveloppe
locale sur chaque notes
idurn = p3-0.02
iatt = p22
idec = p23
;si l'interpolation entre les frquences de la fondamentale est desactive,
les paramtres de l'objet "envelope" sont appliqus chaque note
if (iinterp=0) then
;contrle de l'enveloppe globale des notes
aenvg = 1 ;pas d'enveloppe globale de la phrase musicale
;p46 est un p-field test gnr par la mthode "chant"
if (p46=1) then
;utilisation des paramtres de la mthode "enveloppe2"
kenv oscil1 0, 1, idurn, 3

142
else
;utilisation des paramtres de la mthode "envelope"
kenv linen 1, iatt, idurn, idec
endif
else
;contrle de l'enveloppe globale de la phrase musicale :
;les paramtres de la mthode "envelope" sont utiliss
;si la fonction envelope-vib est connecte, alors une enveloppe
;globale est applique au vibrato
knotes = p25
kenv = 1
if (gicnt == 0) then
aenvg linseg 0, iatt, 1, (idurn - iatt), 1
elseif (gicnt == (knotes -1)) then
aenvg linseg 1, (idurn - idec), 1, idec, 0
else
aenvg = 1
endif
gicnt = gicnt + 1
endif
;correction automatique de l'amplitude des formants : mthode "amp-cor"
if (p40==0 && p41==0 && p42==0 && p43==0 && p44==0 && p45==0) then ;la
mthode "amp-cor" est-elle connecte?
else
kcslope = p40 ;pente du spectre
kajus1 = p41 ;coefficient d'ajustement n1
kajus2 = p42 ;coefficient d'ajustement n2
kajus3 = p43 ;coefficient d'ajustement n3
kfmean = p44 ;frquence mdiane de la tessiture de la voix utilise
ksexef = p45 ;male ou femelle?
;calcul
atino = kenv*aenvg*(if0/kfmean)^kajus3
krslope = kcslope*exp(kajus1*taninv(kajus2*log(if0/kfmean)))
aamptmp2 = atino*aamp2i
aamptmp3 = atino*aamp3i
aamptmp4 = atino*aamp4i
aamptmp5 = atino*aamp5i
if (kcslope < 0) then
;si voix masculine
if (ksexef == 1) then
aamp2i = aamptmp2*aenvg*kenv*(3+(1.1*((400-if0)/300)))
aamp3i = aamptmp3*aenvg*kenv*(3+(1.1*((400-if0)/300)))
aamp4i = aamptmp4*aenvg*kenv*(3+(1.1*((400-if0)/300)))
aamp5i = aamptmp5*aenvg*kenv*(3+(1.1*((400-if0)/300)))
else
;si voix fminine
aamp2i = aamptmp2*aenvg*kenv*(.8+1.05*((1000-if0)/1250))
aamp3i = aamptmp3*aenvg*kenv*(.8+1.05*((1000-if0)/1250))
aamp4i = aamptmp3*aenvg*kenv*(.8+1.05*((1000-if0)/1250))
aamp5i = aamptmp5*aenvg*kenv*(.8+1.05*((1000-if0)/1250))
endif
else
;si krslope est positif, il sert d'index pour la mise
l'chelle
aamp2i
aamp3i
aamp4i
aamp5i

=
=
=
=

aamptmp2*krslope
aamptmp3*krslope
aamptmp4*krslope
aamptmp5*krslope

endif
;seul les quatre derniers formants sont concern par l'ajustement

143
kenvar1=kenv ;conservation des effets de kenv sur le premier formant
;conservation des effets de aenvg sur le premier formant
aengar1=aenvg
;annulation des effets de kenv sur les quatre derniers formants
kenv=1
;annulation des effts de kenv sur les quatre derniers formants
aenvg=1
endif
;Creation des 5 formants
ar1 fof aamp1i*kenv*aenvg*kenvar1*aengar1,
af0i+(if0*amod*kenv_vib)+kfond_var, afre1i, koct, kwid1i, kris, kdur, kdec,
iolaps, ifna, ifnb, itotdur, iphs, ifmode, iskip
ar2 fof aamp2i*kenv*aenvg, af0i+(if0*amod*kenv_vib)+kfond_var, afre2i,
koct, kwid2i, kris, kdur, kdec, iolaps, ifna, ifnb, itotdur, iphs, ifmode,
iskip
ar3 fof aamp3i*kenv*aenvg, af0i+(if0*amod*kenv_vib)+kfond_var, afre3i,
koct, kwid3i, kris, kdur, kdec, iolaps, ifna, ifnb, itotdur, iphs, ifmode,
iskip
ar4 fof aamp4i*kenv*aenvg, af0i+(if0*amod*kenv_vib)+kfond_var, afre4i,
koct, kwid4i, kris, kdur, kdec, iolaps, ifna, ifnb, itotdur, iphs, ifmode,
iskip
ar5 fof aamp5i*kenv*aenvg, af0i+(if0*amod*kenv_vib)+kfond_var, afre5i,
koct, kwid5i, kris, kdur, kdec, iolaps, ifna, ifnb, itotdur, iphs, ifmode,
iskip
asort = ar1 + ar2 + ar3 + ar4 + ar5 ;addition des 5 formants
out asort
endin

144

ANNEXE n10 : traitement des informations par la


fonction vibra de la bibliothque chant-lib
La fonction vibra permet de crer une liste avec les diffrents paramtres du vibrato et les
rsultats des fonctions jitter et envelope-vib. Cette liste peut ensuite tre envoye la fonction
chant qui ajoutera son contenu la liste finale resform (cf. (III)-(B)-(c)).
Afin de comprendre au mieux comment la fonction vibra traite les informations qui lui sont
envoyes, il est ncessaire den tudier sa construction :
Tout dabord, le nom de la fonction est dclar ainsi que ses douze variables.
(om::defmethod! vibra ((vibamp number) (vala1 number)
(vala2 number) (tvala1 number)
(tvala2 number) (vibfreq number)
(valf1 number) (valf2 number)
(tvalf1 number) (tvalf2 number)
&optional (jitter list) (env_vib list))
:icon 234
:indoc '("vibamp" "vala1" "vala2" "tvala1" "tvala2" "vibfreq" "valf1"
"valf2" "tvalf1" "tvalf2" "jitter" "enveloppe vibrato")
:initvals '(0.05 0.01 0.01 5000 5000 5 0.01 0.01 1000 1000 '(1) '(1))

La fonction vibra teste si la fonction jitter est connecte en se renseignant sur la taille de la
liste associe lentre jitter. Si celle-ci est gale un, cela signifie que la valeur par dfaut
est utilise (1) et que la fonction jitter nest par consquent pas connecte. Dans ce cas, les
emplacements de la liste rservs aux paramtres de jitter sont remplis avec des zros ce qui
permet CSOUND de savoir si la fonction jitter est connecte. Dans le cas inverse, les
valeurs contenues dans la liste retourne par jitter sont extraites et copies dans la liste cre
par la fonction vibra : vibamp.
Un autre test du mme type est effectu pour savoir si la fonction envelope-vib est connecte.
(cond
((= (length jitter) '1) (progn (if (= (length env_vib) 2)
(list vibamp vala1 vala2 tvala1
tvala2 vibfreq valf1 valf2
tvalf1 tvalf2 0 0 0 0 0 0
(nth 0 env_vib) (nth 1 env_vib))
(list vibamp vala1 vala2 tvala1
tvala2 vibfreq valf1 valf2
tvalf1 tvalf2 0 0 0 0 0 0 0 0))))
((> (length jitter) '1) (progn (if (= (length env_vib) 2)
(list vibamp vala1 vala2 tvala1
tvala2 vibfreq valf1 valf2 tvalf1 tvalf2
(nth 0 jitter) (nth 1 jitter) (nth 2 jitter)
(nth 3 jitter) (nth 4 jitter)
(nth 5 jitter) (nth 0 env_vib)
(nth 1 env_vib))
(list vibamp vala1 vala2 tvala1
tvala2 vibfreq valf1 valf2 tvalf1 tvalf2
(nth 0 jitter) (nth 1 jitter) (nth 2 jitter)
(nth 3 jitter) (nth 4 jitter)
(nth 5 jitter) 0 0))))))

145
Pour finir, il faut prciser que les valeurs contenues dans la liste retourne par la
fonction vibra sont directement intgres dans la liste resform de la fonction chant :
(nth 0 vibra)
(nth 1 vibra)
(nth n vibra)
[]

Si vibra nest pas connect la fonction chant, celle-ci utilisera les valeurs dfinies par
dfaut : une liste de zro. Ceci permettra CSOUND de savoir si la fonction vibra est
connecte ou non chant.

146

ANNEXE n11 : cration du vibrato dans lorchestre


CSOUND chant.orc partir des informations
transmises par la fonction vibra de la bibliothque
chant-lib
Le vibrato est cr dans CSOUND partir des informations transmises par la fonction vibra
la fonction chant de la manire suivante :
CSOUND teste dabord si la fonction vibra est connecte chant. Si se nest pas le cas, aucun
vibrato nest appliqu la fondamentale.
if (p6=0 && p7=0 && p8=0 && p9=0 && p10=0 && p11=0 && p12=0 && p13=0 &&
p14=0 && p15=0) then
amod = 0
else

Les deux jitters pour les variations alatoires de lamplitude sont crs laide de lopcode
randh.

Celui-ci permet de gnrer des valeurs comprises entre zro et un nombre donn de

faon alatoire une certaine frquence. Son premier argument correspond la valeur
maximale pouvant tre tire au sort et son deuxime la frquence des tirages.199
Les nombres tirs alatoirement doivent tre centrs pour pouvoir agir dans le domaine des
entiers relatifs.
Afin de ne pas avoir de discontinuits dans le vibrato, chaque valeur produite alatoirement
par la fonction randh est interpole linairement avec la suivante. Cette opration est
effectue grce lopcode lineto qui permet dinterpoler les valeurs qui lui sont fournies en
un temps donn. Ainsi, le premier argument de randh correspond aux valeurs interpoler
(linterpolation se fait chaque nouvelle valeur avec la prcdente) et son deuxime la dure
dinterpolation en secondes qui est ici gale 1/tvalan.200
kvala1 = p7
ktvala1 = p9
kvala2 = p8
ktvala2 = p10
krand_amp1 randh kvala1*1000, ktvala1
kavar_amp1 = 1+((krand_amp1/1000) - (kvala1/2))
kavar_amp_interp1 lineto kavar_amp1, 1/ktvala1
krand_amp2 randh kvala2*1000, ktvala2
kavar_amp2 = 1+((krand_amp2/1000) - (kvala2/2))
kavar_amp_interp2 lineto kavar_amp2, 1/ktvala2

199 VERCOE, Barry, RANDH , The canonical CSOUND Reference Manual, Version 5.09, d. sous la direction de Barry Vercoe,
Cambridge : MIT, 2005, p. 1495-1496, disponible en ligne : http://www.csound.com/manual/ (en ligne le 04/09/2010).
200 VERCOE, Barry, op. cit., LINETO , p. 1015.

147
De la mme manire, deux jitters introduisent des variations alatoires la frquence du
vibrato.
krand_freq1 randh kvalf1*1000, ktvalf1
kavar_freq1 = 1+((krand_freq1/1000) - (kvalf1/2))
kavar_freq_interp1 lineto kavar_freq1, 1/ktvalf1
krand_freq2 randh kvalf2*1000, ktvalf2
kavar_freq2 = 1+((krand_freq2/1000) - (kvalf2/2))
kavar_freq_interp2 lineto kavar_freq2, 1/ktvalf2

Lenveloppe de lamplitude du vibrato est cre avec lopcode linen qui permet de produire
une enveloppe du type attaque maintien chute. Dans un premier temps, CSOUND teste si
la fonction envelope-vib est connecte. Les valeurs produites par linen seront multiplies
celle du vibrato, elles seront donc comprises entre 0 et 1. Pour cette raison, la valeur passe
dans le premier argument de linen est un, puisquelle correspond la valeur maximale de
lamplitude. Les trois autres arguments contrlent dans lordre : la dure de lattaque, la dure
totale de lenveloppe et la dure de la chute.201 Enfin, il est important de noter que la dure
totale de lenveloppe est rduite de 20 ms.
iatt_vib = p47
idurn_vib = p3-0.02
idec_vib = p48
if (iatt_vib != 0 && idec_vib != 0) then
kenv_vib linen 1, iatt_vib, idurn_vib, idec_vib
else
kenv_vib = 1
endif
kvalf1 = p12
ktvalf1 = p14
kvalf2 = p13
ktvalf2 = p15

Le vibrato est cr avec un oscillateur produisant un signal sinusodal (GEN10) multipli la


frquence f0 de la fondamentale. Son amplitude vibamp est perturbe par un coefficient
variant de faon alatoire dont la valeur est donne par la moyenne des valeurs des deux jitter
dcrits prcdemment. Le mme procd est appliqu la frquence vibfreq du vibrato.
kvibamp = p6
kvibfreq = p11
amod
oscili
kvibamp*((kavar_amp_interp1+kavar_amp_interp2)/2),
kvibfreq*((kavar_freq_interp1+kavar_freq_interp2)/2), 1
endif

Le coefficient de modulation produit par les oprations dcrites prcdemment est associ la
variable amod. Il agit sur la frquence de la fondamentale de la faon suivante : if0 +

201 VERCOE, Barry, op. cit, LINEN , p. 1012-1013.

148
(if0*amod*kenv_vib).

Enfin, il est important de remarquer que lenveloppe de lamplitude

du vibrato est utilise lors de cette tape.

149

ANNEXE n12 : cration du jitter dans CSOUND dans


lorchestre chant.orc
Le vibrato est cr dans CSOUND partir des informations transmises par la fonction jitter
la fonction chant de la manire suivante :
CSOUND teste dans un premier temps si la fonction jitter est connecte chant. Si ce nest
pas le cas, aucune variation alatoire nest applique la fondamentale.
if (p16=0 && p17=0 && p18=0 && p19=0 && p20=0 && p21=0) then
kfond_var = 0

Les valeurs alatoires qui permettront la modulation de la frquence de la fondamentale sont


produites grce un ensemble de trois jitters. Chaque jitter est cr avec lopcode jitter de
CSOUND. Celui-ci permet de fournir les mmes rsultats quune combinaison des objets
randh

et lineto comme celle utilise prcdemment. Son premier argument correspond

lamplitude de la modulation. Ici, les valeurs de jitt1, jitt2 et jitt3 agissent comme des
proportions de la frquence f0. Le deuxime et le troisime argument permettent de dterminer
la frquence laquelle chaque valeur alatoire est produite.202
Une moyenne des rsultats des trois jitters un instant t est faite et permet de dterminer
lindex de modulation de la frquence f0 de la fondamentale.
else
kjitt1 = p16
kjitt2 = p17
kjitt3 = p18
kjittf1 = p19
kjittf2 = p20
kjittf3 = p21
kfond_var1 jitter kjitt1*if0, kjittf1,
kfond_var2 jitter kjitt2*if0, kjittf2,
kfond_var3 jitter kjitt3*if0, kjittf3,
kfond_var = (kfond_var1 + kfond_var2 +

kjittf1
kjittf2
kjittf3
kfond_var3)/3

endif

Le jitter final produit lors des tapes dcrites prcdemment est directement additionn la
frquence de la fondamentale au moment de la synthse. On peut voir en orange dans la ligne
de code suivante le rcapitulatif des oprations de modulation de la frquence f0 :
arn fof aampni*kenv*aenvg, aint+(if0*amod*kenv_vib)+kfond_var, afreni,
koct, kwidni, kris, kdur, kdec, iolaps, ifna, ifnb, itotdur, iphs, ifmode,
iskip

202 VERCOE, Barry, op. cit., JITTER , p. 968-969.

150

ANNEXE n13 : fonctionnement de la fonction


envelope2 de la bibliothque chant-lib
Le mode de fonctionnement de envelope2 sinspire grandement de celui des fonctions
pargen57 et table de la bibliothque om2csound. En effet, dans un premier temps les
variables y-min et y-max sont dclares. Elles serviront mettre lchelle de CSOUND les
valeurs issues du BPF.
(let* ((y-min '0) (y-max '1) (ndec '3) res

Les diffrentes coordonnes x et y des points dessins sur le BPF sont extraites sous forme de
liste dans les variables Ly et Lx.
(Ly (copy-list (om::x-points bpf0)))
(Lx (copy-list (om::y-points bpf0))))

Une liste indiquant que la table de fonction crer est la troisime de la future partition
CSOUND, quelle reste active durant toute la performance, quelle a une prcision de pnts
points et quelle utilise GEN07203 est cre. Elle est ensuite additionne aux diffrents
paramtres dcrivant la forme de lenveloppe dont les valeurs sont calcules par la fonction
paramxy ainsi qu la liste des amplitudes de chaque note.
(push (append (list 'f '3 '0 pnts '7)
(paramxy (om::om-round (om-scale/max Ly pnts))
(om::om-round (om-scale Lx y-min y-max) ndec)))
res)
(push amps res)
(reverse res))

La liste retourne par le fonction envelope2 et envoye lobjet chant est donc de la forme :
((tables de fonction) (liste des amplitudes de chaque note)).

203 VERCOE, Barry, op. cit., GEN07 , p. 2197-2198.

151

ANNEXE n14 : traitement par la fonction chant des


informations retournes par les fonctions envelope et
envelope2 dans la bibliothque chant-lib
Dans un premier temps, la fonction chant teste laquelle des deux fonctions pour le contrle de
lenveloppe est connecte sur son entre numro quatre envelope. Si envelope2 est connecte
(cas o la liste fournie contient deux lments) :

la liste des amplitudes de chaque note est sauvegarde dans la variable amps

la liste contenant la table de fonction issue du BPF est enregistres dans la variable
fenv

les variables associes la fonction envelope deviennent toutes gales zro

la variable envgen devient gale un, celle-ci permet dindiquer CSOUND que la
fonction envelope2 est utilise.

Si envelope est connecte :

la liste des amplitudes de chaque note est sauvegarde dans la variable amps

une table de fonction par dfaut est enregistre dans la variable fenv

les valeurs relatives la dure de lattaque, la dure de la chute et la dure de


linterpolation sont enregistres respectivement dans les variables att, rel et interp

la variable envgen devient gale zro afin dindiquer CSOUND que envelope est
connecte.

(if (= (length envelope) 2)


(setf amps (nth 1 envelope) fenv (nth 0 envelope)
att 0 rel 0 interp 0 envgen 1)
(setf amps (nth 3 envelope) fenv '(f 3 0 8192 10 1)
att (nth 0 envelope) rel (nth 1 envelope)
interp (nth 2 envelope) envgen 0))

152

ANNEXE n15 : cration denveloppes damplitude


dans lorchestre CSOUND chant.orc
Les enveloppes damplitude sont appliques dans CSOUND laide dindex mettant
lchelle lamplitude de chaque note ou dune phrase musicale entire. Ils sont directement
multiplis aux listes damplitudes et leur valeur varie entre zro et un o un correspond donc
une amplitude maximum et zro un silence.
Dans un premier temps, des variables sont assignes la dure de la note et aux diffrents
paramtres de la fonction envelope. De la mme manire que pour lenveloppe du vibrato, la
dure totale de lenveloppe est ici rduite de 20ms afin de supprimer la perturbation du signal
qui survient lors de larrt dun gnrateur de FOFs. Ce problme est inhrent lopcode fof.
Le premier test dans CSOUND vrifie si linterpolation est active. Si cest le cas, les
paramtres issus de la fonction envelope sont utiliss pour dfinir la forme de lenveloppe
damplitude de la phrase musicale. Si ce nest pas le cas, CSOUND effectue une autre srie de
tests afin de savoir laquelle des fonctions envelope et envelope1 est utilise pour dfinir la
forme de lenveloppe de chaque note. On peut donc voir ici que seul la fonction envelope
permet le contrle de lenveloppe damplitude de la phrase musicale dans son intgralit dans
le cas ou linterpolation linaire est utilise.
idurn = p3-0.02
iatt = p22
idec = p23
if (iinterp=0) then

Lorsque linterpolation linaire est dsactive, aucune enveloppe nest applique la phrase
musicale dans sa totalit. Ainsi la variable aenvg qui est associe lenveloppe globale
devient gale un (cf. formule finale de modification de lamplitude la fin de cette annexe).
Si envelope2 est connecte, la table de fonction f3 est lue grce lopcode oscil1. Ses
diffrents arguments sont dans lordre204 :

la dure en seconde du dlai avant que la table de fonction soit lue (ici zro)

lamplitude maximum du signal produit (ici un)

la dure en seconde pour lire la table de fonction (ici idurn)

le numro de la table de fonction utilise.

Le rsultat de la lecture est assign la variable kenv qui est donc utilise pour contrler
lenveloppe damplitude de chaque note.
aenvg = 1
if (p46=1) then

204 VERCOE, Barry, op. cit., OSCIL1 , p. 1234.

153
kenv oscil1 0, 1, idurn, 3
else

Si envelope est connecte, lenveloppe damplitude de chaque note est calcule grce
lopcode linen205.
kenv linen 1, iatt, idurn, idec
endif
else

Lorsque linterpolation linaire est active, une enveloppe globale est applique la phrase
musicale en fonction des paramtres donns la fonction envelope. Cette enveloppe est cre
laide de lopcode linseg et dune variable globale gicnt dont les valeurs sont tenues dun
vnement CSOUND un autre.
De la mme manire que prcdemment pour aenvg, la variable kenv devient gale un afin
quelle nest plus aucune incidence sur lamplitude des son produit. La variable gicnt est
initialise zro au dbut de lorchestre chant.orc . Ainsi, lors de la lecture de la premire
note, lopcode linseg206 est utilis pour tracer deux segments successifs : un entre zro et un
en iatt secondes et un autre entre un et un en (idurn iatt) secondes. Cette opration permet
de dfinir le dbut de lenveloppe globale de la phrase.
La variable gicnt est ensuite incrmente de un chaque fois quune note est joue dans
CSOUND.
Lorsque la dernire note est joue (knotes 1) o knotes est le nombre total de notes dans la
phrase musicale, lopcode linseg est utilis pour tracer un premier segment entre un et un en
(idurn idec) secondes puis un deuxime entre un et zro en idec secondes. Il est aussi
important de prciser que la variable aenvg est maintenue un entre la premire et la dernire
note.
knotes = p25
kenv = 1
if (gicnt == 0) then
aenvg linseg 0, iatt, 1, (idurn - iatt), 1
elseif (gicnt == (knotes - 1)) then
aenvg linseg 1, (idurn - idec), 1, idec, 0
else
aenvg = 1
endif
gicnt = gicnt + 1
endif

205 VERCOE, Barry, op. cit., LINEN , p. 1012-1013.


206 VERCOE, Barry, op. cit., LINSEG , p. 1018-1020.

154

Cration dune enveloppe damplitude pour une phrase musicale complte dans CSOUND

Enfin, lenveloppe damplitude de chaque gnrateur de formant est module de la faon


suivante : amplitude dun gnrateur de formant * kenv * aenvg.

155

ANNEXE n16 : interpolation linaire de la


fondamentale, des amplitudes, des frquences et des
largeurs de bandes dans lorchestre chant.orc pour
CSOUND
Linterpolation linaire est un principe fondamental dans la synthse de la voix chante. Cette
technique permet non seulement dintroduire des glissandos entre les diffrentes notes dune
phrase musicale, mais aussi de passer dune voyelle une autre de faon naturelle (cf. (II)(C)-(c)). Ainsi, lensemble des paramtres contrlant les gnrateurs de FOFs (frquence de la
fondamentale, amplitude, frquences et largeurs de bandes des formants) doivent tres
interpols chaque fois quune nouvelle valeur leur est soumise.
Cette opration est mene bien dans CSOUND grce lopcode linseg207 et une collection
de variables globales dont les valeurs sont maintenues dun vnement CSOUND un autre.
Tout dabord, CSOUND teste si linterpolation est active. Si cest le cas la variable iskip
devient gale un. Celle-ci indique alors aux gnrateurs de FOFs que leur phase
dinitialisation doit tre saute ce qui est primordial pour introduire des glissandos entre
chaque note. Si linterpolation est dsactive, iskip devient gale zro.
if (iinterp==0) then
iskip = 0
else
iskip = 1
endif

Le test est effectu une nouvelle fois mais avec une condition supplmentaire : la variable
globale gilast_tst doit avoir une valeur suprieur zro. En effet, cette dernire permet
dempcher linterpolation lors de la premire note. Pour ceci, elle est initialise avec une
valeur de zro. Une fois que la premire note dune phrase musicale est joue, gilast_tst
devient gale 1 autorisant alors linterpolation.
if (gilast_tst>0 && iinterp!=0) then

Si linterpolation est autorise, CSOUND assigne la dure de linterpolation la variable


iduri. Linterpolation est ensuite mene bien grce lopcode linseg qui trace un segment
entre la valeur prcdente et la nouvelle valeur dun des paramtres de la synthse en un
temps donne ici dfini par iduri. Les valeurs des diffrents paramtres sont sauvegardes
dune note une autre dans des variables globales qui sont mise jour la fin de
linterpolation.
iduri = iinterp

207 VERCOE, Barry, op. cit., LINSEG , p. 1018-1020.

156
Les frquences f0 de la fondamentale sont interpoles.
af0i linseg gilast, iduri, p4

Les frquences des cinq formants sont interpoles.


afre1i
afre2i
afre3i
afre4i
afre5i

linseg
linseg
linseg
linseg
linseg

gifre1,
gifre2,
gifre3,
gifre4,
gifre5,

iduri,
iduri,
iduri,
iduri,
iduri,

ifre1
ifre2
ifre3
ifre4
ifre5

Les largeurs de bandes des cinq formants sont interpoles.


kwid1i
kwid2i
kwid3i
kwid4i
kwid5i

linseg
linseg
linseg
linseg
linseg

giwid1,
giwid2,
giwid3,
giwid4,
giwid5,

iduri,
iduri,
iduri,
iduri,
iduri,

iwid1
iwid2
iwid3
iwid4
iwid5

Les amplitudes des cinq formants sont interpoles.


aamp1i
aamp2i
aamp3i
aamp4i
aamp5i

linseg
linseg
linseg
linseg
linseg

giamp1,
giamp2,
giamp3,
giamp4,
giamp5,

iduri,
iduri,
iduri,
iduri,
iduri,

iamp1
iamp2
iamp3
iamp4
iamp5

Les variables globales pour linterpolation sont mises jour.


gilast
gifre1
gifre2
gifre3
gifre4
gifre5

=
=
=
=
=
=

p4
ifre1
ifre2
ifre3
ifre4
ifre5

giwid1
giwid2
giwid3
giwid4
giwid5

=
=
=
=
=

iwid1
iwid2
iwid3
iwid4
iwid5

giamp1
giamp2
giamp3
giamp4
giamp5

=
=
=
=
=

iamp1
iamp2
iamp3
iamp4
iamp5

else
gilast = p4

Les valeurs des diffrents paramtres de la premire note joue sont sauvegardes pour tre
rutilises lors de la premire interpolation entre la fin de la premire note et le dbut de la
deuxime.
gifre1
gifre2
gifre3
gifre4
gifre5

=
=
=
=
=

ifre1
ifre2
ifre3
ifre4
ifre5

giwid1
giwid2
giwid3
giwid4
giwid5

=
=
=
=
=

iwid1
iwid2
iwid3
iwid4
iwid5

157

giamp2
giamp3
giamp4
giamp5

=
=
=
=

iamp2
iamp3
iamp4
iamp5

Dans la mesure o les variables issues de linterpolation sont directement utilises par les
gnrateurs FOFs (cf. fin du code) leur valeur devient gale celle des valeurs non
interpoles dans le cas o linterpolation est dsactive.
af0i = p4
afre1i
afre2i
afre3i
afre4i
afre5i

=
=
=
=
=

ifre1
ifre2
ifre3
ifre4
ifre5

kwid1i
kwid2i
kwid3i
kwid4i
kwid5i

=
=
=
=
=

iwid1
iwid2
iwid3
iwid4
iwid5

aamp2i = iamp2
aamp3i = iamp3
aamp4i = iamp4
aamp5i = iamp5
gilast_tst = 1
endif

Les valeurs issues de linterpolation sont finalement directement utilises dans ltape de
synthse :
arn fof aampni*kenv*aenvg, aint+(if0*amod*kenv_vib)+kfond_var, afreni,
koct, kwidni, kris, kdur, kdec, iolaps, ifna, ifnb, itotdur, iphs, ifmode,
iskip

158

ANNEXE n17 : fonctionnement des fonctions ffreq,


ampf et bdwth de la bibliothque chant-lib
Les listes de valeurs fournies font partie intgrante de chaque fonction. Les valeurs qui y sont
utilises sont celles disponibles dans le manuel de CSOUND208. Il est possible des les
consulter dans lannexe n24.
Dans la mesure o les trois fonctions dont il est ici question sont construites de la mme
faon, seul le code LISP de ffreq vat tre ici prsent.
Dans un premier temps, le nom de la fonction est dclar ainsi que ses diffrents arguments et
leurs valeurs par dfaut.
(om::defmethod! ffreq ((sexe t) (txt list))
:icon 176
:indoc '("sexe" "voyelles")
:initvals '('soprano '(a))

Des listes de frquences de formants sont associes des variables reprsentatives dun cas de
figure particulier (un type de voix avec une certaine voyelle).
(let* ((res)
(txtl (length txt))
;frequences des formants de basse
;pour chaque voyelle
(afb '(600 1040 2250 2450 2750))
(efb '(400 1620 2400 2800 3100))
(ifb '(250 1750 2600 3050 3340))
(ofb '(400 750 2400 2600 2900))
(ufb '(350 600 2400 2675 2950))
;frequences des formants de tenor
;pour chaque voyelle
(aft '(650 1080 2650 2900 3250))
(eft '(400 1700 2600 3200 3580))
(ift '(290 1870 2800 3250 3540))
(oft '(400 800 2600 2800 3000))
(uft '(350 600 2700 2900 3300))
;frequences des formants de contretenor
;pour chaque voyelle
(afct '(660 1120 2750 3000 3350))
(efct '(440 1800 2700 3000 3300))
(ifct '(270 1850 2900 3350 3590))
(ofct '(430 820 2700 3000 3300))
(ufct '(370 630 2750 3000 3400))
;frequences des formants d'alto
;pour chaque voyelle
(afa '(800 1150 2800 3500 4950))
(efa '(400 1600 2700 3300 4950))
(ifa '(350 1700 2700 3700 4950))
(ofa '(450 800 2830 3500 4950))
(ufa '(325 700 2530 3500 4950))

208 VERCOE, Barry, op. cit., Appendix D. Formant Values , p. 2350-2354.

159
;frequences des formants de soprano
;pour chaque voyelle
(afs '(800 1150 2900 3900 4950))
(efs '(350 2000 2800 3600 4950))
(ifs '(270 2140 2950 3900 4950))
(ofs '(450 800 2830 3800 4950))
(ufs '(325 700 2700 3800 4950)))

On teste quel type de voix est utilis. La liste des voyelles est ensuite lue et on associe alors
une liste de frquences chacune dentre elles. Par exemple, dans le cas o deux a sont
chants par une soprano, la liste retourne par la fonction ffreq sera ((800 1150 2900 3900
4950) (800 1150 2900 3900 4950)).

Enfin, si un mauvais type de voix est entr ou si une

faute dorthographe a t commise, un message derreur est retourn dans le listener.


(case sexe
(basse (dotimes (n txtl res)
(case (nth n txt)
(a (push afb res))
(e (push efb res))
(i (push ifb res))
(o (push ofb res))
(u (push ufb res)))))
(tenor (dotimes (n txtl res)
(case (nth n txt)
(a (push aft res))
(e (push eft res))
(i (push ift res))
(o (push oft res))
(u (push uft res)))))
(contretenor (dotimes (n txtl res)
(case (nth n txt)
(a (push afct res))
(e (push efct res))
(i (push ifct res))
(o (push ofct res))
(u (push ufct res)))))
(alto (dotimes (n txtl res)
(case (nth n txt)
(a (push afa res))
(e (push efa res))
(i (push ifa res))
(o (push ofa res))
(u (push ufa res)))))
(soprano (dotimes (n txtl res)
(case (nth n txt)
(a (push afs res))
(e (push efs res))
(i (push ifs res))
(o (push ofs res))
(u (push ufs res)))))
(otherwise (om-beep-msg "Entrez un type de voix correct
(basse/tenor/contretenor/alto/soprano)!")))
(reverse res)))

160

ANNEXE n18 : traitement des informations retournes


par ffreq et bdwth par la fonction chant dans la
bibliothque chant-lib
Dans le cas des fonctions ffreq et bdwth, la fonction chant teste si ces dernires sont
connectes. Si cest le cas, leurs listes de paramtres sont transmises CSOUND qui les
utilisera pour la synthse. Si elles ne sont pas connectes, des valeurs significatives sont
envoyes CSOUND (une liste de zro) qui effectuera la synthse avec des paramtres par
dfauts.
(if (< (length (nth 0 ffreq)) 5)
(setf freq1 0 freq2 0 freq3 0 freq4 0 freq5 0)
(setf freq1 (nth 0 (nth n ffreq)) freq2 (nth 1 (nth n ffreq))
freq3 (nth 2 (nth n ffreq)) freq4 (nth 3 (nth n ffreq))
freq5 (nth 4 (nth n ffreq))))
(if (< (length
(setf bdw1
(setf bdw1
bdw3
bdw5

(nth 0
0 bdw2
(nth 0
(nth 2
(nth 4

bdwth)) 5)
0 bdw3 0 bdw4 0 bdw5 0)
(nth n bdwth)) bdw2 (nth 1 (nth n bdwth))
(nth n bdwth)) bdw4 (nth 3 (nth n bdwth))
(nth n bdwth))))

161

ANNEXE n19 : traitement des largeurs, frquences et


amplitudes des formants dans lorchestre CSOUND
chant.orc
Lorchestre CSOUND chant.orc vrifie si les fonctions ffreq, ampf et bdwth sont
connectes. Cette opration est mene bien en contrlant le contenu des diffrents p-fields
relatifs aux paramtres des fonctions cites prcdemment. Si lensemble des paramtres de
lune de ces fonctions est gal zro, alors CSOUND considre que la fonction nest pas
connecte et des valeurs par dfaut (une soprano chantant la voyelle a) sont utilises. Dans le
cas inverse, les valeurs contenues dans les diffrents p-fields sont assignes des variables
qui seront ensuite utilises lors du processus de synthse.
if (p30==0 &&
ifre1 =
ifre2 =
ifre3 =
ifre4 =
ifre5 =
else
ifre1 =
ifre2 =
ifre3 =
ifre4 =
ifre5 =
endif

p31==0 && p32==0 && p33==0 && p34==0) then


800
1150
2900
3900
4950
p30
p31
p32
p33
p34

if (p35 == 0 && p36 == 0 && p37 == 0 && p38 == 0 && p39 == 0) then
iwid1 = 80
iwid2 = 90
iwid3 = 120
iwid4 = 130
iwid5 = 140
else
iwid1 = p35
iwid2 = p36
iwid3 = p37
iwid4 = p38
iwid5 = p39
endif

Dans le cas de la fonction ampf, les amplitudes de formants en dcibels sont traduites en dBfs
avec un facteur de 0dbfs = 32767 grce la fonction ampdb() afin de les rendre compatibles
avec les opcodes fof.
if (p26 == 0 && p27 == 0
iamp1 = ampdb(p5)
iamp2 = ampdb(p5 iamp3 = ampdb(p5 iamp4 = ampdb(p5 iamp5 = ampdb(p5 else
iamp1 = ampdb(p5)
iamp2 = ampdb(p5 +
iamp3 = ampdb(p5 +
iamp4 = ampdb(p5 +

&& p28 == 0 && p29 == 0)


6)
32)
20)
50)
p26)
p27)
p28)

162
iamp5 = ampdb(p5 + p29)
endif

163

ANNEXE n20 : traitement des informations envoyes


la fonction amp-cor de la bibliothque chant-lib
Comme cela a t expliqu prcdemment, la fonction amp-cor est la seule des rgles de
chant ne pas tre implmente directement dans OpenMusic cause des variations de
lamplitude de chaque formant en fonction de lenveloppe. Elle se contente donc denvoyer
une liste de paramtres CSOUND qui effectue les calculs relatifs la rgle.
Dans un premier temps, la fonction amp-cor et ses diffrentes entres avec leurs valeurs par
dfaut sont dclares.
(om::defmethod! amp-cor ((ampf list) (cslope number) (ajus list) (sexe t))
:indoc '("Frequences des formants" "pente du spectre" "coefficients d
ajustement" "sexe")
:initvals '('((-6 -32 -20 -50)) '1 '(1 1 0) 'soprano)
:icon 141

Des variables locales sont dclares. Le type de voix utilis est test et la frquence mdiane
de sa tessiture est enregistre dans la variable f-mean. Si le type de voix utilise est une voix
masculine, un est sauvegard dans la variable sexef, si cest une voix fminine, zro. cslope ne
peut pas tre gal zro, ainsi, si cslope=0 cette valeur est remplace par 0.000001.
Lensemble des variables cites prcdemment sont mises dans une liste qui contient
galement les trois coefficients dajustement ajus. Enfin, cette liste est place au dbut de la
liste contenant les listes damplitudes de formants passes dans lentre ampf. La liste finale
est de la forme : ((liste de paramtres de amp-cor ) (liste1 damplitudes de formants) (listen
damplitudes de formants)).
(let (f-mean sexef)
(cond ((string= sexe 'soprano) (setf f-mean 523))
((string= sexe 'alto) (setf f-mean 392))
((string= sexe 'contretenor) (setf f-mean 370))
((string= sexe 'tenor) (setf f-mean 261))
((string= sexe 'basse) (setf f-mean 165))
(if (or (string= sexe 'contretenor) (string= sexe 'basse)
(string= sexe 'tenor))
(setf sexef '1) (setf sexef '0))
(when (zerop cslope) (setq cslope 0.000001))
(push (list cslope (nth 0 ajus) (nth 1 ajus) (nth 2 ajus) f-mean
sexef) ampf)))

164

ANNEXE n21 : traitement des informations envoyes


par les fonction amp-cor et ampf la fonction chant
dans la bibliothque chant-lib
Les fonctions amp-cor et ampf peuvent tre connectes sur lentre ampf de la fonction chant.
Dans la mesure o les listes fournies par ces deux fonctions concernant lamplitude des
formants sont diffrentes, il est ncessaire deffectuer une srie de tests.
Dans un premier temps, la fonction chant vrifie que lune des deux fonctions est connectes
(la premire liste de la liste fournie doit contenir plus de quatre lments). Si ce nest pas le
cas, des valeurs significatives sont envoyes CSOUND qui utilisera des valeurs par dfaut
pour les amplitudes des formants et qui ne les ajustera pas. Si cest le cas, dautres tests sont
effectus.
(dotimes (n notes resform)
(if (< (length (nth 0 ampf)) 4)
(setf amp1 0 amp2 0 amp3 0 amp4 0 cslope 0 ajus1 0 ajus2 0 ajus3 0 fmean 0 sexef 0)

Si la fonction amp-cor est connecte (la premire liste de la liste fournie compte six
lments), les paramtres pour le contrle de la rgle de correction de lamplitude des
formants sont extraits de la premire liste et placs dans des variables tout comme les
diffrentes amplitudes contenues dans les autres listes. Cette dernire opration est rpte
pour chaque note et donc pour chaque liste issue de la fonction amp-cor.
(if (= (length (nth 0 ampf)) 6)
(setf cslope (nth 0 (nth 0 ampf)) ajus1 (nth 1 (nth 0 ampf))
ajus2 (nth 2 (nth 0 ampf)) ajus3 (nth 3 (nth 0 ampf))
f-mean (nth 4 (nth 0 ampf)) sexef (nth 5 (nth 0 ampf))
amp1 (nth 0 (nth (+ n 1) ampf))
amp2 (nth 1 (nth (+ n 1) ampf))
amp3 (nth 2 (nth (+ n 1) ampf))
amp4 (nth 3 (nth (+ n 1) ampf)))

Si la fonction ampf est connecte, des valeurs significatives sont envoyes CSOUND qui
nutilisera pas la rgle de correction de lamplitude des formants. Les variables associes aux
diffrentes amplitudes des formants sont remplies avec les rsultats de ampf.
(setf cslope 0 ajus1 0 ajus2 0 ajus3 0 f-mean 0 sexef 0
amp1 (nth 0 (nth n ampf)) amp2 (nth 1 (nth n ampf))
amp3 (nth 2 (nth n ampf)) amp4 (nth 3 (nth n ampf))))))

165

ANNEXE n22 : correction des amplitudes des formants


dans lorchestre CSOUND chant.orc partir des
paramtres issus de la fonction amp-cor de la
bibliothque chant-lib
Conformment lalgorithme prsent dans (II)-(C)-(f), une partie de lorchestre
chant.orc permet de corriger des amplitudes de formant en fonction de leffort vocal.
Dans un premier temps, CSOUND contrle si la fonction amp-cor a t connecte la
fonction chant dans OpenMusic. Si ce nest pas le cas, la rgle de correction de lamplitude
des formants nest pas utilise.
if (p40==0 && p41==0 && p42==0 && p43==0 && p44==0 && p45==0) then

Dans le cas inverse, les paramtres de la fonction sont dabord extraits des diffrents p-fields
qui leur ont t assigns dans des variables.
else
kcslope = p40 ;pente du spectre
kajus1 = p41 ;coefficient d'ajustement n1
kajus2 = p42 ;coefficient d'ajustement n2
kajus3 = p43 ;coefficient d'ajustement n3
kfmean = p44 ;frquence mdiane de la tessiture de la voix utilise
ksexef = p45 ;sexe

La rgle prsente dans (II)-(C)-(f) est applique sur les amplitudes interpoles des formants
aampni. Leffort vocal est ici reprsent par les variables aenvg et kenv contenant les indexes
de modulation de lamplitude pour lenveloppe globale de la phrase musicale (aenvg) et pour
lenveloppe de chaque notes (kenv).
atino = kenv*aenvg*(if0/kfmean)^kajus3
krslope = kcslope*exp(kajus1*taninv(kajus2*log(if0/kfmean)))
aamptmp2 = atino*aamp2i
aamptmp3 = atino*aamp3i
aamptmp4 = atino*aamp4i
aamptmp5 = atino*aamp5i
if (kcslope < 0) then
if (ksexef == 1) then
aamp2i = aamptmp2*aenvg*kenv*(3+(1.1*((400-if0)/300)))
aamp3i = aamptmp3*aenvg*kenv*(3+(1.1*((400-if0)/300)))
aamp4i = aamptmp4*aenvg*kenv*(3+(1.1*((400-if0)/300)))
aamp5i = aamptmp5*aenvg*kenv*(3+(1.1*((400-if0)/300)))
else
aamp2i = aamptmp2*aenvg*kenv*(.8+1.05*((1000-if0)/1250))
aamp3i = aamptmp3*aenvg*kenv*(.8+1.05*((1000-if0)/1250))
aamp4i = aamptmp3*aenvg*kenv*(.8+1.05*((1000-if0)/1250))
aamp5i = aamptmp5*aenvg*kenv*(.8+1.05*((1000-if0)/1250))
endif
else
aamp2i
aamp3i
aamp4i
aamp5i
endif

=
=
=
=

aamptmp2*krslope
aamptmp3*krslope
aamptmp4*krslope
aamptmp5*krslope

166

kenvar1=kenv
aengar1=aenvg
kenv=1
aenvg=1
endif

167

ANNEXE n23 : fonctionnement de la fonction


ampmid2db de la bibliothque chant-lib
La fonction ampmid2db permet dimplmenter le modle pour le calcul de lamplitude en
dcibels en fonction de la vlocit Midi prsent dans (III)-(B)-(j). Pour ceci, elle prend dans
un premier temps en arguments une liste de vlocits Midi (vel, valeur par dfaut : 1). La
valeur de chaque lment de cette liste est test afin de savoir quelle formule doit tre utilise
en accord avec le modle prsent prcdemment. Si la valeur teste nest pas comprise entre
0 et 127, un message derreur est retourn. Le rsultat des conversions est stock dans une
variable locale dont le contenu est retourn la fin des oprations :
(om::defmethod! ampmid2db ((vel list))
:icon 178
:indoc '("liste d amplitudes")
:initvals '('(1))
(let ((vell (length vel)) res)
(dotimes (n ampl res)
(cond
((and (>= (nth n vel) 0) (< (nth n vel) 14))
(push (* (nth n vel) 0.14) res))
((and (>= (nth n vel) 14) (< (nth n vel) 48))
(push (- (* (nth n vel) 0.45) 4.61) res))
((and (>= (nth n vel) 48) (<= (nth n vel) 127))
(push (- (nth n vel) 31) res))
((and (< (nth n vel) 0) (> (nth n vel) 127))
(om-beep-msg "L'argument entr n'est pas du type
midi"))))
(reverse res)
)
)

168

ANNEXE n24 : paramtres des formants en fonction


du type de voix et de la voyelle utilise daprs de le
manuel de CSOUND209
Soprano a
Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

800

1150

2900

3900

4950

Amp (dB)

-6

-32

-20

-50

Bw (Hz)

80

90

120

130

140

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

350

2000

2800

3600

4950

Amp (dB)

-20

-15

-40

-56

Bw (Hz)

60

100

120

150

200

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

270

2140

2950

3900

4950

Amp (dB)

-12

-26

-26

-44

Bw (Hz)

60

90

100

120

120

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

450

800

2850

3800

4950

Amp (dB)

-11

-22

-22

-50

Bw (Hz)

40

80

100

120

120

Soprano e

Soprano i

Soprano o

209 VERCOE, Barry, op. cit., Appendix D. Formant Values , p. 2350-2354.

169
Soprano u
Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

325

700

2700

3800

4950

Amp (dB)

-16

-35

-40

-60

Bw (Hz)

50

60

170

180

200

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

800

1150

2800

3500

4950

Amp (dB)

-4

-20

-36

-60

Bw (Hz)

80

90

120

130

140

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

400

1600

2700

3300

4950

Amp (dB)

-24

-30

-35

-60

Bw (Hz)

60

80

120

150

200

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

350

1700

2700

3700

4950

Amp (dB)

-20

-30

-36

-60

Bw (Hz)

50

100

120

150

200

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

450

800

2830

3500

4950

Amp (dB)

-9

-16

-28

-55

Bw (Hz)

70

80

100

130

135

Alto a

Alto e

Alto i

Alto o

170
Alto u
Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

325

700

2530

3500

4950

Amp (dB)

-12

-30

-40

-64

Bw (Hz)

50

60

170

180

200

Contretnor a
Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

660

1120

2750

3000

3350

Amp (dB)

-6

-23

-24

-38

Bw (Hz)

80

90

120

130

140

Contretnor e
Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

440

1800

2700

3000

3300

Amp (dB)

-14

-18

-20

-20

Bw (Hz)

70

80

100

120

120

Contretnor i
Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

270

1850

2900

3350

3590

Amp (dB)

-24

-24

-36

-36

Bw (Hz)

40

90

100

120

120

Contretnor o
Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

430

820

2700

3000

3300

Amp (dB)

-10

-26

-22

-34

Bw (Hz)

40

80

100

120

120

171
Contretnor u
Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

370

630

2750

3000

3400

Amp (dB)

-20

-23

-30

-34

Bw (Hz)

40

60

100

120

120

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

650

1080

2650

2900

3250

Amp (dB)

-6

-7

-8

-22

Bw (Hz)

80

90

120

130

140

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

400

1700

2600

3200

3580

Amp (dB)

-14

-12

-14

-20

Bw (Hz)

70

80

100

120

120

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

290

1870

2800

3250

3540

Amp (dB)

-15

-18

-20

-30

Bw (Hz)

40

90

100

120

120

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

400

800

2600

2800

3000

Amp (dB)

-10

-12

-12

-26

Bw (Hz)

70

80

100

130

135

Tnor a

Tnor e

Tnor i

Tnor o

172
Tnor u
Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

350

600

2700

2900

3300

Amp (dB)

-20

-17

-14

-26

Bw (Hz)

40

60

100

120

120

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

600

1040

2250

2450

2750

Amp (dB)

-7

-9

-9

-20

Bw (Hz)

60

70

110

120

130

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

400

1620

2400

2800

3100

Amp (dB)

-12

-9

-12

-18

Bw (Hz)

40

80

100

120

120

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

250

1750

2600

3050

3340

Amp (dB)

-30

-16

-22

-28

Bw (Hz)

60

90

100

120

120

Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

400

750

2400

2600

2900

Amp (dB)

-11

-21

-20

-40

Bw (Hz)

40

80

100

120

120

Basse a

Basse e

Basse i

Basse o

173
Basse u
Valeurs

f1

f2

f3

f4

f5

Freq (Hz)

350

600

2400

2675

2950

Amp (dB)

-20

-32

-28

-36

Bw (Hz)

40

80

100

120

120

174

ANNEXE n25 : partition de Lair de la reine de la nuit


de La flute enchante de Mozart utilise avec
dcoupage des diffrentes section pour la synthse et
tableau des paramtres utiliss pour chaque section

175

(1)

(6)

(9)

(2)

(7)

(10)

(11)

(3)

(4)

(5)

(8)

(12)

(13)

176

(14)

177

Extrait
Dure de
lattaque des
notes
Dure de la
chute des
notes
Dure de
lattaque du
vibrato
Dure de la
chute du
vibrato
Amplitude du
vibrato
Extrait
Dure de
lattaque des
notes
Dure de la
chute des
notes
Dure de
lattaque du
vibrato
Dure de la
chute du
vibrato
Amplitude du
vibrato

(1)

(2)

(3)

(4)

(5)

(6)

(7)

0.1

0.04

0.1

0.1

0.04

0.1

0.1

0.1

0.06

0.3

0.1

0.06

0.3

0.1

0.1

0.1

0.1

0.1

0.1

0.05

0.15

0.05

0.15

0.05

0.1

0.01

0.1

0.1

0.01

0.1

0.1

(8)

(9)

(10)

(11)

(12)

(13)

(14)

0.04

0.1

0.1

0.04

0.1

0.04

0.1

0.06

0.3

0.2

0.06

0.2

0.06

0.3

0.1

0.1

0.1

0.1

0 .15

0.1

0.1

0.15

0.02

0.1

0.1

0.06

0.08

0.06

0.1

178

ANNEXE n 26 : contenu du fichier CSOUND


fof-dem.csd 210 (daprs lexemple du manuel de
CSOUND211)
<CsInstruments>
; On utilise une frquence d'chantillonnage de 44100 Hz
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
instr 1
kfund init 1 ;Frquence de cration de chaque impulsion, ici, une par
seconde
koct init 0 ;Index d'octaviation
kris init 0.003 ;Dure de l'attaque de l'impulsion : /
kdur init p3 ;Dure totale de l'impulsion
kdec init 0.007 ;Dure du decay de la FOF
iolaps = 60
ifna = 1 ;Utilisation d'une table de fonction de sinusode (GEN10) pour
l'impulsion
ifnb = 2 ;Utilisation d'une table de fonction de sigmode (GEN19) pour la
cration de l'enveloppe
itotdur = p3 ;Dure de la performance, ici itotdur = kdur
;Caractristiques du formant
k1amp = ampdb(89) ;amplitude max de chaque impulsion, ici 89 db
k1form init 2000 ;w0
k1band init 80 ;BW -6 dB :
;Gnrateur de FOF
a1 fof k1amp, kfund, k1form, koct, k1band, kris, \
kdur, kdec, iolaps, ifna, ifnb, itotdur
out a1
endin
</CsInstruments>
<CsScore>
f 1 0 4096 10 1 ;Table1 : Sinusoide
f 2 0 1024 19 0.5 0.5 270 0.5 ;Table2 : Sigmode
i 1 0 0.02
</CsScore>

210 Disponible sur le cd cd/csound.


211 VERCOE, Barry, FOF , The canonical CSOUND Reference Manual, Version 5.09, d. sous la direction de Barry Vercoe,
Cambridge : MIT, 2005, p. 750-751.

179

Bibliographie

180

Monographies Articles
ALLESSANDRO, Christophe (d) ; RODET, Xavier, Synthse et analyse-synthse par
fonctions dondes formantiques , Journal dAcoustique, n 2 (1989), p. 163-169.
ARROABARREN, Ixone ; CARLOSENA, Alfonso ; RODET, Xavier, On the
Measurement of the Instantaneous Frequency and Amplitude of Partials in Vocal Vibrato ,
Transaction on Audio, Speech and Language Processing, XIV (2006), n 4, p. 1413-1421.
ASSAYAG, Grard ; AGON, Carlos, OpenMusic omChroma: Paradigms for the high-level
musical control of sonic processes using omChroma, Paris : IRCAM, 2000.
ATAL, Bishnu, Speech Analysis and Synthesis by Linear Prediction of the Speech Wave ,
Journal of the Acoustical Society of America, XLVII (1971), n 65(A), p. 637-645.
BAISNEE, Pierre-Franois, CHANT manual, Document Ircam : Paris, 1985.
BOITE, Ren, Traitement de la parole, Lausanne : Presses polytechniques et universitaires
romandes, 2000, p.16.
BONADA, Jordi ; CELMA, Oscar ; LOSCOS, Alex ; ORTOLA, Jaume ; SERRA, Xavier,
Singing Voice Synthesis Combining Excitation plus Resonance and Sinusoidal plus Residual
Models : actes de lInternational Computer Music Conference, La Havane, 2001,
http://mtg.upf.edu/files/publications/ (en ligne le 02/05/2010).
BONADA, Jordi ; SERRA, Xavier, Synthesis of the Singing Voice by Performance
Sampling and Spectral Models , Signal Processing Magazine, XXIV (2007), n 2, p. 67-79.
BOSSIS, Bruno, La voix et la machine : La vocalit artificielle dans la musique
contemporaine, Rennes : Presses Universitaire de Rennes, 2005.
BRESSON, Jean, Sound Processing in OpenMusic : actes de la neuvime Conference on
Digital Audio Effects (DAFx-06), Montral, 18-20/09/2006, Paris : IRCAM.
CHAMPION, Gal, Application du modle additif shape invariant pour la transformation
de la voix, Mmoire de stage de DEA ATIAM, Universit Paris VI, 2004.
CHARPENTIER, Francis, Traitement de la parole par Analyse/synthse de Fourier,
application la synthse par diphones, Thse de doctorat (indite), ENST de Paris, 1988.
CHARPENTIER, Francis ; MOULINES, Eric, Pitch Synchronous Waveform Processing
Techniques for Text-to-Speech Synthesis Using Diphones , Speech Communication, IX
(1990), p. 453-467.
CHOWNING, John, Frequency Modulation Synthesis of the Singing Voice , Current
Directions in Computer Music Research, d. sous la direction de Max Mathews et John
Pierce, Cambridge : The MIT press, p. 57-64.
COOK, Perry-Raymond, Identification of Control Parameters in a Articulatory Vocal Tract
Model, with Applications to the Synthesis of Singing, Thse de doctorat (indite), Universit
de Stanford, 1991.

181

COOK, Perry-Raymond, Singing Voice Synthesis : History, Current Work, and Future
Directions , Computer Music Journal, XX (1996), n3, p. 38-46.
COOK, Perry-Raymond, SPASM, a Real-Time Vocal Tract Physical Model Controller and
Singer , Computer Music Journal, XVII (1993), n 1, p. 30-44.
DEPALLE, Philipe ; GARCIA, Guillermo ; RODET, Xavier, A Virtual Castrato : acte de
lInternational Computer Music Conference, Aarhus (Danemark), octobre 1994,
http://articles.ircam.fr/textes/Depalle94a/ (en ligne le 04/09/2010).
FLETCHER, Harvey ; MUNSON, William, Loundness, its definition, measurement and
calculation , Journal of the Acoustical Society of America, V (1933), n 2, p. 82-108.
GAYOU, Evelyne, John Chowning : portraits polychromes, Paris : INA, 2005.
GUILBERT, Jean, La parole : comprhension et synthse par les ordinateurs, Paris : Presses
Universitaires de France, 1979.
HADDAD, Karim, om2csound : bibliothque de modules pour la gnration de scores pour
Csound (version 1), Paris : IRCAM, 1999.
HADDAD, Karim, OpenMusic Users Manual, Paris : IRCAM, 2003.
IOVINO, Francisco ; LAURSON, Mikael, PatchWork PW-Chant reference, Paris : IRCAM,
1996.
JANDER,
Owen,
Singing ,
Grove
Music
Online,
2010,
http://www.oxfordmusiconline.com/subscriber/article/grove/music/25869Singing (en ligne le
04/09/2010).
KELLY, John ; LOCHBAUM, Carol, Speech synthesis : actes du Fourth International
Congress on Acoustics, Copenhagen, septembre 1962.
LEE, Matthew, Acoustic Models for the Analysis and Synthesis of the Singing Voice, Thse de
doctorat indite, Georgia Institute of Technolgy, 2005.
LEMMETTY, Sami, Review of Speech Synthesis Technology, Mmoire de master, Helsinki
University of Technology, 1999, disponible en ligne ladresse suivante :
http://www.acoustics.hut.fi/publications/files/theses/lemmetty_mst/ (en ligne le 04/09/2010).
LIENARD, Jean-Sylvain, Les processus de la communication parle, Paris : Masson, 1977.
LOIZILLON, Guillaume, Diphone Studio: User Manual and Tutorial, Paris : IRCAM, 1999.
MAC AULAY, Robert ; QUATIERI, Thomas, Speech Analysis/Synthesis Based on a
Sinusoidal Representation , Transaction on Acoustics, Speech an Signal Processing, XXXIV
(1986), n 4, p. 744-754.
MERON, Yoram, High Quality Singing Synthesis using the Selection-based Synthesis
Scheme, Thse de doctorat (indite), Universit de Tokyo, 1999.

182

MILLIKAN,
Franck
Rives,
Joseph
Henry
and
the
http://siarchives.si.edu/history/jhp/joseph23.htm (en ligne le 04/09/2010).

Telephone,

POTTIER, Laurent, Le contrle de la synthse sonore par ordinateur , Le Calcul de la


Musique, d. sous la direction de Laurent Pottier, Saint-Etienne : Publication de lUniversit
de Saint-Etienne, 2009, p. 225-330.
POTTIER, Laurent, Le contrle de la synthse sonore, le cas particulier du programme
PatchWork, Thse de doctorat (indite), Paris : EHESS, 2001.
PEETERS, Geoffroy, Analyse et synthse des sons musicaux par la mthode PSOLA : actes
des cinquimes journes de linformatique musicale, La Londe-les-Maures, 5-7/05/1998,
Marseille : Publications de LMA, n 148, 1998, p. G4-1 G4-6.
PEETERS, Geoffroy ; RODET, Xavier, SINOLA : A New Analysis/Synthesis Method using
Spectrum Peak Shape Distortion, Phase and Reassigned Spectrum : actes de lInternational
Computer Music Conference (IMC), Pkin, 1999, Pkin : Computer Music Association, 1999,
p. 153-156.
PRESCOTT, George Bartlett, Bells Electric Speaking Telephone, New-York : D. Appleton
and company, 1884.
ROADS, Curtis, The Computer Music Tutorial, Cambridge : MIT Press, 1996.
RODET, Xavier, Analyse du signal vocal dans sa reprsentation amplitude-temps : synthse
de la parole par rgles, Thse de doctorat (indite), Universit Paris VI, 1977.
RODET, Xavier, Synthesis of the Singing Voice : acte du colloque Benelux Workshop on
Model Based Processing and Coding of Audio, Leuven (Belgique), 15/11/2002, Paris :
IRCAM, 2003.
RODET, Xavier, Time-Domain Formant-Wave-Function Synthesis , Computer Music
Journal, VIII (1984), n 3, p. 9-14.
RODET, Xavier ; BARRIERE, Jean-Baptiste ; POTARD, Yves, Rapport de recherche n35 :
Chant, de la synthse de la voix la synthse en gnral, Paris : IRCAM, 1985.
RODET, Xavier ; MANOURY, Philippe ; LEMOUTON, Serge ; PEETERS, Geoffroy ;
SCHNELL, Norbet, Synthesizing a choir in real-time using Pitch Synchronous Overlap Add
(PSOLA) : actes du First Benelux Workshop on Model Based Processing and Coding of
Audio, Bruxelles, 2002, Paris : IRCAM, 2002.
RODET, Xavier ; PEETERS, Geoffroy, SINOLA: A New Analysis/Synthesis Method using
Spectrum Peak Shape Distortion, Phase and Reassigned Spectrum : actes de lInternational
Computer Music Conference, Pkin, 1999, Paris : IRCAM, 1999.
SCEMAMA, Patrick, K, opra en douze scnes de Philippe Manoury, Paris : Opra
national de Paris, 2000.

183
SCHROEDER, Manfred R., A Brief History
Communication, XIII (1993), n1 et 2, p. 231-237.

of

Synthetic

Speech ,

Speech

SERRA, Xavier ; SMITH, Julius, Spectral Modeling Synthesis: a Sound Analysis/Synthesis


System Based on a Deterministic plus Stochastic Decomposition , Computer Music Journal,
XIV (1990), n 4, p. 12-24.
SMETS-SOLANES, Jean-Paul, Un composant de synthse formantique adapt linteraction
multimdia : actes des 3mes journes de linformatique musicale, le de Tatihou (France), 1618/05/1996, http://recherche.ircam.fr/equipes/repmus/jim96/actes/smets/qtfof.html (en ligne
le 04/09/2010).
SMITH, Julius, Musical Application of Digital Waveguides, Stanford University Center for
Computer Research in Music an Acoustics : Stanford Publication STAN-M-39, 1987.
SUNDBERG, Johan, Synthesising Singing : actes de la quatrime Sound and Music
Computing
Conference,
Lefkada
(Greece),
11-13/07/2007,
http://www.smcconference.org/smc07/ (en ligne le 04/09/2010).
SUNDBERG, Johan, The Science of the Singing Voice, Dekalb (Illinois) : Northern Illinois
University Press, 1987.
VERCOE, Barry, FOF , The canonical Csound Reference Manual, Version 5.09, d. sous
la direction de Barry Vercoe, Cambridge : MIT, 2005, disponible en ligne :
http://www.csounds.com/manual/ (en ligne le 04/09/2010).
WINSTON, Patrick-Henry ; HORN, Berthold-Klaus-Paul, LISP Third Edition, Reading
(Massachusetts) : Addison-Wesley, 1989.

Sites Internet
http://www.aamhl.org/dBchart.htm Page contenant le diagramme de Fletcher-Munson pour
les correspondances entre amplitudes et nuances musicales (en ligne le 04/09/2010).
http://brahms.ircam.fr/works/work/6632/ Page contenant les notes de programme de Chrode
I de Jean-Baptiste Barrire (en ligne le 04/09/2010).
https://ccrma.stanford.edu/~bilbao/master/node5.html Page du cours The Kelly-Lochbaum
Digital Speech Synthesis Model de Stefan Bilbao au CCRMA de Stanford (en ligne le
04/09/2010).
http://common-lisp.net/ Site officiel de la communaut travaillant sur Common LISP (en
ligne le 04/09/2010).
http://cours.musique.umontreal.ca/mus1321/Notes_de_cours/Csound_06_Voix.html Site du
cours analyse, synthse et traitement de la voix dOlivier Belanger de luniversit de Montral
(en ligne le 04/09/2010).
http://cslu.cse.ogi.edu/tts/research/sing/sing.html Page du programme de synthse vocale
Lyricos dvelopp au Georgia Tech Music Department (en ligne le 04/09/2010).

184

http://www.csounds.com/ Site officiel du programme CSOUND (en ligne le 04/09/2010).


http://cycling74.com/products/Max/Mspjitter/ Site officiel commercial du programme
Max/MSP (en ligne le 04/09/2010).
http://forumnet.ircam.fr/703.html Site officiel du programme Diphone Studio dvelopp par
lIRCAM (en ligne le 04/09/2010).
http://mediatheque.ircam.fr/sites/voix/ Site Prsentant les principaux outils danalyse et de
synthse de la voix chante avec leur utilisation dans quelques uvres du rpertoire de la
musique contemporaine (en ligne le 04/09/2010).
http://ncvs.org/ncvs/tutorials/voiceprod/tutorial/filter.html Site internet du National Center for
Voice and Speech (NCVS), page de tutoriaux sur la production de la voix (en ligne le
04/09/2010).
http://www.oxfordmusiconline.com/ Site du Grove Music Online (en ligne le 04/09/2010).
http://recherche.ircam.fr/equipes/analyse-synthese/home.html Site de lquipe analysesynthse de lIRCAM (en ligne le 16/01/2010).
http://recherche.ircam.fr/equipes/analyse-synthese/reine.html Sur cette page, il est possible de
tlcharger le fichier audio de la synthse de Lair de la reine de la nuit de La Flte
enchante de Mozart (en ligne le 04/09/2010).
http://recherche.ircam.fr/equipes/repmus/OpenMusic/index.html Site officiel du programme
OpenMusic (en ligne le 04/09/2010).
http://speech.bme.ogi.edu/tts/flinger/ Site du programme de synthse vocale Flinger
dvelopp luniversit dEdimbourg (en ligne le 04/09/2010).
http://tokyobling.wordpress.com/tag/music/ Blog de Tokyobling (en ligne le 04/09/2010).
http://www.vivos.fr/ Site du projet de recherche Vivos sur lutilisation de voix de synthse
dans des applications multimdias (en ligne le 16/01/2010).
http://www.vocaloid.com/ Site officiel non commercial du programme Vocaloid
dvelopp par Yamaha (en ligne le 04/09/2010).
http://voce.cs.princeton.edu/ Site de Perry Cook sur le projet voce (en ligne le
04/09/2010).
http://weston.ruter.net/projects/ipa-chart/view/ Site officiel de lAPI212 (en ligne le
04/09/2010).

212 Alphabet Phontique International.

185

Enregistrements
BARRIERE, Jean-Baptiste, Chreode , Computer Music Currents 4, 1 CD Wergo WER
2024-50 (enreg. : 1983).
BROSCHI, Ricardo ; HANDEL, Georg-Friedrich ; HASSE, Johann-Adolf, Farinelli, il
castrato : bande originale du film, Ewa Malas-Godlewska ; Derek Ragin ; Les talents lyrique,
1 CD Nave V 5191 (enreg. : 1994).
CHOWNING, John, Phon, 1 CD Wergo WER 2012-50 : 1988 (enreg. : 1981).
GRISEY, Grard, Les chants de lamour, fr 12 Stimmen und Tonband, Schola Heidelberg,
Enregistrement IRCAM non publi (enreg. : 28/11/2008).
HARVEY, Jonathan, Mortuos Plango, Vivos Voco, 1 CD Sargasso Records SCD 28029 :
1999.

Vidos
Close your eyes, chant par Kaito et Meiko, les voix virtuelles cres par Yamaha, vido
disponible sur le cd dans le fichier vocaloid.mp4 cd/vido et sur le site YouTube
ladresse suivante : http://www.youtube.com/watch?v=cVU-tWu9LoY (en ligne le
04/09/2010).
Extrait du making-of du film Il castrato, vido disponible sur le cd dans le fichier
farinelli.mp4 cd/vido et sur le site YouTube ladresse suivante :
http://www.youtube.com/watch?v=No-w5l00pho (en ligne le 04/09/2010).
Interview tlvise de Max Mathews sur la musique assiste par ordinateur, vido disponible
sur le cd dans le fichier Mathews-reine.m4v cd/vido et sur le site YouTube ladresse
suivante : http://www.youtube.com/watch?v=_15ZQL82P4M (en ligne le 04/09/10).

Partitions
MANOURY, Philippe, K : opra pour 15 chanteurs lectroniques et grand orchestre,
Partition dorchestre, Paris : Durand, 2001.

Rencontres
BRESSON, Jean, IRCAM, Paris, 16/11/2009.
CHOWNING, John, Interview Enregistre, Centre Interdisciplinaire dEtude et de Recherche
sur lExpression Contemporaine (CIEREC), St Etienne, 09/11/2009, enregistrement
disponible sur le CD cd/audio/interview-chowning.m4a.
HADDAD, Karim, IRCAM, Paris, 19/11/2009.

186

Index des diffrents fichiers du CD-ROM


~/audio :
farinelli.aiff
FM.aif
interview-chowning.m4a
rein-IRCAM.aiff
transitions-voyelles.aif
~/chant-lib :
chant-lib.lisp
chant.orc
~/chant-lib/resources :
~/chant-lib/resources/icon/ :
Icones des diffrentes fonctions de la bibliothque chant-lib

~/chant-lib/sources :
general.lisp
objets.lisp
regles.lisp
reglessc.lisp
~/csound :
fof-dem.aiff
fof-dem.csd
fof-sop-vib.aiff
fof-sop.aiff
fof-sop.csd
~/matlab :
chantbw.m
fof.m
fofd.fig
fofd.m
fofenv.fig
fofspec.fig
fofspec.m
sigmo.m
~/om :
ampf+ffreq+bdwth.omp
envelope.omp
envelope1+2.omp
exemple-complet.omp
exemple-patch.omp
exemple-reine.omp
ffreq+bdwth.omp
fof-chroma.omp
midi.omp
om2csound.omp
ons-dur-freq.omp
rgles.omp

187
synthese-base.omp
test-dynamique.omp
vibra+jitter+envelope-vib.omp
~/PW :
voice-rules.Lisp
~/reine :
~/reine/cubasse :
Projet Cubase pour le montage des diffrentes sections de la synthse
de Lair de la reine de la nuit de La flute enchante de Mozart
~/reine/dcoupage-audio :
Fichier audio des diffrentes sections synthtises de Lair de la reine de la
nuit de La flute enchante de Mozart

~/reine/dcoupage-midi :
Fichiers Midi utiliss par les patchs dans ~/reine/dcoupage-audio pour la
synthse de Lair de la reine de la nuit de La flute enchante de Mozart

~/reine/om :
Patchs OpenMusic pour la synthse de Lair de la reine de la nuit de Mozart

reine-final.mid
reine-original.MID
reine-synth.aif
~/test-dynamique :
test-dynamique.aif
test-dynamique.mid
test-dynamique.omp
test-dynamique.xlsx
test-dynamique.maxpat
~/video :
farinelli.mp4
Mathews-reine.m4v
vocaloid.mp4

188

Index
A
Agon, Carlos : 75, 78, 79
Allessandro, Christophe (d') : 53
Assayag, Grard : 75, 78, 79
Atal, Bishnu : 34

B
Baisne, Pierre Franois : 5, 56, 59, 61, 64,
63, 66, 67
Barrire, Jean-Baptiste : 47, 56, 59, 69
Blanger, Olivier : 18
Bell, Graham : 3
Boite, Ren : 16, 21
Bonada, Jordi : 37, 39
Bossis, Bruno : 1, 4, 56, 118, 119
Bresson, Jean : 75, 78

C
Champion, Gal : 33
Charpentier, Franois : 41
Chowning, John : 28, 29, 30, 31, 32, 47
Cook, Perry-Raymond : 25, 26, 32, 34
Corbiau, Grard : 43, 44

D
Depalle, Philippe : 43, 44

E
Eckel, Gerhard : 57

F
Fletcher, Harvey : 102

G
Garcia, Guillermo : 43, 44
Gayou, Evelyne : 31
Grisey, Grard : 56
Guilbert, Jean : 1

H
Haddad, Karim : 75, 77, 83, 107
Harvey, Jonathan : 4, 56
Holleville, Jean : 57

Horn, Berthold-Klaus-Paul : 74

I
Iovino, Francisco : 57, 59, 63, 64, 66, 67,
68, 69, 124

J
Jander, Owen : 1

K
Kelly, John : 24, 25, 26

L
Laurson, Mickael : 59, 63, 64, 66, 67, 68,
124
Lemouton, Serge : 40, 42, 43
Lienard, Jean-Sylvain : 2
Lochbaum, Carol : 24, 25, 26
Loizillon, Guillaume : 68

M
MacAulay, Robert : 32, 34
Manoury, Philippe : 4, 40, 42, 43
Mathews, Max : 5, 28, 109
Michon, Romain : 121, 122, 123, 128, 130,
137
Millikan, Franck Rives : 2
Moulines, Eric : 41
Mozart, Wolfgang Amadeus : 5, 7, 73,
109, 114, 115, 116, 120, 174
Munson, William : 102

P
Peeters, Geoffroy : 40, 42, 43
Pierce, John : 28
Pierre, Henry : 3
Potard, Yves : 47, 56, 57, 59, 69
Pottier, Laurent : 47, 56, 57, 61, 64
Prescott, George Bartlet : 3

Q
Quatieri, Thomas : 32, 34

189

R
Rodet, Xavier : 5, 7, 40, 42, 43, 44, 47, 52,
53, 56, 57, 59, 69, 73, 109

S
Saariaho, Kaija : 4
Scemama, Patrick : 43
Schaeffer, Pierre : 3
Schnell, Norbert : 40, 42, 43
Schroeder, Mike : 2
Serra, Xavier : 34, 37, 39

Smith, Julius : 25, 34


Stockhausen, Karlheinz : 3
Sundberg, Johan : 9, 14, 19, 31, 67

V
Vandenheede, Jan : 57
Vercoe, Barry : 50, 89, 146, 147, 149, 150,
152, 153, 155, 158, 168, 178

W
Winston, Patrick Henry : 74

190

Table des matires


Introduction................................................................................................................ 1
La voix chante ....................................................................................................................................1
Des machines qui parlent ....................................................................................................................1
Synthtiser la voix chante aujourdhui ..............................................................................................3
Synthse de la voix par Fonctions dOnde Formantique ....................................................................4
Le programme CHANT ........................................................................................................................5
La synthse de la voix chante par Fonctions dOnde Formantique techniques, outils existants,
exemple dimplmentation et utilisation : dfinition du sujet..............................................................6

I. Synthse de la voix humaine par ordinateur ....................................................... 8


A.

Lappareil phonatoire humain.......................................................................... 9

a)
b)

Anatomie de lappareil phonatoire ...................................................................................................9


Mcanismes de production de la voix ............................................................................................12
o Fonctionnement global du systme phonatoire ..........................................................................12
o Cration du signal de la source vocale.......................................................................................13
o Contrle de la frquence de vibration des cordes vocales .........................................................14
o Les autres gnrateurs de son du systme phonatoire................................................................15
c) De la source sonore au son peru : larticulation............................................................................17
o Les formants ................................................................................................................................17
o Les articulateurs .........................................................................................................................18
o Le rle de chaque formant ..........................................................................................................19
o La notion de diphone...................................................................................................................21

B. Modles physiques bass sur la simulation de tubes acoustiques de


lappareil phonatoire : lexemple du systme SPASM (Singing Physical
Articulatory Synthesis Model) ................................................................................ 24
a)
b)

Fonctionnement des tubes acoustiques de lappareil phonatoire....................................................24


Le systme SPASM (Singing Physical Articulatory Synthesis Model) de Perry Cook.................25

C.

Techniques de synthse spectrales ........................................................ 28

a) La modulation de frquence et limportance du vibrato et des micros fluctuations de la


fondamentale .........................................................................................................................................28
o Technique de synthse par modulation de frquence .................................................................28
o Synthse par modulation de frquence applique la synthse de la voix ................................30
o Importance du vibrato..................................................................................................................30
o Importance des micros fluctuations de la fondamentale f0 .........................................................31
o Modle avanc pour la synthse de la voix par modulation de frquence .................................31
b) Analyse FFT et re-synthse : le modle additif .............................................................................32
c) Analyse et synthse par prdiction linaire (Linear Predictive Coding) .......................................34

D.

Techniques de synthse bases sur la concatnation dchantillons ...... 37

a) Modles par performance sampling : slection automatique, concatnation et modification


dchantillons .........................................................................................................................................37
b) Pitch Synchronous Overlap Add (PSOLA) ....................................................................................40
c) Lexemple de la bande originale du film de Grard Corbiau Farinelli, il castrato........................43

II. La synthse par fonctions donde formantique et le programme CHANT ..... 46


A.

Synthse par Fonctions dOnde Formantique (FOF) .................................. 47

a)
b)
c)
d)
e)

Construction dun signal partir de FOFs......................................................................................47


Composition des FOFs ...................................................................................................................49
Cration de FOFs dans CSOUND ..................................................................................................50
Synthtiseur FOF............................................................................................................................52
Avantages de la synthse par FOFs face aux modles de synthse par filtres ...............................54

191
B.

Le programme CHANT ................................................................................... 56

a)
b)

Historique du programme CHANT ...............................................................................................56


Modle de production de CHANT .................................................................................................58

C.

Les rgles de synthse de CHANT................................................................ 59

a)
b)
c)

Contrle du vibrato .........................................................................................................................59


Variations alatoires de la fondamentale........................................................................................61
Interpolation des formants et de la fondamentale...........................................................................61
o Interpolation des frquences f0 de la fondamentale ....................................................................61
o Interpolation des voyelles ...........................................................................................................62
d) Contrle de lenveloppe globale des notes .....................................................................................62
e) Rgle pour le calcul automatique des largeurs de bande des formants ..........................................64
f) Rgles pour le calcul automatique et lajustement des amplitudes des formants ...........................65
o Calcul automatique des amplitudes des formants ......................................................................66
o Ajustement des amplitudes des formants ...................................................................................66
g) Rgle pour lajustement des frquences du premier et du deuxime formant ...............................67

D. Le programme CHANT aujourdhui : utilisation travers Diphone Studio et


Max/MSP ................................................................................................................... 68
a)
b)

CHANT dans Diphone Studio ........................................................................................................68


Chant dans Max/MSP.....................................................................................................................69

III. Implmentation possible et utilisation du programme CHANT dans


OpenMusic : la bibliothque chant-lib................................................................... 72
A. Le programme OpenMusic et la synthse par Fonctions dOndes
Formantique ............................................................................................................. 74
a)
o
o
o
b)

Fonctionnement et architecture de OpenMusic ..............................................................................74


Le Common LISP la base de larchitecture dOpenMusic .....................................................74
lments fondamentaux dOpenMusic .......................................................................................75
Bibliothques, packages, fonctions et classes ............................................................................77
Premires tentatives dimplmentation de CHANT dans OpenMusic : la bibliothque omChroma
78

B. Implmentation possible de CHANT dans OpenMusic : la bibliothque


chant-lib.................................................................................................................... 80
a)
b)

Description gnrale de la bibliothque chant-lib ..........................................................................80


La bibliothque om2csound : modle de dpart dans la ralisation du systme ............................82
o Prsentation du matriel dorigine .............................................................................................82
o Fonction pour la conversion de listes de paramtres en partition CSOUND : exec-csound .....84
c) La fonction chant ............................................................................................................................85
o Entres pour lonset, la dure et la frquence f0 .........................................................................85
o Entres pour les paramtres de lenveloppe, du vibrato et des listes damplitudes des formants
86
o Entres pour les listes de frquences et de largeurs de bandes de formants..............................87
d) Description gnrale lorchestre CSOUND chant.orc ..............................................................88
e) Modulations de la frquence de la fondamentale ...........................................................................91
o La fonction jitter..........................................................................................................................91
o La fonction vibra .........................................................................................................................92
o La fonction envelope-vib .............................................................................................................92
f) Contrle de lenveloppe damplitude des notes et des phrases musicales et de linterpolation
linaire dune note une autre ...............................................................................................................94
o La fonction envelope ...................................................................................................................94
o La fonction envelope2 .................................................................................................................95
g) Les fonctions ffreq, ampf et bdwth : cration de listes de paramtres pour les formants ...............96
h) Les rgles auto-bw, auto-amp et auto-bend de la bibliothque chant-lib ......................................98

192
o La fonction auto-bw et le calcul automatique de la largeur de bande des formants..................98
o La fonction auto-amp et le calcul automatique de lamplitude des formants.............................98
o La rgle auto-bend et lajustement automatique de la frquence du premier et du deuxime
formant...............................................................................................................................................99
i) Le cas particulier de la fonction amp-cor pour lajustement de lamplitude des formants en
fonction de leffort vocal........................................................................................................................99
j) La fonction ampmid2db et la conversion des amplitudes Midi en dcibels..................................101
k) Les autres fonctions de chant-lib..................................................................................................106
o La fonction kill-last ...................................................................................................................106
o La fonction onset-calc ...............................................................................................................106
o La fonction voy-calc..................................................................................................................107
l) Interfaage des objets de la bibliothque chant-lib avec la classe chord-seq ...............................107

C. Test des performances de chant-lib pour OpenMusic travers lexemple


de Lair de la reine de la nuit de La flte enchante de Mozart ...................... 109
a)
b)

Analyse du fichier audio original .................................................................................................109


Synthse de Lair de la reine de la nuit laide dOpenMusic....................................................112

Conclusion ............................................................................................................. 116


Annexes.................................................................................................................. 120
Bibliographie.......................................................................................................... 179
Monographies Articles ......................................................................................................................180
Sites Internet.........................................................................................................................................183
Enregistrements....................................................................................................................................185
Vidos...................................................................................................................................................185
Partitions ..............................................................................................................................................185
Rencontres............................................................................................................................................185

Index des diffrents fichiers du CD-ROM............................................................ 186


Index ....................................................................................................................... 188

Вам также может понравиться