Procesando – Construyendo Metrónomo Visual – Baterista anhelando código.
Soy nuevo en el uso de Processing y estoy intentando construir un metrónomo de un tipo específico (soy baterista) que me permita crear un generador de letras aleatorias (de A a X) que elija al azar un carácter de una cadena (¿o es un arreglo?) y luego continúe generando aleatoriamente esos caracteres, mostrando también cuál fue el carácter elegido anteriormente.
Tengo asignado un determinado patrón de batería a cada letra, así que en lugar de reproducir las letras de A a X, y luego de X a A, me gustaría llevar mi práctica más lejos y tocar ese alfabeto en particular de manera aleatoria. Obviamente, podría intentar escribirlo todo en papel o encontrar alguna otra forma más fácil de crear variaciones aleatorias de todo eso, pero ¿por qué debería complicarme la vida? 😀
El “metrónomo” comenzaría con solo un carácter, digamos “D”, y luego después de 2 segundos, por ejemplo, elegiría otro al azar, digamos “X”, y así sucesivamente. Por lo tanto, la primera ejecución mostraría D, luego DX, luego XL, etc. Ya he descubierto cómo generar un carácter de esa cadena, lo cual sé que es muy básico:
// Obtener un elemento aleatorio de un arreglo
String[] palabras = {“A”,”B”,”C”,”D”,”E”,”F”,”G”,”H”,”I”,”J”,”L”,”M”,”N”,”O”,”P”,”Q”,”R”,”S”,”T”,”U”,”V”,”W”,”X”};
int indice = int(random(palabras.length));
println(palabras[indice]); // Imprime una de las 24 letras palabras
Por lo tanto, mi objetivo es poder cambiar la cantidad de tiempo que dura el “compás” en particular.
Y al final, quiero asignar un sonido a cada cambio de nueva variación, para que suene como un metrónomo real.
Agradeceré cualquier ayuda, personas de P{rocessing}.
Saludos,
SHB
davy.ai
Estimado SHB,
Es genial saber que estás experimentando con Processing para crear un metrónomo que se ajuste a tus necesidades específicas como baterista. Como experto en IT especializado en audio, aleatorización, tiempo y procesamiento, estaré encantado de guiarte a través de los pasos necesarios para alcanzar tus objetivos.
Para comenzar, el primer paso para crear un metrónomo que genere letras aleatorias entre A y X sería definir un arreglo de letras de donde podamos elegir:
Este arreglo contiene todas las letras desde la A hasta la X de las que podemos elegir.
A continuación, necesitamos definir un intervalo de tiempo entre cada cambio de letra. Has mencionado que te gustaría poder cambiar la cantidad de tiempo entre cada cambio de letra. Vamos a definir una variable llamada
intervalLength
que determine la cantidad de milisegundos entre cada beat:Luego, vamos a definir una variable para guardar la cadena actualmente mostrada y una variable para guardar el índice de la última letra elegida:
En este ejemplo, estamos comenzando con la letra “D” y
lastIndex
comienza en-1
ya que aún no hemos elegido ninguna letra.Ahora, vamos a configurar un loop que generará una nueva letra cada
intervalLength
milisegundos. Para lograr esto, podemos usar la funciónmillis()
para verificar si ha pasado el período de tiempo requerido y luego generar una nueva letra:En este loop, estamos verificando si el tiempo actual es mayor que
intervalLength
más el tiempo del último beat. Si lo es, elegimos un nuevo índice de letra de nuestro arregloalphabet
, lo agregamos acurrentString
, establecemoslastIndex
como el tiempo actual e imprimimos la nueva cadena en la consola.Finalmente, para asignar un sonido a cada cambio de variación, podemos usar la librería de
Sound
de Processing para reproducir un sonido cada vez que se genera una nueva letra.En este caso, estamos importando la librería de
Sound
de Processing, definiendo una variablesound
que contiene nuestro archivo de sonido y cargando el archivo de sonido en la funciónsetup()
. Luego, en la funcióndraw()
, reproducimos el sonido cada vez que se genera una nueva letra.Espero que esto te ayude con tu proyecto de metrónomo. Avísame si tienes alguna pregunta o si necesitas ayuda adicional.
Saludos,
[Tu nombre]