ShinerCore

Lights that dance to the music.

Put a sugar-cube-sized ESP32 board and an LED strip into a jacket, along a ceiling or around a bike. Tune every color and animation from your phone while you wear it, and let it find the beat.

  1. Flash a board on your Mac Download for MacShinerCore Flasher macOS 14 or later, board over USB
  2. Tune it from your phone Get it on the App StoreShinerCore Remote iPhone, iPad and Apple silicon Macs

Free and open source · buy me a coffee if it helps

The Play tab in ShinerCore Remote: a strip preview, power and brightness, presets 0 to 4, and a stack of three layers

Tune it while you wear it

Pick a core in ShinerCore Remote, and Play shows the whole show: power, brightness, presets and every layer, with a live preview of the strip drawn by the firmware's own animation code. Every control changes the strip as you touch it, so nothing needs reflashing.

The layer editor in ShinerCore Remote, with a grid of animations, two colors and a speed slider

Stack layers into presets

Each layer is an animation with two colors and a speed, and layers blend into each other, so a slow color wash can live under a fast sparkle. A stack of layers is a preset, and the button on the board steps through them.

The Setup tab in ShinerCore Remote, with the LED strip, microphone and mesh settings

It hears the beat

Give a core a microphone and it finds the beat of the music around it, and runs its animations in beats instead of seconds. Cores near each other share one beat grid over ESP-NOW and step through their presets together, so a whole camp pulses in time.

The Wiring tab in ShinerCore Remote, with a front button, LEDs, a knob, a button and a switch

Wire in your own controls

The Wiring tab draws your board and gives each pin a job: a switch that holds the lights, a button that steps through presets, a knob for brightness, or the LED strip itself.

Get started

  1. Get a board

    ShinerCore runs on these small boards from M5Stack:

  2. Put ShinerCore on it

    Plug the board into a Mac with a USB data cable and open ShinerCore Flasher. It installs the latest firmware, and later updates keep your presets and wiring.

    Download ShinerCore Flasher
  3. Get ShinerCore Remote

    For iPhone, iPad and Apple silicon Macs. Your core shows up in its list of nearby cores.

    Get ShinerCore Remote on the App Store
  4. Add LEDs

    Any WS2812-compatible strip works; they're also sold as NeoPixel. The Wiring tab shows where to connect it, and the strip guide helps you pick one.

On Windows or Linux, build the firmware with the Arduino IDE instead; the setup instructions are in the firmware's readme.

Why it exists

ShinerCore is what I reach for whenever something needs to glow. It’s a firmware for the very small ESP32 boards from M5Stack — an Atom is about the size of a sugar cube — and it drives the addressable RGB strips you sew into a jacket, tape along a ceiling, or wind around a bike.

What makes it worth having over yet another blinking-lights sketch is that nothing is compiled in. You connect from the companion app, and every knob — colors, animation, speed, brightness, even the order the LEDs are wired in — takes effect on the strip while you stand there and watch. Animations stack in layers with blend modes, so a slow color wash can live underneath a fast sparkle with each tuned separately, and a whole stack of layers is a preset that the button on the device itself steps through. Which is what you actually want at four in the morning, when the phone is somewhere in a tent.

The app's animation controls

Then it grew ears. Give a core a microphone and it listens to the room, finds the beat, and runs animations in beats per cycle rather than seconds per cycle, so the lights pulse with the music instead of near it. Once several of them are in the same place they gossip over ESP-NOW: they share a single beat grid — whoever hears the music most confidently gets to lead — and they walk through their presets together, so a whole camp of jackets breathes in time.

It’s all open source: the firmware, and the app that configures it, which is on the App Store and runs as a Mac app too. Photos of the things it ends up inside are on @shiner.core.

Open source

How it works inside: the Bluetooth protocol, beat detection, mesh sync and wiring.