Hacking the Roli Lumi

The Lumi by Roli is a small keyboard controller with LED feedback. The Lumi is a product designed to teach you how to play piano by lighting up what keys to play. To take full advantage of the Lumi experience, customers are encouraged to sign up to a ongoing subscription service of lesson content.

Roli Lumi

I’m not interested in using this product for the purpose it is designed for, but I feel there is a lot of potential for controllers with LED feedback. I purchased the Lumi so i could use it for applications such as displaying a histogram of pitches, to control transposition of a polyphonic granular process or to visualize and edit a set of pitches used by a procedural generation process.

Short Risset-rhythm performance with the Roli Lumi
An example of a MIDI Implementation Chart from 1987 Yamaha KX88 (Sound on Sound)

The first hurdle is overcoming Roli’s lack of documentation. There was a time when ever manufacturer of MIDI gear had to include a standardized MIDI implementation chart. While the MMA still strongly recommends this practice, it appears to be optional. I was spared the hassle of reverse engineering the protocol after a bit of research that uncovered the Lumi’s system exclusive implementation here at this github link.

Unfortunately, the Lumi’s usefulness for my desired applications is hindered by a few technical issues.

The Lumi does not support a fully-decoupled LED mode. While it is possible to light up a key with a MIDI message, the onboard ‘local’ LED triggering will also light up a key whenever a key is pressed. There is no way to defeat this that I have found. There are four prominent color modes to choose from the Lumi software, but none support fully decoupled operation like the way a monome works. A monome controller is a simple device. It sends a message to a computer when a button is pressed, and it lights up an LED when the computer sends a message to the device. These operations are entirely decoupled. This allows for any kind of LED interaction to be programmed: momentary, toggles, radio groups, faders, etc…

The Lumi can be ‘tricked’ into this operation by instantly sending a LED off message as soon as a note on message is detected. The downside to this is it can cause flickering because the entire state of ‘lit’ LEDs has to be sent to the device on any state change. In other words, when a key is pressed, the LED has to be turned off, and then the lit state of the device has to be restored.

The Lumi has a pair of shift keys that shift the range of the keyboard in octaves. While this will adjust what MIDI notes are sent from the keyboard, the shift keys themselves do not send a message, making it impossible for software to track what octave the controller is displaying.

The four color modes define the overall color LED behavior of the Lumi (the color mode defines what colors are used when pressed or not pressed), but lighting a key up with a MIDI message is processed through whatever the current mode is. Due to this implementation, even though the LEDs are RGB, a MIDI message has no control over what actual color is displayed, this is determined by the mode. This means using color to display data such as a pitch histogram or intensity is not possible.

The Roli Lumi is a truly promising controller and I can’t legitimately fault it for not doing things it wasn’t designed to do, but the lack of a truly decoupled LED mode, limited implementation of LED feedback over MIDI and inability to communicate keyboard register unfortunately limit the possibilities for musical applications outside of Roli’s walled garden. This is a shame because the Lumi has a lot going for it as a controller, with polyphonic pressure and a bezel-less physical design with 24 keys that allows you to create extended controllers simply by adding more Lumi units (brilliant!). I wish that Roli were more sympathetic to the hacker community and a good first step would be to acknowledge that their product has utility beyond the piano lesson model they are laser-focused on.

Here is the Max patcher I use for controlling Lumi’s LEDs. The Lumi must be in Mode 4 for this to work correctly.

If you know a way around any the limitations I’ve outlined, please let me know!



Associate Professor, Electronic Production and Design, Berklee College of Music Opinions: my own

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store

Associate Professor, Electronic Production and Design, Berklee College of Music Opinions: my own