Dystopia, les mélodies interdites

Film d'animation interactif, expérience de génération musicale

Par Benjamin Gibeaux, auteur de films d'animations, musicien et développeur

« Une douzaine de motifs seulement, qui se répètent tous les jours, matin et soir : des marches et des chansons populaires chères aux coeurs allemands. Elles sont gravées dans notre esprit et seront bien la dernière chose du lager que nous oublierons ; car elles sont la voix du lager, l’expression sensible de sa folie géométrique, de la détermination avec laquelle des hommes entreprirent de nous anéantir, de nous détruire en tant qu’homme avant de nous faire mourir lentement.

Quand cette musique éclate, nous savons que nos camarades, dehors dans le brouillard, se mettent en marche comme des automates ; leurs âmes sont mortes, et c’est la musique qui les pousse en avant comme le vent les feuilles sèches, et leur tient lieu de volonté. Car, ils n’ont plus de volonté : chaque pulsation est un pas, une contraction automatique de leurs muscles inertes. »

Primo Levi – Si c'est un homme

Résumé

Dystopia, les mélodies interdites (titre provisoire) est une application en cours de développement. Cette application consistera en un film d’animation interactif, qui fait le pari de marier des éléments propres au film d’animation traditionnel (illustration à l’aquarelle, collage, animation image par image, forme narrative classique) à des algorithmes de génération musicale, visuelle et scénaristique.

Dans un régime totalitaire, exerçant son emprise à travers une musique officielle, binaire, répétitive, un individu devient malgré lui l’ennemi public lorsqu’il libère involontairement une mélodie interdite. En l'accompagnant dans sa fuite vous participez vous aussi à l'émergence de sonorités subversives, par vos interactions plus ou moins conscientes, et en produisant des données (position GPS, vitesse de jeu, choix divers...) que le programme analyse et transforme en partition musicale. A mesure que le récit évolue vos actions influencent l'intrigue, la musique et le graphisme. Dystopia, les mélodies interdites ambitionne d’être une expérience interactive inédite où la liberté d’action de l’utilisateur s’insère en même temps dans une narration grand public, un conte universel sur la musique et la liberté.

Le projet est actuellement au terme d'une phase de développement durant laquelle j'ai travaillé l'écriture, le style graphique, l'environnement sonore, parallèlement à la conduite de plusieurs expérimentations techniques. J'ai synthétisé ces recherches dans une courte démo qui donne un aperçu des différentes réflexions menées, aussi bien sur le plan artistique que logique et technique. En voici un condensé.

Dans ce récit, décrivant l'émancipation chaotique d'un esprit libre au sein d'un carcan totalitaire, mon parti pris global consiste assez naturellement à mettre en scène cette dualité dans le fond comme dans la forme. Dans le fond, c'est à dire dans le récit lui-même, et dans la forme : l'aspect visuel, sonore, mais aussi et surtout à travers le rapport de chacun à ce récit. Un rapport qui passe par des interactions se voulant libres, détachées de toutes contraintes... jusqu'à un certain point.

Considérations artistiques

Ecriture

Envisager le récit comme un « film d'animation interactif » permet de garder à l'esprit l'importance d'une structure narrative classique, le but étant avant tout de raconter une histoire, tout en laissant la possibilité de multiplier les chemins et laisser à l'utilisateur le soin de déterminer son propre rythme de progression. Pas tout à fait un jeu, ni tout à fait un film, l'expérience consistera en une série de déambulations plus ou moins guidées, ponctuées de défis, d'énigmes à résoudre.

La liberté d'action résidera dans la possibilité de choisir l'ordre dans lequel parcourir certaines étapes, voire sauter des étapes ou revenir sur d'autres, choisir un style musical à développer plutôt qu'un autre, choisir de prendre son temps, se dépêcher... A ces choix de l'utilisateur s'ajouteront des événements, péripéties aléatoirement provoquées par le programme, afin de rendre l'expérience à chaque fois unique. L'ensemble toujours au service du récit.

Mais pour conserver une certaine tension, ainsi qu'une cohérence dans l'histoire, ces parts de liberté laisseront régulièrement place à des passages plus contraints, des jalons structurants durant lesquelles le récit reprendra la main et guidera l'utilisateur vers une nouvelle étape.

Il s'agit donc de trouver le meilleur compromis entre liberté et cadre narratif prédéfini, dans le but d'offrir une expérience originale, mais pas au prix d'incohérences ou d'errements scénaristiques.

schéma narratif

Concept du schéma narratif

Univers sonore

Le même questionnement s'impose concernant l'environnement sonore, et particulièrement musical. La musique est au coeur du récit, à la fois comme outil d'oppression, à travers une monstrueuse machine qui répand la musique officielle du régime dans les moindres recoins du pays, mais aussi comme outil d'émancipation, grâce aux nombreuses sonorités interdites qui émergent de diverses interactions au fil de la progression. Il est donc primordial de mettre en valeur cette dualité dans la façon de jouer la musique, en permettant notamment à l'utilisateur et au programme « d'improviser » des séquences musicales en direct, en opposition aux partitions figées et tyranniques de l'oppresseur.

Mais ce parti pris se heurte à une réalité : la musique doit se conformer à un certain nombre de règles, notamment rythmiques et harmoniques, surtout de notre point de vue occidental. Et si certains styles, certaines musiques traditionnelles, certaines musiques expérimentales poussées à l'extrême s'affranchissent de ces règles, on y distingue pourtant des motifs, des articulations, un équilibre entre sons et silences. Un savant dosage d'ondes sonores né d'une intention, ce qui nous permet de l'identifier, culturellement, comme de la « musique ».

Dès lors, comment conjuguer les règles de base qui confèreront à la musique une certaine harmonie, au principe même de liberté, laquelle, si elle était totale, entraînerait des résultats totalement aléatoires et peu concluants ? Prenons par exemple la question du rythme. Comment allier des interactions, par nature imprévisibles car pouvant survenir à n'importe quel instant, à la notion même de mesure, qui est une segmentation incompressible et inextensible du temps, elle-même découpée en subdivisions précises ? Comment associer une action survenant en dehors de toute considération rythmique, comme la pression d'un bouton, à une réaction immédiate, comme un changement d'accord, sans perturber la structure musicale du morceau ? Si l'accord change, mettons, entre le second et le troisième temps de la mesure, l'effet risque d'être malvenu.

Bien sûr, si le rythme est volontairement anarchique, ou que l'effet recherché est ce côté aléatoire, la question ne se pose pas : le son peut suivre immédiatement l'action de l'utilisateur. Mais pour le cas inverse, j'ai essayé de développer quelques solutions. Il est par exemple possible de temporiser la réponse musicale à une action en intercalant un autre type de réponse entre l'action et le changement dans l'harmonie. Dans la démo de Dystopia, par exemple, la toute dernière interaction provoque un mouvement de caméra qui aboutit sur l'apparition de la Lune synchronisée au lancement d'une séquence musicale, ce qui coïncide très exactement avec la fin de la mesure en cours. Ceci est toujours vrai, quel que soit l'instant où l'utilisateur a placé le dernier engrenage. C'est parce que la durée du mouvement de caméra qui fait le lien entre votre action et le début de la musique est ajustée en temps réel selon la durée restante dans la mesure. Dans ce cas, puisqu'il n'est pas possible de contrôler le timing de l'action de l'utilisateur, le programme ajuste la durée de la réaction.

Les mêmes questions se posent pour l'harmonie. Comment des accords ou une mélodie censés naître des actions imprévisibles de l'utilisateur pourraient sonner de manière cohérente alors que l'harmonie émane non seulement des notes qui composent les accords, mais aussi de la succession des accords eux-mêmes ? Plusieurs approches sont possible : par exemple laisser la possibilité à l'utilisateur de composer lui-même l'harmonie, comme c'est le cas, toujours dans cette démo, lorsqu'il faut faire glisser les lucioles sur différents sections des lignes électriques. Dans cet exemple, le fait de ne pouvoir changer qu'une seule note à la fois, entraînant donc une variation minime d'un accord à l'autre, ainsi que l'écart entre les notes « disponibles » qui limite les accords possibles, permet d'obtenir à coup sûr un enchaînement intéressant qui procure même une certaine émotion. On le constate : la liberté de l'apprenti musicien est toute relative ici. Bien que variées, les combinaisons sont contraintes par un cadre prédéfini.

La solution idéale résiderait dans la capacité du programme à réellement générer de la musique, c'est à dire à faire un « vrai » travail de composition, comme le font déjà plusieurs programmes expérimentaux basés sur le machine learning ou le deep learning, en d'autres termes : l'intelligence artificielle. Mais cette solution, qui monopolise des laboratoires de recherche et donne des résultats assez aléatoires, semble assez hors de portée et pas forcément pertinente sur un projet tel que celui-ci. Bien sûr, il est possible à coup de « if » et de « else » de simuler assez simplement un programme similaire, après tout il suffit de générer une phrase musicale selon un algorithme prenant en compte un écart type entre les notes de la gamme, qui détermine une succession de degrés pour générer une suite d'accords (do – la – fa – sol...), et le tour est joué.

Mais cette solution a bien évidemment ses limites : soit l'algorithme ne prend aucun risque, par exemple en générant 4 accords parfaits sur une suite de degrés connue, auquel cas le résultat est sans intérêt car très scolaire, soit le programme génère des notes aléatoirement, sans se soucier du rapport entre les notes et les accords, ce qui revient à appuyer au hasard sur les touches du piano en espérant que le résultat soit beau. Bien sûr, cette dernière solution présente un véritable intérêt si le but recherché est un sentiment de malaise, mais c'est loin d'être toujours le cas !...

Ici, j'ai programmé un algorithme qui génère une suite d'accords selon quelques règles simples. Amusez-vous à faire varier le degré de liberté, et passer du mode mineur au mode majeur.

Une fois de plus, la solution vient du compromis entre écriture préalable et liberté plus ou moins maîtrisée. L'exemple suivant se base sur une série d'accords que j'ai moi-même définis, avec plusieurs degrés de « liberté » qui permettent au programme de s'éloigner de la partition, ce qui donne des résultats un peu plus pertinents.

Là, le programme tire au sort une série d'accords prédéfinis et les module selon les paramètres choisis.
Le résultat est un peu plus varié.

Ici le piano s'ajoute aux cordes, et joue en plus une mélodie, générée en fonction des accords.
Vous pouvez aussi jouer sur la nuance, et même tenter une série de Crescendo / Decrescendo.
On est encore loin de quelque chose d'exploitable, mais le résultat présente un certain intérêt.

Au final, je pense que la solution consiste à mêler tous ces principes, selon le résultat recherché, en alternant notamment passages « libres » et passages plus « écrits », voire même totalement écrits. C'est le cas dans la démo, où l'on démarre par une phase d'expérimentation très libre, jusqu'à s'arrêter sur un accord précis, qui va lui-même aboutir à une séquence musicale entièrement pré-écrite à la fin de l'expérience.

  • Univers visuel
  • L'univers graphique est lui aussi un reflet du récit, par une opposition constante d'ombres et de lumières, mais aussi d'objets vectoriels, rigides, géométriques, face à des effets de matière plus authentiques et désordonnés.

    Le principe reposera sur un univers de base, prédéfini, lequel est amené à évoluer tout au long du récit selon les choix et actions de l'utilisateur. Les couleurs changeront selon le caractère du récit et de la musique qui l'accompagne. La disposition des éléments, leur nombre, leur forme, sont autant de paramètres à ajuster en fonction de la progression de l'histoire.

    Mais, tout comme pour les accords musicaux, je souhaite m'assurer que les différentes couleurs s'allient harmonieusement. Ainsi, certaines associations de couleurs seront favorisées, de même que des emplacements prédéfinis pour accueillir les différents éléments visuels du récit.

    Je donnerai vie aux personnages et objets selon la technique traditionnelle de l'animation image par image afin d'obtenir un rendu très cinématographique, et éviter les effets de « détachement » des objets dynamiques par rapport à leur environnement, effet souvent provoqué par une absence de coordination entre les mouvements cycliques d'un personnage, par exemple, et le sol sur lequel il se déplace. Néanmoins, une part des mouvements sera bien sûr calculée dynamiquement par le programme, afin de s'adapter aux actions de l'utilisateur. Là aussi, le compromis entre authenticité de l'animation et souplesse du rendu dépendra de la façon dont le programme fera s'articuler entre elles des séquences prédéfinies.

    Toutes les composantes de ce film d'animation interactif reposeront donc sur l'équilibre constant entre cadre prédéfini et liberté plus ou moins maîtrisée. Le but étant avant tout de raconter une histoire. Pas un récit linéaire, contraint et invariable, pas non plus un ovni expérimental au résultat forcément hasardeux, mais un compromis entre les deux, sans cesse réajusté selon le résultat souhaité, pour donner lieu à un récit à la fois immersif et cohérent.

    Considérations techniques

    Architecture du programme

    J'ai essayé de concevoir un programme reproduisant une hiérarchie humaine.

    Les étapes 3 à 6 sont répétées à chaque mesure, cela signifie que la musique est programmée à la fin de chaque mesure pour la mesure suivante uniquement. Pour être tout à fait exact, le compositeur génère plusieurs mesures d'avance dans le souci de construire des phrases complètes, mais vérifie à chaque mesure s'il doit continuer à lire la musique composée ou s'il doit l'interrompre et générer en urgence une nouvelle série, afin de réagir à une action récente, par exemple.

    architecture du programme

    Architecture de la section audio du programme

    Choix de la technologie

    L'ensemble de ces parti pris artistiques et techniques posent la question de savoir quelle technologie employer pour développer un tel programme, capable de composer ET jouer de la musique en temps réel. A ma connaissance, les programmes de génération musicale existants créent des fichiers MIDI qu'il faut ensuite ouvrir dans des logiciels de musique assistée par ordinateur (MAO), afin d'associer à la partition un instrument et des effets. Rien à voir, donc, avec une lecture en temps réel. Bien sûr, la plupart des navigateurs peuvent lire un fichier MIDI, mais utilisent pour cela des instruments synthétiques très artificiels qu'il était hors de question d'exploiter ici. Comme dit plus haut, je souhaitais lire de véritables échantillons sonores, et y appliquer en direct différents effets. C'est à dire transformer le programme en logiciel de MAO.

    Une seconde question est intimement liée à la première, c'est de savoir sur quel support sera distribuée l'expérience : application native (App Store, Play Store) ou site internet accessible dans le navigateur, y compris pour ordinateurs ? La réponse dépend de plusieurs critères, notamment de choix de diffusion et de production qu'il reste encore à éclaircir, mais aussi des réponses à la question initiale sur le choix technologique. Tout est imbriqué.

    Mes premières tentatives m'ont conduit vers la conception d'une application mobile en AS3/AIR avec Adobe Animate. J'ai déjà créé plusieurs applications avec cet outil. Or, même si cette technologie s'accorde très bien avec ma façon de travailler l'univers graphique, notamment l'animation image par image, la gestion du volet audio par AS3 s'est vite révélée désastreuse. Précision aléatoire, effets manquants, très mauvaise gestion des variations de volume, sont autant de freins qui m'ont poussé à m'orienter rapidement vers une autre solution.

    Je me suis alors penché sur la Web Audio API, une technologie embarquée dans les navigateurs web récents, qui offre une précision optimale car synchronisée à l'horloge interne de l'appareil, mais aussi une panoplie d'effets (égaliseur, reverb...) indispensables, et la possibilité de mixer différents sons de manière simple, fluide et intuitive.

    fonctionnement de l'API Web Audio

    Principe de l'API Web Audio : des noeuds connectés qui permettent d'appliquer différents effets

    Néanmoins, de nombreux tests sur plusieurs types d'appareils ont démontré qu'une certaine puissance était nécessaire pour assurer la fluidité de la lecture des sons, notamment un processeur capable de gérer certains effets gourmands en ressources. L'accumulation d'instruments et d'effets ayant pour résultat de provoquer des crépitements, voire des plantages sur les appareils les plus faibles, il m'a fallu ajuster minutieusement le curseur pour trouver le bon dosage de manière à obtenir un résultant à la fois satisfaisant et fonctionnel. La démo de l'application, d'après mes tests, fonctionne sur tous types d'appareil milieu de gamme, ordinateurs comme tablettes et smartphones, donc est accessible au grand public.

    Le fait que cette technologie soit gérée par les navigateurs ouvre donc la possibilité de distribuer l'application sous forme d'une webapp, c'est à dire un site internet. Mais cette orientation pose plusieurs questions nouvelles. Il a fallu, par exemple, trouver la technologie visuellement capable d'afficher mes décors chargés, intégrant des effets complexes, comme des filtres et modes de fusion. J'ai pour cela choisi le composant HTML canvas, un élément qui fonctionne un peu sur le même principe que le regretté lecteur Flash, à ceci près que certaines options sont limitées et les performances moins bonnes d'un navigateur à l'autre, m'obligeant là encore à trouver des solutions pour alléger le décor afin de limiter les ralentissements.

    Une autre contrainte, si le projet se décline finalement sous forme de webapp, est le poids des assets : les nombreuses images et échantillons sonores nécessaires au fonctionnement du programme. Pour une application native, que l'on achète sur l'App Store, l'ensemble des assets est téléchargé une fois pour toutes à l'achat et reste sur l'appareil. Dans le cas d'un site internet, c'est différent. Il faut charger toutes les ressources au moment où l'on souhaite consulter la page, sauf en cas d'hypothétique et aléatoire mise en cache par le navigateur. Une contrainte qui m'a obligé à alléger les ressources, par exemple en réutilisant plusieurs fois le même élément, aussi bien visuel que sonore. Chaque instrument, par exemple, ne compte que deux échantillons par octave (au lieu de 12, pour les 12 demi-tons de notre gamme usuelle). Mon programme se charge de modifier la tonalité de l'échantillon le plus proche de la note désirée, afin d'obtenir cette note artificiellement. De même, j'ai mis au point un chargement asynchrone des assets par la page. C'est à dire que l'exploration commence après le chargement des assets prioritaires, mais que le reste des éléments continue à se charger de manière invisible, pour ne pas retarder l'expérience.

    Malgré ces précautions, il subsiste des problèmes d'incompatibilité, qui ne seront résolus que lors de futures mises à jour des navigateurs concernés. Actuellement, c'est Google Chrome qui permet la consultation la plus fluide de la démo, ainsi que Safari. Firefox est malheureusement à la traîne sur certains paramètres précis. D'autres, comme Internet Explorer, ne gèrent carrément pas la Web Audio API et seulement partiellement le Canvas.

    Enfin, il ne faut pas oublier que la distribution du programme sous forme d'application native reste possible. Ce qui reviendrait à profiter des atouts de AS3/AIR pour l'environnement visuel, comme prévu initialement, et faire dialoguer cette technologie avec la Web Audio API qui, je le rappelle, ne fonctionne que via le navigateur. Un choix consistant à embarquer un navigateur dans l'application, l'ouvrir de manière invisible, et envoyer des commandes via un pont entre les deux technologies. Cette approche a posé plusieurs problèmes d'envergure, notamment dans le choix des outils nécessaires, mais j'ai réussi à faire fonctionner ce principe à la fois sous iOS et Android.

    Conclusion

    Il apparaît donc, au terme de cette première phase de développement, que tout est une histoire de compromis. Compromis logiques, artistiques, et techniques, pour aboutir à un objet satisfaisant à la fois sur le plan esthétique et expérimental.

    Malgré les défis que représente une telle expérience pour un auteur comme moi, ces différentes recherches m'ont aujourd'hui confirmé que ce projet ambitieux est réalisable, à tous points de vue, mais nécessitera encore du temps.

    Les questions qui se posent aujourd'hui sont à la fois financières, stratégiques, elles dépendent en grande partie du positionnement des diffuseurs vis à vis du marché des applications mobiles de ce type. Cette question déterminera notamment le format de l'application : webapp ? Application mobile ? Déclinaison éventuelle sur d'autres formats, dans le cadre d'un projet transmedia ? Toutes les options restent ouvertes.

    Conception graphique, musique, programmation : Benjamin Gibeaux. Production : Gedeon Programmes.

    Avec le soutien du CNC - Fonds Nouveaux Médias
    Ce projet a reçu le soutien de Brouillon d’un rêve de la Scam et du dispositif La Culture avec la Copie Privée