Comment fonctionnent les jeux audio tels que Audiosurf et Beat Hazard?


43

Remarque: je ne vous demande pas comment créer un clone de l’un d’eux. Je demande comment ils fonctionnent.

Je suis sûr que tout le monde a vu les jeux dans lesquels vous utilisez vos propres fichiers de musique (ou ceux fournis) et les jeux génèrent des niveaux basés sur ces fichiers, tels que Audiosurf et Beat Hazard .

Voici une vidéo d'Audiosurf en action, pour montrer ce que je veux dire.

Si vous fournissez une chanson heavy metal, vous obtiendrez un ensemble complètement différent d'obstacles, d'ennemis et d'expérience de jeu de quelque chose comme Vivaldi.

Ce qui m'intéresse, c'est comment fonctionnent ces jeux. Je ne sais pas grand-chose de l'audio (du côté des données), mais comment traite-t-on le morceau pour comprendre quand il se stabilise ou quand il s'accélère? Je suppose qu'ils pourraient simplement alimenter les valeurs de hauteur (en supposant que ce genre de choses existe dans les fichiers audio) pour former un niveau, mais cela ne l'expliquerait pas complètement.

Je cherche soit une explication, des liens vers des articles sur ce genre de choses (je suis sûr qu'il existe un terme ou des termes), soit même une implémentation open source de ce genre de choses ;-)

EDIT: Après quelques recherches et un peu d’aide, j’ai découvert la technologie FFT (Fast Fourier Transform). C’est peut-être un pas dans la bonne direction, mais c’est quelque chose qui n’a aucun sens pour moi… ou correspond à ma connaissance de la physique des ondes.


1
Je viens de modifier pour ajouter des informations sur les FFT, j'espère que cela aidera :)
Ray Dey

Réponses:


30

Le terme que vous recherchez est traitement / analyse du signal. Il existe de nombreuses techniques mais la technique fondamentale utilisée par ces jeux est la détection de battement . Ceci essaye de calculer le tempo de la chanson et où sont les battements dans une mesure et donc de placer les obstacles à la distance appropriée pour qu'ils coïncident avec chaque battement.

La façon dont les jeux savent à quel moment entrer, etc. peut aller de très simple à la mesure de l'amplitude (volume) de la forme d'onde ou à quelque chose de plus complexe, comme isoler le volume de certaines fréquences et en mesurer le volume.

Si cela vous intéresse, examinez le traitement du signal numérique pour voir comment analyser les formes d'onde, ce qui correspond essentiellement à la fonction de chargement de ces jeux.

Ces liens sont bons pour vous aider à démarrer:

Introduction à la
théorie du traitement du son et aux techniques de la musique électronique
Introduction aux filtres numériques

J'espère que ça t'as aidé :)

-Rayon

EDIT: Je viens de voir votre montage concernant les transformations de Fourier et je me suis dit que je pourrais en ajouter un aperçu, bien que je ne sois en aucun cas un expert en la matière!

La FFT est un moyen de calculer la transformée de Fourier réelle d'une forme d'onde. En gros, si vous chargez un fichier audio dans Audacity , vous verrez la forme d'onde avec la timeline en haut, c'est le domaine temporel . La FFT convertira un signal du domaine temporel dans le domaine fréquentiel (essentiellement toutes les fréquences présentes dans l'audio).

Cette conversion est utile pour l'analyse spectrale. Dans un exemple de jeu, si vous réalisiez une transformation de Fourier, vous pourriez facilement calculer la quantité d'occurrences de haute fréquence dans l'audio, puis ajouter des effets visuels clignotants, des étoiles ou quelque chose associé à des sons généralement à haute fréquence. Pour les basses fréquences, vous pourriez avoir de gros monstres gloutons se déplaçant au rythme des sons de basse, etc.


1
Grands liens! Cependant, je les ai cliqués et mes yeux se sont un peu fondus. : p
Le canard communiste le

5
@ Le canard communiste: C'était la partie faible. Maintenant, tes yeux sont plus forts.
doppelgreener

3
@Le Canard Communiste Vous venez de descendre un peu plus loin dans le terrier du lapin et il s'enfonce looooooong;)
Ray Dey

Je suis un peu ennuyé. XNA ne me permet pas vraiment de faire ces choses avec des fichiers MP3 (je pourrais avec .WAV je pense, mais ce sont énormes) ce qui est ennuyeux. Mais hé, merci beaucoup pour d'excellentes ressources et un mal de tête: D
The Communist Duck

1
@Kay a mis à jour le lien
Ray Dey


0

Les données issues de l'analyse de la variation d'énergie spectrale suffisent à générer ce type de carte. Ici, le problème peut être s'il y a trop de données à traiter: pas quel type de données est utilisé, mais comment.

Après avoir visionné certaines vidéos, je commence à croire que les données sont déplacées plus loin dans le domaine de la fonctionnalité (domaine de temps -> domaine de fréquence -> domaine de fonctionnalité). Le logiciel génère des données en utilisant les changements d’énergie spectrale et tente de reconnaître les caractéristiques connues, puis utilise les informations relatives à ces caractéristiques pour configurer la carte. La reconnaissance peut être effectuée par clusterisation, maximum de vraisemblance, réseaux de neurones, algorithme génétique, etc.

Une fois la reconnaissance terminée, vous avez des informations telles que: la caractéristique est trouvée dans le temps et la fréquence , quel type de fonctionnalité est trouvée, la vitesse de déplacement du vecteur de caractéristique, etc. vous pouvez utiliser ces données pour alimenter une génération de carte algorimth, laissant ainsi la place à des améliorations telles que l'amélioration des algorithmes de reconnaissance, la reconnaissance d'un plus grand nombre de fonctionnalités, l'extraction de plus de données, la recherche de nouveaux moyens de "restituer" ces données, etc.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.