
Astero-Moulinette
Ça y est, j'ai atteint l'âge n en l'an n². Et force est de constater que je n'aurai jamais le temps de tout réaliser moi-même. J'ai donc fait appel à Darvel pour composer les musiques d'Omeganaut.
Pour garder Omeganaut aussi léger que possible, et surtout pouvoir moduler les pistes audio en temps réel dans le jeu, j'ai choisi SunVox. C'est un format ultra-optimisé qui permet de lire des partitions en direct, un peu comme le MIDI. Mais au lieu de piocher les instruments dans la carte audio de l’ordinateur, ils sont intégrés au fichier sous forme de modules.
Sur le papier, c'est parfait. Mais SunVox a une interface utilisateur peu évidente à mon goût. Un peu comme si Matrix était un programme pour faire de la musique techno.
Alors, on s'y habitue.
Et j'avais même composé une courte musique avec l'aide d'un petit clavier xKey chiné à 20€ en décembre dernier :
I'm having so much fun learning Sunvox with the Xkey Air I snagged for just 20€. This is just a first draft—you'll have to imagine a Megaman-style guitar solo over it—but rest assured, Omeganaut will definitely feature music in the next version ✨ #gamedev #indiegames #music
— Etienne (@txori.com) Dec 23, 2024 at 20:36
[image or embed]
Mais depuis, plus le temps de composer quoi que ce soit...
Le retour de Darvel !
Voyant le temps me filer entre les doigts, je me suis tourné vers Darvel, qui s'était occupé des musiques de Dragon Ball Devolution il y a déjà 13 ans.
Depuis, il a participé à pas mal de jeux très cools :
Comme moi, Darvel a ses petites habitudes de production. Il travaille sur Cubase, qui ressemble à ça :
Comme il ne se voyait pas composer dans SunVox, il a pris le temps de trouver comment exporter un fichier MIDI avec les bonnes options depuis sa partition sur Cubase, puis l’importer dans SunVox, et enfin assigner à chaque piste audio un instrument SunSynth pour lui donner la sonorité désirée.
Le premier test était concluant. Mais au moment de faire des retouches sur la musique, un problème est rapidement apparu : à chaque modification dans Cubase, il fallait tout refaire à la main pour obtenir le fichier SunVox final.
Une nouvelle moulinette !
Je suis fan de moulinettes. C'est peut-être l'activité qui m'amuse le plus dans le développement : cruncher des heures sur un projet ultra-complexe pour gagner un temps fou par la suite. J’ai donc écrit un programme Python utilisant la librairie SunVox. En un clic, il ouvre le fichier MIDI ainsi qu’un fichier de configuration contenant la correspondance entre les noms de pistes MIDI et les instruments SunSynth, par exemple :
{
"bass": "Syne.sunsynth",
"HH": "ACheney Hihat.sunsynth",
"guit 0": "electric_guitar.sunsynth",
"pad": "analog pad 1.sunsynth",
"guit 1": "electric_guitar2.sunsynth",
"syn 1": "ACheney Analog Synth.sunsynth",
"syn 2": "ACheney Analog Synth II.sunsynth"
}
Le programme attaque ensuite la conversion, et moins d'une seconde plus tard, il enregistre le résultat au format SunVox, tout prêt à être écouté dans Omeganaut. Ce n'était pas du tout évident, mais ça fonctionne étonnamment bien !
Il me reste à ajouter quelques options, comme la transposition automatique des notes. En effet, un La en cinquième octave dans un fichier MIDI peut donner une hauteur complètement différente dans SunVox, car l’instrument assigné à cette note utilise un sample ayant une tonalité de base différente, qu'il faut gérer en transposant sa hauteur.
Je vais continuer de peaufiner cette moulinette en fonction des besoins de Darvel, et je verrai ce que j'en ferai par la suite. J'imagine que ça pourra intéresser pas mal de monde.
En tout cas, la prochaine version d’Omeganaut aura définitivement sa bande-son 🎵