Nous présentons un environnement intégré pour la composition et
la synthèse musicale sur ordinateur. L'architecture que nous
proposons combine dans un seul système la synthèse en
temps-réel, une gestion de la memoire dynamique avec un
ramasse-miettes, le traitement interactif d'événements, et le
dialogue avec l'utilisateur à travers un interprète
Scheme. L'environnement est entièrement
écrit dans le langage de programmation Java et peut être utilisé
dans des applications réparties. Trois aspects du domaine de la
musique sur ordinateur - composition, synthèse et interactivité
- sont intégrés de manière intime dans cet environnement. Les
concepts et les structures décrits dans cette thèse peuvent
être étendus et appliqués plus généralement aux environnements
multimédia.
L'interprète Scheme embarqué offre un environnement interactif de
programmation. La plate-forme Java sous-jacente promeut l'utilisation
transparente des objets fonctionnels dans le système. Ces objets
fonctionnels, que nous appelons programmes, sont utilisés pour
décrire le comportement complexe du système. Les événements,
par exemple, sont composés d'un temps d'évaluation, d'un programme
et des arguments du programme. Au temps indiqué le programme est
appliqué avec ses arguments. Ainsi, l'interprète permet à
l'utilisateur d'exprimer et modifier les actions du système dans un
langage de haut-niveau.
Nous avons nommé l'unité de base de la composition une activité. Elle est est composée d'une position dans le temps,
d'une durée, d'un programme de début et d'un programme de fin. Les
deux programmes décrivent respectivement les actions à prendre
pour commencer et terminer cette activité. L'organisation
d'activités dans le temps est prise en charge par une structure
appelée pattern. Les patterns regroupent un ensemble
d'activités ainsi que les relations temporelles entre elles. Ces
relations sont vérifiées après chaque manipulation de temps et
une réorganisation des positions et des durées des activités
peut en résulter. Cette stratégie se rapproche des techniques de
la propagation de contraintes que l'on trouve dans la construction
des interfaces graphiques. Les motifs permettent d'insérer un
pattern à plusieurs reprises dans une composition. L'organisation
des activités de durée inconnue au moment de la composition peut
être réalisée à l'aide des operateurs d'intervalles basés
sur des relations causales.
Les patterns et les motifs permettent la structuration d'une pièce
de manière hiérarchique. A chaque niveau de cette hiérarchie
nous attachons un axe de temps local. L'axe de temps d'un niveau est
projeté sur l'axe du niveau supérieur moyennant un modèle
de temps. Ces modèles permettent la déformation du temps local.
L'objet unité pour la génération de son est appelé un processus de synthèse. Il est créé en utilisant une stratégie
de méta-classes : une technique de synthèse crée une
nouvelle voix de synthèse, la voix de synthèse crée un
nouveau processus de synthèse. L'information temporelle codée dans
la partition est rendu disposible aux processus de synthèse. Cette
information est regroupée dans un objet appelé contexte de
temps. Il assure, entre autre, la conversion du temps indiqué par
le synthétiseur dans le temps local d'un processus de synthèse.
L'interactivité du système est rendue possible grâce à la
gestion concurrente de la synthèse en temps-réel, du traitement
des événements et de l'entrée de données textuelles dans
l'interprète Scheme. Dans cette thèse nous évaluons si un
environnement dynamique, tel que nous le présentons, intègrant un
ramasse-miettes, peut garantir une exécution en temps-réel
``dur.'' Il est difficile de répondre à cette question seulement
à partir des discussions qu'on trouve dans la littérature. En
revanche, nous introduisons une contrainte imposée sur les processus
de synthèse qui réduit l'interaction entre le ramasse-miettes et
la tâche temps-réel au problème du scheduling de tâches
concurrentes.
La thèse est divisée en deux parties : la première présente
l'état de l'art, la deuxième présente notre travail. La partie
concernant l'état de l'art contient les chapitres suivants :
- Chapitre 1
- discute les techniques de programmation
devenues standard, en particulier les notion de temps-réel
dur et douce, la gestion de la mémoire dynamique, les
ramasse-miettes, et la gestion de multiple tâches.
- Chapitre 2
- donne une brève introduction au domaine
de la musique sur ordinateur. Nous abordons le sujet de la
synthèse sonore et la composition assistée par ordinateur.
- Chapitre 3
- détaille en plus la question de
l'organisation temporelle dans la composition. Nous abordons
le problème de l'organisation des éléments discrets et
l'utilisation des fonctions continues.
La partie concernant le travail effectué contient les chapitres
suivants :
- Chapitre 4
- présente les bases de l'architecture de
l'environnement que nous proposons dans ce travail. En
particulier, nous argumentons le choix des langages, les
concepts de bases tels que les événements, les programmes
et les processus de synthèse. Nous donnons une description
formelle de l'architecture.
- Chapitre 5
- détaille la réalisation de
l'architecture ainsi que les classes de base pour la
synthèse sonore. Nous montrons également comment
l'environnement peut être utilisé dans une application
répartie.
- Chapitre 6
- introduit les structures pour
l'organisation temporelle d'une composition. Nous expliquons
l'utilisation des patterns, motifs, modèles de temps et
contextes de temps.
- Chapitre 7
- analyse le comportement temps réel du
système. En particulier, nous estimons l'influence du
ramasse-miettes sur le comportement de la tâche temps
réel.