💡 Mapeo de LEDs con MIDI Clock

Sincroniza tu light-show al BPM de la canción usando Arduino y WebMIDI API.

🚀 Ver pasos

1️⃣ Materiales necesarios

2️⃣ Esquema de conexión

Arduino        WS2812B
5 V      →     5 V
GND      →     GND
Pin 6    →     DIN (con 470 Ω en serie)

MIDI DIN-5 → RX pin 0 (HardwareSerial) o SoftSerial en pin 8/9.

3️⃣ Código Arduino (extracto)

#include <FastLED.h>
#define LED_PIN    6
#define NUM_LEDS  30
CRGB leds[NUM_LEDS];

byte midiClock = 0;
const int BPM    = 120;   // inicial
const int PPQ    = 24;    // pulsos por compás

void handleClock() {
  midiClock = (midiClock + 1) % PPQ;
  float pos = (float)midiClock / PPQ;          // 0..1
  uint8_t hue = pos * 255;                     // arco iris
  fill_rainbow(leds, NUM_LEDS, hue, 255/NUM_LEDS);
  FastLED.show();
}

void setup() {
  FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
  Serial.begin(31250); // MIDI baud-rate
}

void loop() {
  if (Serial.available() > 0) {
    byte data = Serial.read();
    if (data == 0xF8) handleClock(); // MIDI Clock
  }
}

4️⃣ WebMIDI Clock desde el navegador

navigator.requestMIDIAccess()
  .then(access => {
    const output = access.outputs.values().next().value;
    setInterval(() => output.send([0xF8]), 20.83); // 120 BPM
  });

Activa MIDI-USB en tu Arduino (por ejemplo, con Hairless MIDI) y selecciónalo como dispositivo.

5️⃣ Efectos visuales sincronizados