Contenu du renducontact(at)guillaumelevieux.com :: « Home

Emeline Berenguier

Programmeur Enjmin



Pendant la semaine de projet Unity, j’ai fait un jeu en réseau. Il ne manquait plus qu’à coder le système de victoire et de défaite, et c’est le dernier jour que je me suis dit que la visualisation audio était un sujet plus intéressant.


Je suis donc repartie de 0 pour faire mon projet. La première étape était de représenter visuellement le son. Pour ça je me suis aidée de l’analyse spectrale d’Unity, la FFTWindow, qui m’a permis de générer un tableau de données du son en temps réel.


Je visualisais alors 512 données en même temps. J’ai alors représenté le son sous la forme de 8 bandes contenant chacun un certain nombre de valeurs, en suivant la logique du spectre audio et ses 8 parties. Chaque bande, à un moment T, a comme valeur la moyenne des données qu’elle contient.


Cette valeur est un simple nombre, qu’on peut récupérer et retranscrire visuellement. J’ai d’abord dans un premier temps fait changer la taille et la couleur des barres et j’ai aussi modifié l’intensité de la lumière en fonction du temps, ce qui donne un effet de battement et de rythme à l’ambiance globale. Cela fonctionne en se basant sur une barre précise, et non pas la moyenne totale des barres.


J’ai voulu pousser la visualisation audio plus loin en en faisant un outil. J’ai donc codé un éditeur de génération de jeu de rythme à la Guitar-Hero.


Chaque bande est chargée de générer un type de note. La génération se fait lorsque l’écart entre une moyenne à un moment T et T-1 est supérieur à une valeur fixée par le concepteur, la TRIGGER_VALUE. Plus la TRIGGER_VALUE est élevée, moins les notes seront sensibles au changement de rythme, elles n’apparaitront que lors d’un gros changement de rythme.


J’ai rajouté une fonctionnalité pour changer sa musique et importer la sienne depuis son propre ordinateur, cependant je me suis heurtée à plusieurs problèmes :


• La fonction d’Unity pour récupérer des audio ne supportent que les fichiers .wav

• Pour ouvrir le File Explorer, je passe par EditorUtility.OpenFilePanel. Cette fonctionnalité n’est pas supportée par le système de build. Ce problème est contournable par la création d’une DLL. Cependant, cela m’éloignait de mon sujet principal, j’ai préféré passer par les conditions de pré-compilation. Cela m’a permis de désactiver certains bouts de code.

• Pour une utilisation optimale du logiciel, il est recommandé d’utiliser des musiques d’une fréquence de 22 kHz et non 44.1 kHz.


Ce projet est plus à voir comme un outil de développement pour Unity qu’un logiciel. J’ai joint un UnityPackage dans le zip de la build.