luces al ritmo de la musica con coreografia

hola, alguien sabe una forma facil y efectiva de hacer que las luces se muevan al ritmo de la musica como este video, que esta hecho a sangre, milisegundo a milisegundo y led a led, ¿sería posible hacerlo de otra forma mas rápida y sencilla?, gracias

Video de ejemplo

Estaba seguro que ya habías hecho esta pregunta y haberte respondido que no funcionaba el link... ::slight_smile:

Se me ocurre que se podría hacer un analizador de espectro y asignar distintas formaciones a cada banda (en lugar de mostrar las típicas barras), pero imagino que habría que usar un Mega no se si un Uno alcanzaría.

La FFT funciona con casi todo pero lo mejor es Teensy por la razón de que es mucho mas potente que un Arduino.
Lo que se ve ahi es un indicador de picos de tensión y no algo que muestre frecuencias como lo que gatul propone.

No @surbyte es algo más complejo, en realidad parece que el tipo programó cada efecto "a mano" y armó la secuencia sincronizando por tiempo. Creo saber exactamente lo que hizo, porque ya hice algo así sobre otra plataforma allá por los '80 pero no es momento de anécdotas.
Como lo mío es el sonido y la iluminación se me ocurrió ir por ese lado para automatizarlo porque al fin y al cabo un analizador es un vumetro dividido en bandas de frecuencias, y por supuesto trabaja por niveles de tensión, lo que permite tener distintos efectos para cada rango

Como no puedo ver el video, no puedo responderte @gatul.

Enlace corregido al video.

Bueno no se que ha hecho, tal vez picos. Se nota un delay pero es normal, entre el pico musical y el led.

No es automático. Armó las secuencias y luego calculó los tiempos para que se sincronicen con la música.

Horrible entonces, hablo del video y de la posibilidad de que así funcione el código.
Desde mi punto de vista una mentira.

Si haces algo, debe ser acorde a lo que esperas que haga.

Por lo menos filtros centrados en frecuencia o mezcla de pasaaltos y pasabajos combinados hubiera sido una mejor opción, si lo quieres hacer a la vieja uzansa o con FFT si lo quieres hacer con un micro, ni hablar con un DSP.

En el IDE hay 4 referencias a librerías FFT, la primera hay que descartarla si no tienes un Arduino Zero cosa que dudo tengas.
Las demás solo veo ejemplos con señales simuladas.
Habrá que probar sampleando y ver que tal se comportan las librerías.

@surbyte Depende, si quieres que haga determinados efectos programados o aleatorios en función de lo que "escuche" es una cosa, no es mas que un audiorrítmico sofisticado.

Si necesitas programar coreografías la cosa cambia. Lo normal es que tengas alguna forma de ingresar las escenas y sincronizarlas.

Son cosas muy diferentes.

En este caso, el de la consulta, sería el primer escenario que planteo y se resuelve como lo planteamos (porque en el fondo ambos dijimos lo mismo solo que vos lo detallaste un poco más :wink: ).

Digo nada mas y si dejamos que el interesado opine? Ya pasaron 7 días y 0 aporte.

Ah, no creo que le interese (como el 90% de los que postean y que jamás te enteras si al menos leyeron lo que le respondieron) :grin:

gatul:
Ah, no creo que le interese (como el 90% de los que postean y que jamás te enteras si al menos leyeron lo que le respondieron) :grin:

hola, antes de nada perdonadme por favor, es que quería montar algo antes de entrar a trabajar de lleno, esta feo decirlo pero ahora curro "siempre" y apenas tengo tiempo de respirar. Lo siento de verdad.
Como digo al principio y apuntais por aqui, todo esta hecho probando un encendido y un delay, vuelta al inicio del tema, encender otro led y delay, vuelta al principio del tema y asi milisegundo a milisegundo, es un latazo, por eso preguntaba por alguna otra forma de hacerlo, algun progrma o algo que analice el espectro y escriba un codigo de delay o una forma de hacer una secuencia y poner un contador con el tiempo de la cancion y marcar los momentos del encendido, no lo tengo claro y tampoco se si ya existe algo al respecto.
un analizador de espectro seria interesante pero no creo que al 100%, tampoco funciona en el uno que es el que tengo y mis conocimientos son muy basicos.
Gracias a todos y perdonadme, no era mi intención faltar al respeto a nadie, es que estoy muy agobiado en estas fechas. Un saludo y felices fiestas.

Hola @franci_es, me da gusto que enviarte el email haya ayudado a que vuelvas al tema.
Se entiende perfectamente que por tus tiempos las cosas y prioridades cambien.
El tema de la FFT o transformada de fourier, herramienta necesaria para que esto funcione digamos mas o menos apropiadamente, no es tan complicado.
Es una librería y por lo tanto ella hace el trabajo pesado.
El tema es que es un proyecto medio abandonado o no lo es? Es una pregunta para la que no tengo respuesta.
Sin embargo, recuerdo que nuestro amigo @lightcalamar (QDEP) hizo algo similar y le quedó muy bien.
Si mal recuerdo usó un integrado dedicado.

Prometo buscar su trabajo y tal vez su hilo te sirva de guía. Te adelanto que fácil no es, pero el documentaba muy bien sus trabajos. Asi que como mínimo tendrás para leer con paciencia y tal vez surja algo muy bueno.

Acá hay un muy buen trabajo hecho con un ATmega328 o sea el que usa el UNO o NANO pero no está programado estilo Arduino sino en C clásico.

DFT Audio Analyser © GPL3+

Otra opción y creo que puedes comenzar por acá antes que considerar la primera que te puse.
A medida que voy viendo alternativas se va estableciendo un criterio.

Este es un interesante proyecto con un NANO + OLED + modulo micrófono.

Las librerías las subo para tu análisis.
El código se llama spectrum y lo dejo tmb adjunto

/*
 * Arduino Spectrum Analizer
 * 
 * learnelectronics
 * 27 April 2017
 * black magic stolen from CBM80Amiga
 * 
 * www.youtube.com/c/learnelectronics
 * arduino1069@gmail.com
 * 
 * Fix_FFT library available @ https://github.com/kosme/arduinoFFT
 */


#include "fix_fft.h"                                  //library to perfom the Fast Fourier Transform

#include <SPI.h>                                      //SPI library
#include <Wire.h>                                     //I2C library for OLED
#include <Adafruit_GFX.h>                             //graphics library for OLED
#include <Adafruit_SSD1306.h>                         //OLED driver

#define OLED_RESET 4                                  //OLED reset, not hooked up but required by library
Adafruit_SSD1306 display(OLED_RESET);                 //declare instance of OLED library called display

char im[128], data[128];                              //variables for the FFT
char x = 0, ylim = 60;                                //variables for drawing the graphics
int i = 0, val;                                       //counters

void setup()
{
  Serial.begin(9600);                                 //serial comms for debuging
  display.begin(SSD1306_SWITCHCAPVCC,0x3C);           //begin OLED @ hex addy 0x3C
  display.setTextSize(1);                             //set OLED text size to 1 (1-6)
  display.setTextColor(WHITE);                        //set text color to white
  display.clearDisplay();                             //clear display
  analogReference(DEFAULT);                           // Use default (5v) aref voltage.
};

void loop()
{
  int min=1024, max=0;                                //set minumum & maximum ADC values
  for (i = 0; i < 128; i++) {                         //take 128 samples
    val = analogRead(A0);                             //get audio from Analog 0
    data[i] = val / 4 - 128;                          //each element of array is val/4-128
    im[i] = 0;                                        //
    if(val>max) max=val;                              //capture maximum level
    if(val<min) min=val;                              //capture minimum level
  };
    
  fix_fft(data, im, 7, 0);                            //perform the FFT on data
  
  display.clearDisplay();                             //clear display
  for (i = 1; i < 64; i++) {                          // In the current design, 60Hz and noise
    int dat = sqrt(data[i] * data[i] + im[i] * im[i]);//filter out noise and hum
    display.drawLine(i*2 + x, ylim, i*2 + x, ylim - dat, WHITE); // draw bar graphics for freqs above 500Hz to buffer
  };                                                
  display.setCursor(0,0);                             //set cursor to top of screen
  display.print("->Spectrum Analizer<-");             //print title to buffer
  display.display();                                  //show the buffer
};

Creo que hay que hacer simplificaciones pero funcionaría sobradamente bien.

fix_fft.zip (9.11 KB)

spectrum.zip (3.06 KB)

surbyte:
Hola @franci_es, me da gusto que enviarte el email haya ayudado a que vuelvas al tema....

un millón de gracias surbyte, como te comenté voy a tope y apenas tengo tiempo, la idea era montar unas luces de Navidad que al final me están dando problemas y ha quedado en un fracaso absoluto, lo he puesto en este hilo https://forum.arduino.cc/index.php?topic=719220.0 pensé en abandonar pero ya que me estas ayudando tanto tenia que hacer el esfuerzo, volveré a este hilo y lo leeré detenidamente creo que hay mucha información que digerir. De nuevo gracias y Feliz Año para todos.

Este proyecto es realmente muy bueno y sirve a tu idea.
DFT Audio Analyser © GPL3+

El único problema es que no esta programado en estilo Arduino pero es el problema que menos debe preocuparte.
Qué opinas?

Este otro link tambien esta muy bueno, aunque requiere alguna electrónica para implementarlo en una escala diferente a la de los paneles LEDs.