2012-02-26 3 views
5

En este momento, estoy tratando de descubrir los patrones de una canción (ritmo) para representarlos visualmente. Entonces, por ejemplo, el ritmo principal de una canción (batería) sería un cuadrado rojo, los latidos secundarios (bajo) círculos azules, etc. Así que cada uno de ellos aparece cada vez que suena su ritmo respectivo.¿Cómo saber los patrones de la canción (ritmo) usando AS3 SoundMixer.computeSpectrum?

Sé que una canción podría tener muchos patrones (ritmos), y esa es la razón por la que tengo problemas. En este momento estoy tratando de obtener solo los mejores ritmos. Estoy tratando de resolverlo de esta manera:

Estoy usando SoundMixer.computeSpectrum para obtener un ByteArray compuesto por una especificación de intensidad/frecuencia. Este ByteArray se alimenta cada 1/10 de segundo. Intento agrupar datos de intensidad/frecuencia similares en Diccionarios para descubrir los patrones de la canción.

A figure that explains it better.

me estoy haciendo patrones por:

  • Familias (toda la especificación int/frecuencia cada 1/10): Sin embargo, para conseguir una familia Obteniendo repite en una la canción es realmente rara. Prácticamente nunca sucede.
  • Miembro de familia (id. Int/freq de individuos): Los miembros de la familia se repiten con frecuencia, pero solos son inútiles.
  • miembros de la familia de hermanos individuales (grupo de miembros de la familia que siempre suena en conjunto): Esto está trabajando, pero estoy recibiendo una gran cantidad de grupos de hermanos gemelos, por lo que es realmente difícil analizarlos y determinar qué los unos son los ritmos principales.

¿Conoce si hay una mejor manera de descubrir los patrones de canción (rythm) usando AS3 SoundMixer.computeSpectrum o cualquier otro objeto/marco/api?

PD: No tengo ningún reconocimiento avanzado de la teoría de la música.

Respuesta

1

Julapy publicó una demostración y un código que detectan algunos latidos obvios. Julapy agrega energía de computeSpectrum. Julapy se agrega en una amplia banda de frecuencia, no co-ocurriendo bandas angostas (miembros de la familia): http://www.julapy.com/blog/2007/12/30/beat-detection-in-flash/

Honestamente, nunca he codificado los algoritmos siguientes, sin embargo, la página 2 de un artículo "Beat Detection Algorithms" sugiere estimar latidos por minuto estimando períodos de la misma banda de frecuencia. Parece que podría aumentar el enfoque de Julapy: http://archive.gamedev.net/archive/reference/programming/features/beatdetection/page2.html

Por cierto, la demostración y el código del analizador de sonido en el marco HYPE también visualiza computeSpectrum de formas novedosas. Si bien no se resuelve el mismo problema, vale la pena leer el código relacionado con computeSpectrum: http://www.hypeframework.org/02_examples/soundanalyzer/content/01_soundanalyzer/

Cuestiones relacionadas