¿Cómo funcionan los juegos basados ​​en audio como Audiosurf y Beat Hazard?

43

Nota: no estoy preguntando cómo hacer un clon de uno de estos. Estoy preguntando cómo funcionan.

Estoy seguro de que todos han visto los juegos en los que usas tus propios archivos de música (o los proporcionados) y los juegos producen niveles basados ​​en ellos, como Audiosurf y Beat Hazard .

Aquí hay un video de Audiosurf en acción, para mostrar lo que quiero decir.

Si proporciona una canción de heavy metal, obtendría un conjunto completamente diferente de obstáculos, enemigos y experiencia de juego de algo como Vivaldi.

Lo que me interesa es cómo funcionan estos juegos. No sé mucho sobre audio (bueno, del lado de los datos), pero ¿cómo procesan la canción para entender cuándo se está asentando o cuándo se está acelerando? Supongo que simplemente podrían alimentar los valores de tono (suponiendo que ese tipo de cosas existan en los archivos de audio) para formar un nivel, pero no lo explicaría completamente.

Estoy buscando una explicación, algunos enlaces a artículos sobre este tipo de cosas (estoy seguro de que hay un término o términos para ello), o incluso una implementación de código abierto de este tipo de cosas ;-)

EDITAR: Después de un poco de búsqueda y un poco de ayuda, descubrí FFT (Fast Fourier Transform). Tal vez sea un paso en la dirección correcta, pero es algo que no tiene ningún sentido para mí ... o encaja con mi conocimiento físico de las ondas.

El pato comunista
fuente
1
Acabo de editar para agregar información sobre FFT, espero que ayude :)
Ray Dey

Respuestas:

30

El término que está buscando es procesamiento / análisis de señal. Hay muchas técnicas involucradas, pero la fundamental que utilizan esos juegos es Beat Detection . Esto intenta calcular el tempo de la canción y dónde están los tiempos en una medida y, por lo tanto, coloca los obstáculos a una distancia adecuada para que coincidan con cada tiempo.

La forma en que los juegos saben cuándo "patear", etc. puede variar desde ser muy simple y medir la amplitud (volumen) de la forma de onda o algo más complejo como aislar el volumen de ciertas frecuencias y medir su volumen.

Si está interesado, consulte el Procesamiento de señal digital para ver cómo puede analizar las formas de onda, que es esencialmente lo que hacen estos juegos en su fase de carga.

Estos enlaces son buenos para comenzar:

Introducción a la
teoría y técnicas de procesamiento de sonido de la música electrónica
Introducción a los filtros digitales

Espero que ayude :)

-Rayo

EDITAR: Acabo de ver su edición con respecto a las transformadas de Fourier y pensé que agregaría algo de información, ¡aunque de ninguna manera soy un experto!

FFT es una forma de calcular la transformada de Fourier real de una forma de onda. Básicamente, si carga un archivo de audio en Audacity , verá la forma de onda con la línea de tiempo en la parte superior, esto se conoce como el dominio del tiempo . El FFT convertirá una señal del dominio del tiempo al dominio de la frecuencia (básicamente todas las frecuencias que ocurren dentro del audio).

Esta conversión es útil para el análisis espectral. En un ejemplo de juego, si tuviera que hacer una transformación de Fourier, podría calcular fácilmente la cantidad de ocurrencias de alta frecuencia en el audio, y a partir de eso podría agregar efectos visuales centelleantes, estrellas o algo asociado con sonidos típicamente de alta frecuencia. Para las frecuencias bajas, podría tener monstruos grandes y glotones moviéndose al ritmo de los sonidos graves, etc.

Ray Dey
fuente
1
Grandes enlaces! Sin embargo, hice clic en ellos y mis ojos se derritieron un poco. : p
El pato comunista
55
@El Pato Comunista: Esa fue la parte débil. Ahora tus ojos son más fuertes.
doppelgreener
3
@The Communist Duck Acabas de bajar por la madriguera del conejo y se va muuuuuuuuuuuuuuuuuuuuuuuuuuuu en en entrometido;)
Ray Dey
Estoy un poco molesto XNA realmente no me permite hacer ninguna de estas cosas con archivos MP3 (creo que podría con .WAV, pero son enormes) lo cual es molesto. Pero bueno, muchas gracias por los grandes recursos y el dolor de cabeza: D
The Communist Duck
1
@Kay actualizó el enlace
Ray Dey
6

Aquí hay una gran serie de tutoriales de siete partes sobre este tema de Badlogic Games. Cubren todo, desde lo básico hasta la implementación.

http://www.badlogicgames.com/wordpress/?cat=18

Intentan imitar el algoritmo Audiosurf con código y todo.

Árni Jónsson
fuente
0

Los datos que provienen del análisis de la variación de energía espectral son suficientes para generar este tipo de mapas. Aquí el problema puede ser si hay demasiados datos para procesar: no qué tipo de datos se utilizan, sino cómo.

Después de ver algunos videos, estoy empezando a creer que los datos se mueven aún más en el dominio de funciones (dominio de tiempo -> dominio de frecuencia -> dominio de funciones). El software genera datos utilizando los cambios de energía espectral e intenta reconocer las características conocidas, luego usa la información sobre las características para configurar el mapa. El reconocimiento se puede hacer por agrupación, máxima probabilidad, redes neuronales, algoritmo genético, etc.

Después de completar el reconocimiento, tiene información como: dónde se encuentra la característica en tiempo y frecuencia , qué tipo de característica se encuentra, la velocidad a la que se mueve el vector de característica, etc. puede usar estos datos para alimentar un algoritmo de generación de mapas, dejando espacio para mejoras como hacer mejores algoritmos de reconocimiento, reconocer más familias de características, extraer más datos, encontrar nuevas formas de "representar" estos datos, etc.

FxIII
fuente