Programmation musicale : de la 8 bits à la haute définition, et vice versa.

Comme la plupart des trentenaires ayant grandi avec les jeux vidéo, j’ai énormément de nostalgie pour les vieux jeux vidéo qui ont bercé mon enfance. Principalement les jeux de la Nintendo NES, console 8 bits adoptée par plus de 60 millions de foyers de par le monde dans les années fin 80 début 90. Pour ma génération, il y a eu à cette époque des dizaines de jeux vidéo emblématiques sur cette console. Ils ont marqué nos esprits et nous ont procurés des souvenirs impérissables.

L’envers du décor de ces jeux m’a intéressé dès le plus jeune âge et ainsi que je le découvrirai quelques années plus tard, la programmation musicale avec ses mélodies mémorables (tout le monde connait le thème de Super Mario Bros). C’est précisément ce qui va nous intéresser ici.

L’objectif de cet article est d’indiquer comment, à partir d’une mélodie d’un jeu vidéo 8 bits, il est possible de réaliser une réinterprétation moderne avec des sons d’instruments classiques sans pour autant faire appel à un orchestre symphonique. Ce n’est pas un tutoriel pour réaliser le même exercice chez soi – pour cela je vous renvoie à la documentation des logiciels cités plus bas – mais plutôt un descriptif des différentes étapes d’édition et de déconstruction d’une mélodie 8 bits, pour reprogrammer le tout dans différents synthétiseurs logiciels et créer un mixage avec des sonorités réalistes et modernes.


A partir de la mélodie du jeu vidéo « Duck Hunt », vous trouverez ci-dessous comment réaliser une réinterprétation avec des sons d’instruments classiques. Mais avant les explications, voici le comparatif original/résultat…

 

Mélodie originale 8 bits du jeu vidéo « Duck Hunt »

 

Réorchestration xylophone et glockenspiel avec contrebasse et percussions

 

Tout d’abord, un peu de théorie. Le son produit par la NES provient du processeur 8 bits qui possède un synthétiseur intégré. Ce synthétiseur possède 5 canaux audio:
– 2 canaux générateurs d’ondes carrées.
– 1 canal générateur d’onde triangulaire.
– 1 canal générateur de bruits blancs.
– 1 dernier canal capable de lire des échantillons audio codés sur 1bit.

Dans la mélodie qui nous intéresse, les ondes carrées sont utilisées pour la mélodie principale, l’onde triangulaire pour la basse et les bruits blancs pour les percussions. Le canal pour les échantillons n’est pas utilisé. Voici le son de chaque canal (les 2 canaux d’ondes carrés sont mixés en une seule piste):

 

Le processeur de la console mixe les 4 canaux ensemble pour donner la mélodie suivante:

 

Pour réaliser une réinterprétation moderne de cette mélodie, il est nécessaire de récupérer la partition musicale. Le processeur de la NES connaissant la séquence des fréquences à générer pour chacun des canaux audio, il doit donc être possible d’extraire ces informations. Pour effectuer cela, le fichier sonore d’origine du jeu (fichier au format NSF pour Nintendo sound format) est importé dans un logiciel tracker émulant le synthétiseur du processeur de la console. Dans ce cas-ci, le tracker utilisé est Famitracker, il est disponible gratuitement. Voici une copie d’écran après l’import du fichier NSF dans Famitracker.

Comme pour tout tracker, on peut observer les différentes pistes sonores qui se déroulent verticalement. Les pistes sont bien identifiées (Square 1, Square 2, Triangle, et Noise). Sur chaque piste, différents paramètres indiquent les notes de musique à générer (dans la notation anglaise), le volume pour chaque note et éventuellement un effet (pitch slide, vibrato, tremolo, etc).

Un plugin de Famitracker (ftm2mid) permet la conversion du fichier de sauvegarde FTM de Famitracker en un fichier MIDI (Musical Instrument Digital Interface), un format de fichier standard utilisé pour la communication entre instruments électroniques ou logiciels de création musicale. Le fichier MIDI contient la partition musicale sous forme numérique et il peut être interprété par n’importe quel synthétiseur physique ou logiciel.

Avant d’aller plus loin, la partition contenue dans le fichier MIDI doit être éditée pour enrichir les accords, corriger la durée de certaines notes, et modifier le tempo. Pour cela, j’utilise le logiciel gratuit Musescore qui est un éditeur de partition musicale. Il permet l’import, l’édition et l’export de fichier MIDI. Voici une copie d’écran après l’import du fichier MIDI dans Musescore.

Après modification (le tempo a été ralenti de 149 à 80 bpm), la partition est exportée sous la forme d’un nouveau fichier MIDI. Ce fichier est prêt à être importé dans un logiciel dit séquenceur qui va permettre d’allouer chaque ligne de la partition à un synthétiseur virtuel. Le séquenceur utilisé ici s’appelle Mulab, il est développé par le studio de développement Belge Mutools. La licence d’utilisation pour Mulab coûte moins de 100€, une version gratuite mais limitée existe également.

Les 2 premières lignes de la partition qui correspondent à la mélodie, anciennement les 2 canaux d’ondes carrées, sont allouées à deux synthétiseurs reproduisant le son d’un xylophone et d’un glockenspiel. La troisième ligne de la partition correspondant à la ligne de basse, anciennement le canal d’onde triangulaire, est allouée à un synthétiseur qui reproduit le son d’une contrebasse. La dernière ligne de la partition correspondant aux percussions, anciennement le canal de bruits blancs, est allouée à une batterie virtuelle.

Tous les instruments virtuels utilisés ici font partie de la suite logiciel Sonatina Symphonic Orchestra qui reprend une vingtaine d’instruments symphoniques sous forme de synthétiseurs, et le tout gratuitement. Pour le xylophone et le glockenspiel, aucun paramètre n’a été adapté excepté le volume du glockenspiel qui a été réduit de 6 décibels. Concernant la contrebasse, les paramètres du synthétiseur ont été adaptés pour un jeu en Pizzicato donnant un son basse avec plus d’attaque et moins de soutien des notes dans la durée. La ligne de la partition a également été réécrite. Pour les percussions, chaque note sur la ligne de la partition a été attribuée à un échantillon sonore. Enfin, une piste est ajoutée pour différents sons de carillons en introduction et en fin de morceau pour donner plus de volume à la pièce. Voici chaque piste audio:

 

Après mixage des différentes pistes, Mulab permet l’export de notre réinterprétation en un fichier mp3. Voici le résultat final:

 

Si une mélodie 8 bits peut être réinterprétée avec des sonorités réalistes, il est également possible d’effectuer la démarche inverse, soit de jouer une mélodie réelle avec les sonorités 8 bits de la NES. Le travail reste exactement le même:
– récupérer les informations MIDI pour le morceau de musique.
– éditer la partition si nécessaire.
– importer le résultat dans un synthétiseur qui émule les sonorités de la console NES.

Pour illustrer cet exercice, j’ai choisi le troisième mouvement de la Sonate « Clair de lune » de Beethoven. Voici un court extrait d’une version jouée au piano:

 

Quelques minutes de recherche sur Internet suffisent pour trouver le fichier MIDI correspondant à ce morceau de musique classique. Dans ce cas-ci, la partition (voir PDF) correspond à une version symphonique du morceau de musique. Elle possède donc plusieurs lignes, pour différents instruments de musique, ce qui permet d’attribuer différentes lignes aux différents canaux (onde carrée, onde triangulaire, bruit blanc) du synthétiseur de la console 8 bits. Bien entendu, il est toujours possible de réécrire la partition dans Musescore et de créer un fichier MIDI à partir de zéro ou encore de réécrire la partition directement dans Famitracker mais il existe une solution bien plus rapide.

Le séquenceur Mulab permet l’utilisation de synthétiseurs virtuels, il est donc possible d’utiliser un synthétiseur virtuel reproduisant les sonorités 8 bits de la NES. Ce synthétiseur virtuel s’appelle « Nintendo VST » et est disponible gratuitement.

Après import du fichier MIDI dans Mulab, il ne reste plus qu’à attribuer les différentes lignes de la partition aux différents canaux du synthétiseur. Sans modification du fichier MIDI, voici un extrait du résultat produit:

 

NB: Une oreille attentive détectera une polyphonie sur chaque canal, conséquence de l’attribution de lignes de partition multiples sur un même canal, ce qui n’est pas possible en pratique sur la console NES étant donné que chaque canal est monophonique.