Dada cualquier matriz de números, de naturaleza similar a la siguiente:
[48, 60, 64, 67, 72]Quiero poder evaluar esta (o cualquier) serie de números y buscar patrones musicalmente significativos, y no estoy seguro de cómo empezar a hacerlo.
Por ejemplo, si resto 48 de cada número obtendría esto:
[0, 12, 16, 19, 24]... uno notará que los números 1, 2 y 5 están separados por 12, lo cual es un patrón significativo en la música, ya que 12 pasos es una octava. Esta es una de las cosas que me gustaría poder averiguar simplemente mirando los números.
Ahora, si tomo los tres números del medio y resto 12 de cada uno obtengo:
[0, 4, 7]...que es el patrón numérico de pasos en un teclado que crearía una tríada mayor, que es otro ejemplo de algo que me gustaría poder evaluar a partir de una serie de números.
Entonces, al final, la serie original de números:
[48, 60, 64, 67, 72]...representa las siguientes notas musicales:
[`C2`, `C3`, `E3`, `G3`, `C4`] ...que es una tríada de C mayor C3 , E3 , G3 con la fundamental duplicada una octava C2 y también duplicada una octava C4 .
Lo que quiero hacer es escribir un código que tome cualquier serie de números de mensajes midi, como el ejemplo anterior, los evalúe y luego le diga al usuario qué entidad musical ha tocado, incluidas inversiones, duplicaciones, otras posibles interpretaciones, etc. .
Habría una base de datos/diccionario/objeto/arreglo/cosa de datos de algún tipo que contiene muchos patrones diferentes, luego el código compararía los números entrantes con este conjunto de patrones para encontrar el(los) correcto(s)...
No busco respuestas de código tanto como una idea de cómo comenzar incluso con algo así en javascript, ya que esto sería para la web ...
Realmente no tengo idea de cómo empezar a hacer esto, pero agradecería mucho cualquier pensamiento, ejemplo o recurso que pueda orientarme en la dirección correcta.
¡Gracias! XDD