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

Public Chat
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. Remora is sponsored by CALE Screen manager for ESP32 displays.

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

  • Support for ESP8266

    Martin Fasani01/02/2020 at 07:18 0 comments

    Remora now supports ESP8266 too. Please follow instructions on this branch:

    Developers that had small Wemos D1’s and similar small boards in their labs asked for this.

    Is working at similar speed as the ESP32 with the only caveat that receiving frame per frame animations at high frame rate using udpx protocol from time to time is resetting. Maybe speed is not enough or we need to play with is Lwip wifi settings and find out:

    If someone wants to try it please give it a go!

    To send frame per frame video animations or simple UDP text messages search for:

    udpx Android application in google play store

    UPDATE: Check here Remora in action on a Euroracks setup

  • udpx family

    Martin Fasani12/16/2019 at 10:53 0 comments

    From start of december 2019, Remora has joined our udpx family of UDP Firmware. So it's possible also to stream Video to your Remora Led stripe or Led Matrix up to 484 pixels.

    This number comes out of the maximum transport unit (MTU) of the ESP32 that is around 1470 bytes. That's how much can get as a packet in the ESP32 and if you are not buffering it, and waiting for a second packet before rendering, you need to deal with that limit. We are not doing buffering since most of the people using this has not such a large stripes and we are overcoming this limit with another Firmware that is called udpx that supports zlib and brotli as decompression methods.

    Remora does not support compression at the moment so 484 RGB * 3 is 1452 bytes is very close to the MTU limit. If you want to check how is the binary protocol pixels please browse the documentation here:

    To stream video easily from an Android app, just search for udpx in google Play, or schedule the install here:

    Thanks for giving it a try!

  • Remora got easier: WiFi configuration over Bluetooth

    Martin Fasani12/09/2019 at 12:30 0 comments

    Bluetooth WiFi configuration

    Starting in December 2019 all the configuration in the master branches of the udpx Firmware line we create will be over Bluetooth. If you want to take advantage of this fast setup, there are detailed instructions in udpx repository. Please install one of this Applications in any Android device:

    1. udpx
    2. ESP32-WiFI-BLE

    The benefit of using udpx is that it has Bluetooth WiFi configuration and also multicast DNS discovery, so you can discover the IP address after some seconds connected. The benefit of ESP32-WiFi-BLE is that it let's you setup 2 access points, in case you have a show and need to use your mobile Hotspot. In a nutshell:

    1. Start the App, power up your Remora ESP32
    2. Config Tab -> Select your device starting with ESP32_MAC_49161
    3. Write your WiFi SSID / Password and hit Send

    That's it, if your WiFi name and password match you should be connected in some seconds. Have more devices? Just go back to point 2 and set up different controllers. You can also check this short video to get an idea of how to set it up with ORCΛ

    All this is available already in the master branch of Remora repository. Give it a try and give us your feedback. We are really willing to make IoT easier to configure, discoverable and get it down to earth. You should not be an electronic geek to use our Firmware, you just need to be able to compile it, that is already messy enough ;)

  • Added Wiki and M5StickC branch

    Martin Fasani10/06/2019 at 20:57 0 comments

    Please check this short Wiki to understand more about this project and how to customize it.

    Find in m5/rgb-udpx a branch ready to be compiled in a M5 StickC board. Has some nice features like:

    • WiFI manager
    • Beat detection (very simple type)
    • Display showing connection info
    • Ready for a RGB of 131 elements. Please edit PixelCount in Animate.h if you need more 

  • Testing Remora after flashing the Firmware

    Martin Fasani06/27/2019 at 08:44 0 comments

    Short video explaining how to test your Led stripe after flashing the firmware with Plataformio

View all 5 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

    UPDATE: After joining udpx family the updated version in master branch can be configured using Bluetooth with the udpx android application. It’s very useful if you are on the go and need to bring your addressable LEDs to a show.

    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

    This part can be also tested with the Android App, just check the ESP Tab on the send text section, try sending 550 to get a red half a second animation.

    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