Tabla de contenido:
- Suministros
- Paso 1: comprender el flujo
- Paso 2: Configuración del servidor - Ngrok
- Paso 3: Configuración del servidor - Node-Red
- Paso 4: Configuración del servidor - MQTT (Mosquitto)
- Paso 5: el código
- Paso 6: imprima el modelo 3D
- Paso 7: Montaje y soldadura
- Paso 8: reproduce algunos bucles con tus amigos
Video: Melodía: 8 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Junto a las múltiples ventajas y soluciones tecnológicas que permiten trabajar desde casa, persiste la dificultad de formular y crear soporte vital entre los compañeros de trabajo. MELODY es un dispositivo físico-digital que permite la creación de breves improvisaciones musicales colaborativas. Los compañeros de trabajo coordinan el tiempo y el dispositivo establece una jam session con giros y diferentes sonidos aleatorios. El primer participante establece un ritmo específico, después de lo cual cada participante agrega su propia sección musical correspondiente al ritmo establecido. Para que sea más fácil para los usuarios sin antecedentes musicales, el software les ayuda a mantener el ritmo muestreando sus clics y ajustándose al ritmo apropiado. La sesión termina después de unos 3 minutos cuando todos los participantes han terminado de grabar su parte.
¿Como funciona?
Melody se basa en el hardware ESP2866, que se comunica con un servidor Node-Red a través del protocolo MQTT. El dispositivo traduce las notas del jugador en una cadena de caracteres que se envía al servidor y desde el servidor a los otros jugadores. Esto permite que todos puedan tocar y escuchar la melodía sin interrupción de su conexión de red.
Melody tiene dos indicadores visuales principales. La primera es una tira de LED que le permite al jugador saber cuándo comienza el bucle y cuándo termina e indica si es el turno del jugador. El segundo es una pantalla LED en el centro del producto, que se utiliza para mostrar visualmente la melodía existente. Una cuenta regresiva de 3 a 1 indica que debe comenzar a jugar y una pantalla de tiempos indica al usuario cuándo y cómo quiere contribuir a la melodía del grupo. La grabación se guarda automáticamente en la nube de la empresa para su uso futuro.
Este proyecto fue diseñado por cuatro estudiantes del laboratorio de innovación de medios (MiLab) del Centro interdisciplinario Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar y Gad Stern. Con la ayuda de Zvika Markfeld, Netta Ofer y Michal Leschinsky y la orientación de Noa Morag y Oren Zuckerman.
gracias a Tom Granot por crear un excelente instructivo que me ayudó a aprender cómo implementar algunas de las cosas aquí (algunos de los pasos aquí están modelados a partir de este excelente instructivo).
Suministros
- impresora 3d
- ESP8266
- 7 botones
- Matriz LED 8X8
- Tira de LED WS2812B
- Amplificador I2S
- Conector de audio de 4 polos hembra de 1/8 "(3,5 mm)
- Resistencia 4X 1K
- Resistencia 1X3K
Paso 1: comprender el flujo
En este proyecto intentamos abordar algunos problemas:
- ¿Cómo podemos hacerlo en línea para que los jugadores puedan jugar al mismo tiempo?
- ¿Cómo podemos sortear las latencias de Internet y crear una experiencia perfecta?
- ¿Cómo podemos hacer que la música suene bien incluso para personas sin experiencia musical?
Sincronización y serialización de la música
Para resolver el primer problema, miramos el protocolo MIDI e intentamos usarlo, pero vimos que es más robusto de lo que realmente necesitábamos y también queríamos hacerlo simple para poder construir el primer prototipo funcional. Así que nos inspiramos en el MIDI e hicimos nuestro bucle musical representado por una cadena de números (del 0 al 5) multiplicado por el tamaño del bucle por los jugadores (explicaremos todas las matemáticas musicales más adelante).
En música, dividimos los ritmos en barras musicales. Cada compás es básicamente un segmento pequeño que elegimos usar 4/4 (es decir, 4 tiempos en un compás musical), el más común.
Luego, cada tiempo se divide en 4 ventanas de muestreo para que cada nota tocada se alinee automáticamente a una buena posición de c y también nos permita representar una canción como una cadena de números para enviar al servidor.
Para ser amigables con los jugadores sin experiencia musical, hicimos tres cosas:
- Limite la cantidad de teclas para que el jugador se concentre en menos opciones.
- Elegimos notas en la misma escala que se reproducen bien juntas para que no haya ningún sonido de disonancia.
- Cada pulsación se establece en la "ventana" del ritmo, por lo que la música del jugador se aliena al ritmo.
Protocolos de comunicacion
Entonces, una vez que entendemos la lógica detrás de la música, ¿cómo podemos comunicarla entre nuestros jugadores?
para eso, usamos MQTT, un protocolo de red de publicación-suscripción que transporta mensajes entre dispositivos.
cada jugador está suscrito a dos temas: el bucle (obtener el bucle más actual) y el turno (obtiene la identificación del jugador actual con fines de sincronización).
En su turno, cuando un jugador termine de tocar la melodía, presionará el botón ARRIBA y el bucle (el actualizado) se enviará al corredor de MQTT, que lo transmitirá a todos los jugadores en el canal de bucle.
este bucle permanecerá "inactivo" hasta que el bucle actual termine de reproducirse y luego lo reemplazará. por lo tanto, será transparente para el jugador. Además, dado que el nuevo bucle se guarda localmente en el dispositivo del reproductor, no hay latencia de Internet para la música, por lo que resolvimos el segundo problema.
Paso 2: Configuración del servidor - Ngrok
ngrok es un servicio de tunelización. Nos permite exponer un servicio que se ejecuta localmente (en nuestro caso, Node-RED) al mundo exterior, sin la molestia de configurar un servidor o tratar con registros DNS. Simplemente ejecute Node-RED en su computadora y luego ejecute ngrok en el mismo puerto en el que se ejecuta Node-RED.
Eso es todo: obtendrá una URL que puede usar para acceder a Node-RED desde cualquier parte del mundo, independientemente de la red a la que esté conectado.
Instalación y configuración
- Descargue ngrok para su sistema operativo desde aquí.
- Siga el paso en la página de descarga, hasta el paso "Enciéndalo".
- En el paso "Enciéndalo", cambie el 80 por 1883 - y el http por tcp como en,./ngrok tcp 1883 dependiendo de su
- Guarde la URL y el número de puerto (que ha visto en la imagen) lo necesitaremos, más adelante.
Paso 3: Configuración del servidor - Node-Red
La lógica del servidor del proyecto, Node-RED es un entorno de programación visual que le permite conectar varios software (¡y hardware!).
Aquí hicimos la lógica de la comunicación entre todos los jugadores (compartiendo y recibiendo los bucles y coordinando los giros)
Instalación de Node-Red
siga los siguientes pasos para cargar nuestro flujo Node-RED en su computadora local:
- Node-RED requiere Node.js, instálelo desde aquí
- instale Node-RED usando las instrucciones aquí.
Ahora que tiene Node-RED instalado, ejecútelo siguiendo las instrucciones del paso anterior y valide que pueda ver una página de lienzo vacía. Debe estar ubicado en
Ahora necesitará importar el flujo que usamos para este proyecto, puede encontrarlo aquí y simplemente presionar importar, agregar el archivo JSON y presionar Implementar.
Instalación de Node-Red:
si miras la imagen que se adjunta a este paso, puedes ver que tenemos 2 "acciones" principales, recibimos un bucle actual de uno de nuestros jugadores y luego lo transmitimos a todos los demás jugadores. Además, retransmitimos el nuevo turno a todos los jugadores. para que el juego se mantenga sincronizado.
Paso 4: Configuración del servidor - MQTT (Mosquitto)
Dado que Node-RED no tiene su propio agente MQTT, y necesitaremos comunicarnos con nuestros sensores y activadores a través de MQTT, usaremos un agente MQTT dedicado. Dado que Node-RED recomienda Mosquitto, este es el que usaremos. Consulte aquí para obtener información sobre MQTT y por qué se usa a menudo en proyectos de IoT.
Instalación y configuración
- Descarga Mosquitto desde aquí e instálalo, todo según tu sistema operativo.
- Normalmente, deberá seguir las instrucciones aquí para conectar Node-RED a Mosquitto. Sin embargo, si usó nuestro flujo, ya está preconfigurado para usted. Siempre que instale el flujo y Mosquitrro correctamente, y Mosquitto se ejecute en el puerto 1883 (en el que se ejecuta de forma predeterminada), debería funcionar de inmediato.
- Tenga en cuenta que esto significa que el agente MQTT y su servidor Node-RED se ejecutan en la misma máquina. Esto es útil para simplificar la comunicación dentro del sistema. Consulte la nota a continuación para obtener más información.
Supervisión del tráfico MQTT
Usé MQTTfx para monitorear el tráfico, es una gran herramienta con una GUI muy simple.
Paso 5: el código
puede encontrar el código en GitHub (con todos los archivos de datos y el config.h)
Dependencias:
antes de cargar el código en el esp2866, deberá instalar algunas bibliotecas:
- libmad-8266 (decodifica la música de SPIFF y en I2S)
- EspMQTTClient
- ESP8266WiFi
- Adafruit_NeoPixel
Cargue los sonidos al ESP usando SPIFF:
- sigue este gran instructable.
- agregue la carpeta de datos al directorio del código fuente.
- En el IDE de Arduino, en Herramientas, cambie el tamaño de Flash a "4MB (FS: 3MB TOA: ~ 512KB)"
- También en Herramientas Presione Carga de datos de boceto ESP2866
Configuración de los parámetros:
después de eso, vaya al archivo config.h y agregue los datos requeridos, como las credenciales WIFI y la URL y el puerto ngrok del paso anterior (verifique la foto adjunta como referencia).
p.s: todavía he agregado una función de conexión automática para ayudarlo a configurar los datos WIFI y ngrok desde su teléfono inteligente, ya que fue solo una primera prueba de concepto, me gustaría agregarla algún día.
Establezca la cantidad de jugadores que desee (este juego funciona mejor para 2-3 jugadores y, listo para usar, está cargado con una variedad de sonidos para 2 jugadores). pero se puede ajustar fácilmente para más:
para cada jugador, agregue otro flujo en el nodo rojo para publicar un bucle en un tema específico del usuario.
Además, puede editar el sonido musical cambiando esta matriz a sus sonidos personalizados:
aquí puede ver 3 tipos de instrumentos (Chrods para el jugador 0, Lead para el jugador 1 y Bajo para el jugador 2)
const char * rutas [NUMofNotes] = {"/blank1.wav", "/Chords_Am.wav", "/Chords_F.wav", "/Chords_C.wav", "/Chords_G.wav", "/Chords_Dm.wav", "/blank2.wav", "/Lead_C.wav", "/Lead_D.wav", "/Lead_E.wav", "/Lead_G.wav", "/Lead_A.wav", "/blank0.wav", "/Bass_C3.wav", "/Bass_D3.wav", "/Bass_F3.wav", "/Bass_G3.wav", "/Bass_A3.wav"};
Paso 6: imprima el modelo 3D
Para el primer paso, descargue el STL e imprímalo.
después de quitar los soportes y tal vez un poco de lijado (dependiendo de la resolución de la impresora)
pintarlo del color deseado
Paso 7: Montaje y soldadura
Así que básicamente aquí es donde ocurre la verdadera magia.
puede seguir estos esquemas y soldar todo junto.
Tenga en cuenta que puede cambiar la posición de los PIN, solo recuerde cambiarlo también en el código.
el A0 y el I2S están bastante fijos en su lugar:
ya que el A0 es para el puente de resistencia (usamos la diferencia en la corriente para saber qué botón de los 5 se presionó, similar a este Instructables.
el I2S tiene una codificación específica lo puedes encontrar aquí
Paso 8: reproduce algunos bucles con tus amigos
Recomendado:
Melodía de tono simple de Arduino: 3 pasos
Simple Arduino Tone Melody: Simple Arduino Tone Melody es una forma de comenzar con proyectos de Arduino porque solo va a cargar el código desde el software Arduino directamente sin tener que escribir nada
Mi intento en la melodía del zumbador del botón Arduino: 11 pasos
Mi intento en la melodía del zumbador del botón Arduino: En este tutorial, le mostraré cómo un botón puede iniciar una melodía. Durante el año escolar, muchas de nuestras vidas se rigen por campanas o tonos que nos avisan cuando es hora de irse o de irse. La mayoría de nosotros rara vez nos detenemos a pensar en lo diferentes que son
Cómo desmontar una computadora con sencillos pasos e imágenes: 13 pasos (con imágenes)
Cómo desmontar una computadora con sencillos pasos e imágenes: esta es una instrucción sobre cómo desmontar una PC. La mayoría de los componentes básicos son modulares y se quitan fácilmente. Sin embargo, es importante que se organice al respecto. Esto ayudará a evitar que pierda piezas y también a que el reensamblaje sea más fácil
Caja de melodía: 4 pasos (con imágenes)
Melody Box: ¡Hola! Hice una caja que tiene 3 botones con cada uno una melodía diferente.Cada melodía tiene un color de LED diferente y se enciende cuando se toca una nota.Cuando presionas el botón " adelante " botón la melodía va más rápido. Cosas que necesita:
Melodía de feliz cumpleaños con Circuit Playground: 3 pasos
Happy Birthday Tune usando Circuit Playground: aquí se explica cómo reproducir la Happy Birthday Melody en la placa compatible con Arduino de Adafruit Circuit Playground. Necesitaba algo pequeño para incrustar en una caja para una caja sorpresa de cumpleaños