Remora is a simple pseudo animation language that receives UDP short commands to launch LED Animations

Similar projects worth following
Remora will be a simple pseudo animation language to be a companion to Orca receiving UDP short instructions and sending animations to an addressable LEDs stripe. This animations will run entirely in an ESP32 controller and are initially aimed to be short so they can be triggered by Orca sequencer bangs

The idea of Remora is to make a very simple animator tool that can be triggered from any sequencer or software that is capable of sending UDP messages to an IP address and port. This does not need internet. It just needs to be in the same WiFi network than the sending software.

One very cool sequencer is Orca that enables you to use operators and send both notes to Midi and UDP messages at the same time.

This commands can be sent from ORCΛ using the ; operator

The supported commands are listed below. I intended to build them as a demo and not as definitive commands. The idea is that if you like Remora, you can fork it and use my initial animations as a model to make your own.

[0-359 HSL Color angle] is optional. If it's not sent as default will play last color. That is useful if you want to keep different animations running but trigger the colors universally. Default initial color is red.

6[ms duration *100][0-359 HSL Color angle] Launch animation right ex. 610 will take 100ms with color red 69240 900ms with color blue (Hue 240°)

4[ms*100][0-359° Hue] Launch animation left ex. 490 will take 900ms with red 4990 900ms with green (Hue 90°)

5[ms*100][0-359° Hue] Launch 2 chaser animations left to right and right to left

7[ms*100][0-359° Hue] Make Noise (random on/off) all along the stripe

8[ms*100][0-359° Hue] Turn all to desired Hue color and fade to black

9[ms*50] Short white flash

x[coordinate] Light only one Led to last color and leave it on. Ex. ;x1 will light the first led on the stripe

X[coordinate] Light only one Led and fade in 100ms to black

For some Orca examples please refer to docs/*.orca.

Switch to pure colors without doing any animation

r Switch color to red

b Switch color to green

g Switch color to blue

v Switch color to violet

y Switch color to yellow

w Switch color to white


Top of the case with ventilation holes

sla - 98.52 kB - 06/23/2019 at 19:11



Simple case to contain a mini ESP32 and possibly a small 220v to 5vdc converter. Preview:

sla - 209.16 kB - 06/23/2019 at 19:09



Electronics schematics

svg+xml - 61.69 kB - 06/19/2019 at 16:12


  • 1 × ESP32 Board The cheapest one since we will just use one data GPIO
  • 1 × Addressable LEDs WS2812B or similar I tested so far with one meter but the large is up to you (1 Mtr, 144 leds, about 10€)
  • 1 × 1 mtr Aluminium profile This is optional just to mount the Leds somewhere. I will be uploading in the next hours some STL models that will fit a small ESP32 TTGO board and 220v to 5 VDC converter
  • 1 × AC220V-DC5V 3A 15W (for half a meter) Additionally and if you use a Stripe larger as 72 elements then you will get a brown out error when many LEDs are on since USB delivers max. 500mA so we recommend to give power from an external source than USB

View all 2 project logs

  • 1
    Mounting and testing

    First of all I would recommend uploading the firmware in the ESP32.
    There are some important pre-requesites that the firmware must know before being flashed: 

    1.- Update lib/Config/Config.h.dist with your SSID/PASS and rename the file to Config.h

    2.- Update lib/Animate/Animate.cpp :

    const uint16_t PixelCount = 72; // Length of LED stripe
    const uint8_t PixelPin = 19; // GPIO19 Data line of Addressable LEDs

    Once it's seen in serial that it connects and it's listening for UDP requests in the port you can easily test it from command line using netcat :

    echo ";52" |nc -w1 -u ESP_IP_ADDRESS 49161

    If the ESP32 receives the message you will see it on Serial. If the Led stripe is connected like described on step 2 you should also see an animation -> <-

  • 2
    Soldier 3 cables

    Then soldiering the ground, 5V and making sure the data cable is connected to GPIO 19, plus additing an optional 220v to 5VDC converter will do it. Usually the data cable is on the middle, so soldiering 5V positive, ground and data to a PIN in the ESP32 is the only electronic schema that you will need to make it work.

    Note: For anything longer than half a meter Led stripe or more than 30 Leds, you may get a brownout error in Serial, which is normal since the USB provides only 500 mA. So at this point get a 220AC-> 5VDC converter and feed the Addressable LEDs without using the USB.

    That's it your new lighting fish is ready to be used and launch animations receiving short UDP messages!

  • 3
    Install Orca

    Optional step:

    Very easy to install you just need nodejs /npm in your laptop and it takes not more than a few minutes to get it running. That way you can easily make your first test, just add a :

    D  # delay #
     ;55240   That will send a crossed animation of velocity 5 (500ms) and Hue color 240 (blue) to your LED stripe

View all 3 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates