lundi 19 mars 2012

Une proposition technique viable pour un iMuse à l'ère du MP3

iMuse(tm) est un concept fabuleux au diapason des merveilles point'n'click de l'âge d'or LucasArts.



Arrivant avec Monkey Island 2, et utilisé dans les point'n'click qui suivront ainsi que X-Wing & Tie Fighter, c'est un mécanisme étonnant de gestion de la musique qui a fait l'objet d'un brevet par Georges Lucas.

iMuse est un pas en avant dans l'interactivité de la musique dans un jeu vidéo.

La musique d'un jeu vidéo est interactive depuis toujours. Par exemple, si Mario tombe dans un trou, une musique d'échec coupe le fond musical. Wing Commander propose, suivant la tournure de votre combat, des thèmes musicaux positifs ou plutôt inquiétants.

Mais iMuse va plus loin dans cette immersion sonore.

Opérationnellement, iMuse a deux effets dans un jeu vidéo :

1) Il permet une transition entre deux thèmes musicaux. Vous êtes dans le tableau 1 et vous allez dans le tableau 2, passant de la musique 1 à la musique 2 à tout moment. Suivant le moment où la musique se coupe une transition particulière est jouée pour que la musique 2 semble une continuité de la musique 1. En fait, nous sommes dans une expérience musicale continue telle que l'offrent les films d'aventure de Georges Lucas.



2) Plus intéressant encore, iMuse permet, en temps réel et en interaction avec les actions du joueur, de rajouter des couches d'instrument à la musique en cours. Dans Monkey Island 2, par exemple, lorsque vous avancez dans les marais pour rencontrer Lady Vaudou, au fil de vos pas vers la droite des instruments se rajoutent, d'abord les percussions, ensuite les instruments à vent, pour faire enfin la mélodie complète.



L'immersion sonore est fabuleuse : elle participe complètement à la narration. On s'enfonce dans les marais et la musique nous enveloppe. iMuse est à la musique ce que l'animation est au décor.

Dans Indiana Jones and the Fate of Atlantis, suivant les thèmes que vous abordez dans une conversation, des couches d'instruments se rajoutent, donnant une connotation ésotérique, comique ou aventureuse aux dialogues. C'est quasiment subliminal, mais proche du génie.

iMuse a été développé par un musicien, Michael Land, et cela semble assez évident dans son propos subliminal de perfection (une musique avec des transitions parfaites) que dans son exécution technique, qui nécessite beaucoup de travail musical au final. Michael Land a été si investi dans le projet iMuse qu'il a fallu à LucasFilm embaucher un autre musicien pour l'épauler dans la demande de composition !

iMuse est un séquenceur Midi classique programmable, et interfacé avec le GUI SCUMM des jeux Lucas de l'époque.

Mais iMuse n'est plus soutenable - ou presque - avec les techniques modernes de son des jeux vidéo.

Il est concevable, avec l'assistance d'un bon musicien, de pouvoir faire le même système avec des musiques trackées (s3m, umx, it) que nous avions jusqu'au début des années 2000 avec Unreal Tournament. On pourrait même enfoncer le clou en imaginant un arrangeur de musiques mp3 (comme l'est Garage Band par exemple) qui organise les partitions à la volée.

Cependant cette hypothèse technique, jamais utilisée dans les faits, se heurte à plusieurs problèmes : la ressource que prendrait alors cette "compilation en temps réel" de la musique, la capacité à la livrer en même temps que le feu de l'action (en plus des milliards de polygones, des effets sonores...etc...), l’intérêt que les Game Designers portent à ce type d'effort...



Mais surtout aujourd'hui la musique des blockbusters est produite à l'ancienne : Depuis Outcast (Infogrames), on écrit des partitions, on réunit des vrais orchestres symphoniques d'Europe de l'Est, on fait des prises de sons mixées au millipoil par des ingénieurs sons, on filme le tout pour mettre dans le documentaire du making of...on est loin des hackers-musiciens de génie des 80's tels que Jochen Hippel.


Délaissé par le monde du JV, Jochen fait
a présent de la logistique.


Mais c'est oublier que le jeu vidéo tire sa substance de l'interactivité, et que ce système de musique est tout sauf interactif.

On peut en temps réel appliquer des filtres aux MP3 joués dans le jeu : écho, filtre "sous l'eau", distorsion...etc...de façon à renforcer une ambiance.

Mais recréer l'ambition iMuse, comment faire ?

Je propose ici deux algorithmes fonctionnels et mis en oeuvre sous AGS.

Je propose également des explorations musicales qui j'espère vous enthousiasmeront.

Concernant le point 1) évoqué ci-dessus, c'est avant tout un problème de compétence musicale.

Il faut recréer artificiellement le séquençage midi et l'appliquer à un MP3.

- Admettons que nous ayons une musique cyclique de 5 minutes.
- On la "redécoupe" artificiellement en séquences, par exemple 60 séquences de 5 secondes.
- On distingue plusieurs typologies de séquences (certaines, forcément, se ressemblent, je n'ai jamais encore écouté du free jazz dans un jeu vidéo...et les musiques de jeux vidéo sont précisément cycliques).
- On développe une séquence de transition, qui est une musique en soit, pour CHACUNE de ces séquences.
- Lorsque l'on sort du tableau, on poursuit la musique actuelle jusqu'à la fin de la séquence de 5 seconde en cours, puis on joue la musique de transition.

Cela implique :

- de la latence (jusqu'à 4,5 secondes + temps de la musique de transition) entre les tableaux, mais c'est déjà le cas dans les Lucas
- beaucoup de travail musical...iMuse est avant tout un labeur de musicien !

Mais c'est surtout le point 2) qui nous intéresse et sur lequel je me suis appliqué car il ouvre la voie une manipulation simple (industrielle...) d'éléments pour donner une véritable substance à la narration musicale.

Imaginons que nous voulions recréer la séquence de Monkey Island 2 du "marais", dans un contexte moderne, avec des fichiers MP3 compilés joués par l'orchestre de Bucarest.

L'astuce consiste à avoir 4 (ou 8, plusieurs quoi) fichiers MP3 : chacun d'entre eux est identique mais représente des couches d'instruments croissants (et pas séparés comme dans un mixage).

On pourrait imaginer un algorithme d'interactivité qui aurait cette tête :

- on lance la musique 1 (le mp3 avec seulement 25% d'instruments).
- on lance en même temps un compteur de temps T
- lorsqu'on arrive à un endroit d'interaction musicale, on repère où on en est de la musique (X = reste de la division de T par temps de la musique).
- on arrête la musique 1 et on lance la musique 2 au temps X

...et ainsi de suite.

Dans les faits cet algorithme ne marche pas très bien ; il est assez ardu à mettre en place avec les transitions musicales du point 1 et l'arrêt et le démarrage du mp3 à une certaine avancée a une latence qui induit parfois un blanc musical très disgracieux.

Un algorithme très grossier - je suis un piètre programmeur - mais l'important "c'est que cela marche", est le suivant :

- au début du tableau, on lance toutes les variations du mp3 en même temps, à 0% de volume sauf pour le mp3 de la musique 1 que l'on met à 100%. Ainsi, on est certain de leur synchronisation.
- lorsqu'on arrive à un noeud d'interactivité, on place la musique idoine à 100% et les autres à 0%

Je vous joins ci dessous un lien de téléchargement vers un prototype AGS qui met en place ce système (ne fonctionne que sur PC). Comme vous le voyez, la transition est parfaitement fluide :

http://www.fibretigre.com/divers/fibremuse1.zip


Une démo qui vous fait rêver

A présent poussons un peu le concept. 

Cette synchronisation musicale permet d'aller au delà d'iMuse car nous jouons avec des musiques finalisées.

On pourrait en fait, en respectant le rythme et la durée, mettre n'importe quel type de musique.

Nous pouvons ainsi jouer avec la texture et la substance des fichiers musicaux, repousser les limites ! 

Imaginons un fichier MIDI simple qui, au détour d'une interaction, "prenne vie" dans une interprétation MP3 comme lorsque le Magicien d'Oz passe du noir et blanc à la couleur !

Imaginons jouer avec toutes les interprétations possibles de la musique !

Voici un fichier AGS toujours test qui reprend une synchronisation (imparfaite, certes) d'un fichier MIDI, d'un MP3 compilé d'une musique trackée émulant le Moog, et de l'orchestration symphonique de Mars de Gustav Holst :

http://www.fibretigre.com/divers/fibremuse2.zip

La technique n'est rien ! Nous sommes bridés par notre imagination ! Alors : à vous de jouer !

Merci à Christophe Le Gall et Thibault Chevalier pour leur assistance musicale. 

5 commentaires:

  1. est ce que la technique de lancer tous les mp3 en même temps et de régler le volume ne pose pas un problème de charge? Je suis pas sûr que cela soit optimal au niveau algorithmique. Est ce qu'on pourrait pas lancer la musique au temps X - le temps de lag de démarrage (si celui ci est une constante)?

    RépondreSupprimer
  2. "L'astuce consiste à avoir 4 (ou 8, plusieurs quoi) fichiers MP3 : chacun d'entre eux est identique mais représente des couches d'instruments croissants (et pas séparés comme dans un mixage)."

    Bonjour,
    si on lance toutes les musiques en même temps, comme dans votre dernier exemple, pourquoi ne pas séparer tout de même la musique, un instrument par piste / par mp3, et augmenter le volume de chaque piste au moment voulu ?

    Article passionnant, au demeurant, la musique dans les jeux reste un sujet peu abordé d'un point de vue analytique. (mon compagnon, qui regarde par-dessus mon épaule, saute partout en criant "ouééé Monkey Island !" ; il aime vos exemples)

    RépondreSupprimer
  3. Réponse à vos questions (désolé pour le lag, Grandlap) :

    Grandlap : ta solution est évoquée dans l'article, mais dans les faits, ca ne marche pas hyper bien. Avec la solution logicielle que j'ai à disposition, le "temps de chargement" de la musique faisait de mauvais raccords. Ceci étant c'est certainement viable avec un logiciel mieux tuné.

    Akaiken :

    On pourrait théoriquement séparer les instruments et les remixer à la volée. C'est ce que faisait Imuse...avec des sons midis et ce qu'on pourrait faire avec des musiques au format S3M telles qu'on en a dans Unreal.

    Cependant cela pose deux problèmes (évoqués dans l'article).

    D'une part on a une grande perte de qualité car par exemple dans la musique de Skyrim entre l'instrument et le mp3 final il y a le travail d'un ingénieur son qui tune bien les musiques pour les "figer parfaitement", et d'autre part, ce système de mixage requiert beaucoup de puissance machine.

    Monkey Island = best adventure game ever

    RépondreSupprimer
  4. Comme quoi, on avait tous mal lu votre article. Je comprends tout à fait les problèmes que cela pose.

    (Best adventure game ever, j'agrée totalement ; les duels à l'insulte me font penser - avec raison je pense - aux duels de "bel esprit" du XVII/XVIIIème siècle... Ah, "Ridicule", "De cape et de crocs"... Miam. Et puis, graphiquement, ça poutrait vraiment ! Et c'est toujours très beau.)

    RépondreSupprimer
  5. Des mois après, cet article me revient en tête, et je pense que je vais commencer à expérimenter cette solution sur AGS.
    Merci.

    RépondreSupprimer

Merci de lire mon blog