Tabla de contenido:
- Paso 1: las cosas de la computadora
- Paso 2: el piano
- Paso 3: Montaje
- Paso 4: Desafíos técnicos y consideraciones futuras
Video: Piano de jugador de sinestesia: 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
¡Este piano toca música con una rueda de colores y una cámara! Las imágenes son capturadas por la cámara, procesadas e interpretadas como notas musicales. En este momento está programado para reproducir canciones infantiles que se pueden cambiar cargando un nuevo boceto de arduino que especifica qué notas se deben tocar (qué colores se deben mostrar a la cámara).
La PC Linux integrada inicia un servicio en el arranque que toma una foto con una cámara, calcula una función de los valores RGB en la imagen y emite un sonido basado en el valor de retorno de la función. Antes de reproducir el sonido, envía una señal que le dice a un Arduino que gire un servo, presentando el color correspondiente a la siguiente nota a tocar. Luego, el bucle comienza de nuevo, se toma una fotografía, se gira la rueda de colores y se reproduce un sonido hasta el infinito.
Este proyecto es una forma divertida de integrar música, programación de sistemas Linux modernos, programación de microcontroladores, garabatos inkscape, corte por láser y reutilización de algunas cajas de cartón basura.
Todo el código y los SVG de inkscape están disponibles en github en:
github.com/melvyniandrag/pyMusic
Materiales usados:
- Etiquetas blancas en blanco
- Caja de cartón
- Cámara web
- Lápices de color
- Arduino
- Beagleboard-xM
- Alambres
- Cable serial
- Conocimientos básicos de procesamiento de imágenes y música.
Paso 1: las cosas de la computadora
A bordo, necesitará una pequeña computadora con capacidad para Linux, como una Raspberry Pi. Usé un viejo BeagleBoard-xM porque lo tenía por ahí y ya tenía un sistema operativo en la tarjeta SD. Puede usar lo que sea, siempre que pueda manejar una cámara web, pueda ejecutar OpenCV (la biblioteca de visión por computadora que se usa para tomar y procesar imágenes de la rueda de colores) y tenga un conector de salida de audio.
Configuré el sistema operativo para ejecutar el código Python que captura imágenes en el arranque siguiendo un tutorial de systemd. Para que se ejecute el script, necesitará sudo apt-get install python-pyaudio python-opencv para obtener las bibliotecas indicadas. También necesitará pip install numpy pyserial para obtener esas bibliotecas. pyaudio se usa para reproducir sonidos, opencv se usa para tomar y procesar imágenes, numpy también se usa para procesar imágenes y se necesita pyserial para comunicarse con Arduino.
El Arduino se utiliza para hacer girar el servomotor en el que está montada la rueda de colores. Si tuviera una Raspberry Pi, podría hacer uso de los pines GPIO allí y omitir el Arduino, pero necesitaría modificar el código Python.
En las imágenes se puede ver la tripa tecnológica de la operación y un par de fragmentos de código.
Paso 2: el piano
Hice el piano de cartón con algunas cajas viejas que tenía. Tengo la suerte de vivir cerca de un maker space que tiene un cortador láser. Durante todo un año me he estado preguntando para qué diablos querría una cortadora láser, y resulta que finalmente le encontré un uso.
Medí la computadora, el arduino y el servo para saber cuánto espacio necesitaría, dibujé las partes del piano en inkscape y las recorté en el cortador láser. (Editar: me quedé sin cartón para hacer que el gabinete contenga la computadora y el arduino, por lo que no los puse. Están en el exterior de la carcasa. No importa, podría haber conseguido otra caja de algún lado, pero no no importa al final.)
Las piezas se juntaron con epoxi.
Paso 3: Montaje
Aquí hay algunas imágenes del piano ensamblado y coloreado. La impresora se quedó sin tinta, por lo que no pude imprimir los colores en las etiquetas blancas como había planeado. Entonces usé los crayones de mi hija. Y no pude encontrar un cuchillo xacto para cortar la etiqueta a la forma del cartón, así que solo usé un cuchillo para carne y puse algo protector en la encimera de la cocina. ¡Usa lo que tienes!
Paso 4: Desafíos técnicos y consideraciones futuras
Una parte desafiante de este proyecto fue lograr que la cámara leyera los valores RGB adecuados. La cámara web que tengo tiene algunos LED increíblemente brillantes que no sé cómo apagar en Linux. Creo que hay un controlador de Windows que te permite activarlos y desactivarlos. Experimenté pegando los LED con cinta aislante y dejándolos encendidos. También probé la solidez del software no solo mostrándolo en papel de color, sino también escribiendo un pequeño sitio web que muestra los colores.
Los sonidos producidos por la computadora a veces tienen estallidos y crujidos, y esto se debe al hecho de que tengo muy poca experiencia en la programación de audio de Linux. La biblioteca pyaudio escupe un montón de quejas acerca de que JACK no está instalado en la PC, pero de forma predeterminada, JACK no quiere ejecutarse sin cabeza (sin un escritorio gui y un monitor). Esta es una tarea de programación que pensé que era un refinamiento, pero no era necesaria para expresar la esencia del pianola que tenía en mente.
Había considerado usar una manivela para cambiar los colores, y tal vez tenerlos en un rodillo, pero eso presenta sus propias complicaciones. El servo es un poco ruidoso, pero funciona bien por ahora.
El piano reproductor actualmente solo está programado para tocar 4 notas. Esto se debe a que el servo solo se mueve 180 grados, la mayoría de las canciones infantiles se pueden tocar con solo 3-4 notas, y no quería que la rueda de colores se llenara de regiones de color, posiblemente confundiendo la cámara. Entonces, a través de una combinación de suerte musical y limitaciones técnicas, 4 notas está bien.
Recomendado:
Elige un jugador: 4 pasos
Elija un jugador: este instructivo lo guiará a través de cómo hacer un Arduino para tomar decisiones. Con solo presionar un botón, los LED se iluminarán en un patrón aleatorio. Después de unos segundos, se encenderá un solo LED. Esta es la decisión final que toma Arduino
Arduino "Primer jugador" para juegos de mesa: 4 pasos
Arduino "First Player" para juegos de mesa: este proyecto se inspiró en el " primer jugador " aplicaciones que mi esposo y yo usamos en nuestros teléfonos. Nos encanta jugar juegos de mesa y usamos " primer jugador " aplicaciones para decidir quién va primero. Decidí intentar hacer mi propia versión de Arduino
Temporizador de reacción para un jugador (con Arduino): 5 pasos
Temporizador de reacción para un jugador (con Arduino): en este proyecto, creará un temporizador de reacción que funciona con un Arduino. Funciona en la función millis () de un Arduino donde el procesador registra el tiempo desde que el programa comenzó a ejecutarse. Puede usarlo para encontrar la diferencia horaria entre cuando
Jugador del juego Pickcraft usando Arduino con Utsource: 6 pasos
Pickcraft Game Player usando Arduino con Utsource: este es un tutorial muy simple para aprender a hacer Pickcraft Game Player usando Arduino PickCrafter es un juego de clicker artesanal inactivo incremental que te permite tomar el control de un pico y profundizar en los biomas. ¡Incluso mientras está inactivo o sin conexión! Sólo sta
Juego Matrix Pong LED 8x16 (2 paletas por versión de jugador): 3 pasos
Juego de 8x16 LED Matrix Pong (versión de 2 paletas por jugador): Me han inspirado muchas variaciones del clásico juego de Pong implementado en Arduino utilizando una matriz de 8x8 LED. En este instructivo, te mostraré cómo construir mi versión favorita de Pong, que tiene dos paletas, delantero y portero, por jugador