Arduino MIDI RGB display interface

Here’s a MIDI keyboard interface project from SuLuLab. It uses an Arduino, MIDI Shield, addressable RGB LED strip based on chip HL1606, 5VDC 1.5A PSU for strip supply (USB port current is not enough), and the Arduino’s FastSPI_LED library.

MIDI messages from the keyboard (real or simulated on PC) enter the MIDI Shield’s MIDI IN and are presented to the Arduino serial port. The Arduino firmware interprets the MIDI messages NoteOn NoteOff, associates each key on the five octaves (60 keys) keyboard to a strip LED and lights it with color associated with the note. In the firmware to control the strip we used the FastSPI_LED library that allows you to address every single LED and turn the desired color (R, G, B).

For more details and to download firmware see the SuLuLab website and scroll to bottom of page for English version.

Join the Conversation


  1. With appropriate LED drivers, USB current should be more than sufficient. I suppose that is not possible when combining products from multiple vendors, where the electronics cannot be redesigned for efficiency.

  2. The LED drivers are the HL1606 integrated on the strip and they require only a small fraction of the PSU current. If you turn on only few LED at a time the USB current is sufficient but if you want to turn on all the LED in the strip (the MIDI Rainbow has a demo mode in which all the LED are turned on and the RGB value are scrolled through the strip) you need near 32*3*15 = 1440mA (32 RGB LED in 1 meter strip).

  3. @SuLuLab: Thanks for the numbers. My point is that it should be possible to run 96 LEDs on 500 mA or less using the appropriate PWM drivers. I have designed commercial USB devices with 140 LEDs and still had enough current left over for the PIC18 and MIDI and analog pots. Obviously, it would not be very easy to rewire the Rainbow circuit.

Leave a comment

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.