Un langage de programmation pour composer l’interaction musicale
La gestion du temps et des événements dans Antescofo.
Cette page présente un aperçu des sujets abordés et des applications réalisées au cours de mon doctorat dans l'équipe-projet Mutant (UMR STMS 9912 - CNRS - INRIA - UPMC) à l'Ircam sous la direction de Jean-Louis Giavitto et Arshia Cont.
Ce travail de thèse se concentre autour du langage et du système temps réel Antescofo permettant d'élaborer au moment de la composition un scénario temporel décrivant l'interaction en temps réel du musicien et de l'électronique, et de le réaliser lors du concert. Pour cela, j'ai développé un langage dédié en affinant des notions présentes dans les langages temps réel tels que les langages synchrones et les systèmes temporisés. Ce langage permet de se référer aux différents temps qui interviennent dans la musique interactive : la pulsation, le temps du musicien, le temps physique et les tempos dynamiques. Le système a été validé aussi bien par la création de nouvelles pièces que par la re-création de pièces existantes par des compositeurs tels que Marco Stroppa, Philippe Manoury, Julia Blondeau, Christopher Trapani, José Miguel Fernandez, etc.
Le contexte musical
Musique mixte
Ma recherche s'inscrit dans le contexte de la musique mixte et interactive, définie comme l'association d'un ou plusieurs musiciens et de l'ordinateur, mêlant électronique et instruments acoustiques. Depuis le milieu du XXème siècle, les compositeurs ont incorporé des sons électroniques et des effets dans leurs créations, et le rôle des processus électroniques a considérablement augmenté grâce aux progrès technologiques. De nos jours, l'électronique d'une pièce mixte est composée de programmes s'exécutant en temps réel et en parallèle, dont les calculs vont du traitement du signal (transformation, spatialisation sonore) au contrôle (lancement d'un processus, changement de paramètres) en passant par la synthèse sonore par modèle physique.
Temps élastique de l'interprétation
En lisant une partition, un musicien est capable de comprendre l'organisation d'objets musicaux tels que les notes, les accords, les phrases et autres structures temporelles décrites par le compositeur. Certaines caractéristiques de ces objets telles que les dates de réalisation, les durées, les stratégies de synchronisation ou les nuances ne sont pas totalement déterminées ; cette indétermination laisse le champ libre à l’interprétation. Celle-ci est fortement dynamique et l'évaluation des durées dépend de chaque prestation et des stratégies du musicien, conditions difficilement formalisables. Cependant, lorsque plusieurs musiciens jouent ensemble, le résultat sonore reste cohérent en dépit du non-déterminisme de la partition. Cette cohérence est rendue possible grâce à des propriétés d'écoute active, d'anticipation et de stratégies de synchronisations adaptées.
Synchroniser des processus électroniques avec le jeu du musicien
Le système Antescofo vise à retrouver la puissance symbolique de la notation musicale classique dans le cadre nouveau de la musique mixte où il est nécessaire à la fois de définir les parties électroniques et d’exprimer les interactions complexes entre les musiciens et ces processus lors du concert. Dès sa création Antescofo s’appuie sur le couplage fort entre une machine d’écoute artificielle et un langage de coordination temps réel.
Qu'est-ce qu'une partition Antescofo ?
Une partition Antescofo correspond à la description de la partie instrumentale augmentée des actions électroniques à réaliser lors de la prestation musicale. Cette description est donnée en entrée de la machine d'écoute et du module réactif. Pendant le concert, le module réactif réagit aux données de la machine d'écoute (position courante du musicien dans la partition + estimation du tempo) et de l'environnement extérieur pour exécuter des actions d'accompagnement.
Un des principaux atouts d'Antescofo réside dans le fait qu'un compositeur peut exprimer la temporalité des événements et des actions relativement au tempo du musicien ou à des tempos calculés. Au sein d'une partition, le compositeur peut ainsi décider de déclencher des actions au moment de la détection d'un événement musical, après un certain délai évalué à la volée, exprimé en pulsations ou en secondes.
Il peut également grouper des actions de façon hiérarchique, les lancer en parallèle, les itérer, les déclencher sur des conditions arbitraires et plus généralement, définir des comportements temporels complexes.
Des temps multiples
Dans Antescofo le temps est une valeur de première classe. Les constructions introduites dans le langage permettent aux utilisateurs de manipuler des séquences, des boucles, des comportements de type événements/réactions, etc. qui se déroulent, se créent ou se stoppent au cours de l'exécution. Un délai est une expression et peut être spécifié en pulsations (par rapport à un tempo) ou en temps physique (en secondes ou millisecondes). Pour interpréter ces durées Antescofo s'appuie sur deux référentiels distincts que sont le temps physique et le temps relatif. Le référentiel associé au temps relatif est défini à partir d'un tempo. Le tempo, exprimé en nombre de pulsations par minute, spécifie le « passage du temps » dans le référentiel associé au temps physique. Dans Antescofo les compositeurs peuvent introduire leur propres référentiels en spécifiant un tempo. Ce tempo est une expression arbitraire réévaluée chaque fois que nécessaire pour ajuster la manière dont on « compte » le temps dynamiquement.
Comment s'adapter aux variations imprévisibles de l'environnement musical ?
Stratégies de synchronisation
Les musiciens combinent différentes techniques pour se synchroniser : un tempo partagé, une écoute active et des informations visuelles (gestes, regards). On retrouve dans Antescofo une modélisation des deux premières techniques mais pas de la troisième. En contrepartie, le système possède un temps de réaction bien meilleur que celui du musicien, pouvant être considéré comme nul d'un point de vue perceptif. Cependant il ne suffit pas seulement de réagir rapidement pour bien se synchroniser, il faut aussi anticiper les évènements, et la bonne manière d'anticiper dépend du contexte musical.
Le langage permet d'expliciter précisément comment une séquence d'actions se synchronise en temps réel avec les événements du musicien. Le langage d'Antescofo permet d’expliciter précisément comment une séquence d’actions se synchronise en temps réel avec les événements du musicien.
Nous sommes convaincus que pour bien coordonner les actions électroniques au jeu d'un musicien, il ne suffit pas d'implanter « le » bon modèle de tempo ou « la » bonne stratégie de synchronisation. La stratégie de synchronisation dépend du contexte musical et c'est donc au compositeur de décider comment les phrases électroniques seront associées aux évènements détectés.
Plusieurs séances de travail ont été organisées à l'\emph{Ircam} avec le pianiste Florent Boffard et le compositeur Marco Stroppa afin d'étudier en pratique la coordination dans Antescofo des actions électroniques avec le jeu d'un musicien. L'objectif de ces séances était multiple : évaluer les mécanismes du langage pour la gestion du temps (stratégies de synchronisation, calculs du tempo, etc.) ; trouver les structures de contrôle du langage les plus adaptées pour chacun des objets contrôlés, afin de réaliser un accompagnement à la fois musical et avec un rendu sonore d'une qualité optimale ; recueillir les impressions d'un pianiste de renommée mondiale sur la synchronisation de processus électroniques par \Antescofo ; permettre au compositeur de mieux comprendre les possibilités offertes par le langage afin de les utiliser au mieux dans ses compositions ; déterminer les limites du système et évaluer de nouvelles pistes de recherche. La vidéo suivante montre un des tests effectués lors de ces séances dans le but d'évaluer la musicalité (temporelle) du système dans un cadre extrêmement expressif.
Concerto pour la main gauche en ré majeur de Maurice Ravel
piano : Jacques Comby
orchestre : Orchestre de Paris
Portes Ouvertes à l'Ircam, 2014.
Gestion des erreurs
Dans un contexte de concert, de manière analogue aux systèmes cyber-physiques, il faut gérer les variations de l'environnement par rapport au scénario attendu. Différents cas d’erreur peuvent être rencontrés : la machine d'écoute peut ne pas détecter un événement, confondre un événement avec un autre ou passer trop vite à l'événement suivant. Il faut également considérer les éventuelles erreurs du musicien. Dans tous les cas, on souhaite non seulement que le système continue à fonctionner, mais aussi qu’il réagisse le plus musicalement possible. La machine d'écoute est robuste à beaucoup d'erreurs du musicien, elle peut par exemple suivre correctement la partition malgré certaines fausses notes. La machine réactive ne reçoit de la machine d'écoute que des notifications des événements reconnus et ne détecte donc une erreur que lorsqu'on lui signale la reconnaissance d'un événement positionné après l'événement attendu dans la partition. C'est au compositeur de définir le comportement des actions qui dépendent d'un événement raté.
Succession, durée, simultanéité
La spécification de partition augmentée soulève des problématiques spécifiques à la musique (tempos, erreurs, synchronisations) et nécessite l'introduction de constructions dynamiques adaptées. Les langages temps réel généralistes sont généralement destinés à des applications critiques avec des contraintes temporelles dures. Ils ont recours à des modèles formels pour garantir que ces contraintes pourront être respectées et permettre la mise en place d'outils de vérification. Bien que les propriétés dynamiques du langage d'Antescofo ne permettent pas d'offrir les mêmes garanties, la conception du langage et le moteur d'exécution sont fortement inspirés de la communauté temps réel et embarqué.
instant logique
Un instant logique correspond à un laps de temps considéré comme nul, pendant lequel des actions s'exécutent sans interruptions. Pendant l'exécution, toute action du système est associée à un instant logique auquel on a attribué une date. Cette notion a été introduite dans le moteur d'exécution pour structurer l'exécution du programme Antescofo dans le temps, assurer l'abstraction synchrone et réduire les approximations temporelles. Trois événements peuvent déclencher un nouvel instant logique : la reconnaissance d'un événement musical par la machine d'écoute, l'affectation d'une variable depuis l'environnement extérieur et l'expiration d'un délai. Dans un même instant logique, les actions synchrones sont exécutées séquentiellement en respectant l'ordre d'écriture de la partition et les contraintes causales. Dans Antescofo, la mise en parallèle n'est donc pas commutative. Cette non-commutativité est une propriété similaire à celle que l'on retrouve dans les langages de programmations synchrones et assure le déterminisme des calculs.
Au-delà des langages synchrones réactifs, Antescofo offre une notion primitive de durée qui permet de spécifier l'écoulement du temps dans différents repères. La possibilité de créer ses propres cadres temporels offre aux compositeurs de nouvelles possibilités pour articuler les processus musicaux à différentes échelles.
Applications
Ces exemples montrent plusieurs applications issues de différents contextes musicaux qui ont amené de nouveaux défis et ont permis d'appliquer, de valider et de faire avancer le travail de cette thèse. Ils correspondent à des collaborations de longue durée que j'ai développées avec des compositeurs et des musiciens.
Accompagnement automatique
Ce projet en collaboration avec l'Orchestre de Paris, a pour objectif d'étudier la synchronisation musicale en temps réel d'un fichier audio correspondant à la partie de l'orchestre, avec le jeu d'un pianiste. L'estimation de la position et du tempo du musicien sont utilisés pour adapter la vitesse de lecture du fichier audio. Les stratégies de synchronisation choisies permettent une lecture fluide et sans discontinuité.
Concerto pour la main gauche en ré majeur de Maurice Ravel
piano : Jacques Comby
orchestre : Orchestre de Paris
Portes Ouvertes à l'Ircam, 2014.
Karaoké interactif
À l'occasion des journées Portes Ouvertes de l'Ircam, une application de karaoké interactif a été développée. Le tempo et la position de l'accompagnement s'adaptent à la performance du chanteur (tempo + position estimés) en fonction des différentes stratégies de synchronisation mises en place.
Antescofo : Karaoke interactif par Ircam-CGP
Portes Ouvertes à l'Ircam, 2015.
Canons rythmiques
Cet exemple est tiré d'un travail en collaboration avec le compositeur Christopher Trapani visant à réaliser des canons de tempos tels que ceux énoncés par le compositeur Colon Nancarrow mais en temps réel. Pendant l'interprétation du musicien, une polyphonie est construite à partir d'une combinaison du son du musicien et de phrases antérieures enregistrées au cours de cette même interprétation, sous la forme de canons joués à des vitesses différentes. L'entrée et la fin des canons sont spécifiées à des instants bien précis de la partition.
Nous détaillons ici une des combinaisons possibles où la phrase du canon qui est la même que celle du musicien, est introduite avec un retard spécifié par le compositeur, et joué plus vite de façon à rattraper le musicien sur la fin de la phrase. Pour réaliser cela, le jeu du musicien est enregistré dans un buffer et un vocodeur de phase permet de modifier la vitesse de lecture du buffer audio sans altérer la qualité de l'enregistrement. Une fois la lecture commencée, la vitesse est ajustée dès qu'une nouvelle information de position ou de tempo du musicien est mise à jour pour assurer la synchronisation finale. Ce comportement dynamique offre une grande liberté interprétative au musicien tout en garantissant un résultat musical précis et sans discontinuité dans la lecture du buffer.
esquisse de Christopher Trapani
clarinette : Jérôme Comte
Ircam, 2013
Création de Musique Mixte
Cette pièce pour alto, orchestre et électronique de Julia Blondeau utilise Antescofo pour contrôler la temporalité de l'ensemble des processus électroniques en fonction du jeu de l'altiste. Les constructions du langage ont facilité l'organisation et donc la composition de cette pièce et a permis de mieux prendre en compte les notions interprétatives dans l'exécution de l'électronique.
pièce pour alto, ensemble et électronique temps-réel
composition : Julia Blondeau
alto : Christophe Desjardins
direction : Fabrice Pierre
Atelier XX-21 - CNSMD de Lyon
Musique électronique/Improvisation
Le groupe Odei a créé un style musical propre fondé sur l’utilisation de techniques d’improvisation jazz dans un contexte de musique électronique. Développant cette pratique musicale singulière, l'utilisation du logiciel Antescofo permet d'augmenter les interactions en concert entre musiciens et machines.
Antescofo est utilisé ici pour coordonner les séquences instrumentales et électroniques en temps réel. L'objectif de Odei est d'introduire dans la musique électronique les pratiques d'échanges et d'écoute de la musique improvisée. Cette approche originale permet d’échapper aux contraintes habituelles des formations qui combinent électronique et instruments acoustiques.
extrait du concert d'Odei aux Nuits Sonores, diffusion Arte
batterie : Arnaud Biscay
vibraphone : Maxime Hoarau
synthétiseurs et effets : Manu Matthys
RIM : José Echeveste
Lyon, 2014
La partition a ensuite été augmentée pour générer de la vidéo en synchronie avec l'électronique improvisée.