Using many Novation Launchpads as a display for lyrics
Switch branches/tags
Nothing to show
Latest commit e5d88b1 Jun 27, 2013 @freenerd freenerd Add firmware

Expensive LED Scrolling Strip


This is a script that shows lyrics on several Novation Launchpad S. It uses the built-in scrolling functionality of the launchpad, but delays and offsets the messages to show them scrolling over many pads. To enable offset to make the text start in the middle of the display, we patched the Launchpad firmware.

The software was developed by @freenerd at Music Hack Day Barcelona 2013 with lots of help of Ross from Novation, who wrote the firmware patch. Also the synced lyrics came from MusixMatch.

A video demonstration can be seen here:

Also for reference, the project lives here:


  • 1-16 Novation Launchpad S (original Launchpad will not work, since it has no text scroll)
  • Ruby 1.9.3
  • Portmidi

Installation & Setup

Install portmidi. If you are on a Mac and have Homebrew, do brew install portmidi.

To install all the dependent gems, use bundler with bundle install.

Connect all the Launchpads you have (i hope it's many!) to your computer.

We use a patched Launchpad S firmware to make the text not start at the beginning, but in the middle of the display. If you don't want to patch your Launchpads, comment out the offset line in the marque of expensive_led.rb.

To patch the firmware, Novation wrote about it here and the Firmware is in this repository as a file with the name Launchpad_S_expensive_led_firmware.syx. The new firmware only adds the new offset CC code to the text scroll command.

Every Launchpad needs a unique sequential device id. To do this, while connecting each Launchpad hold down the session, user1, user2 and mixer buttons. You can then choose the ID of the Launchpad via the top yellow buttons, with 1 in the top left corner and 16 in the bottom right.

Next: run it!


To run, you obviously need text to be displayed, together with timing information. You can either fill them by hand in the TextScrollerInput.load_lyrics_test method or load a file via the TextScrollerInput.load_lyrics_file method. As an example for a file, look at the daftpunk_harder.json which has the first lines of the lyrics, as also shown in the demo video.

You can also use the websockets, as explained below.

If you want to have music played along the lyrics, uncomment the lines at the bottom of the file. This will only work on Mac, since it uses the afplay tool. You have to provide the audio file yourself.

Once setup run ruby expensive_led.rb

More explanation

This only works with the Launchpad S, since the original Launchpad 1 doesn't have a built-in text scrolling functionality.

The text scrolling is well-explained in the Novation Launchpad S Programmers manual. Check it here:

We patched the firmware. You can also use it unpatched, but then the lyrics always start to scroll from the first launchpad with no text visible when each lyric line starts.

Websocket support

We also implented websocket support on the basis of SocketIO. You can enable it by uncommenting some code on the bottom of the file. The client respnds to events of 'linechanged' with the structure {"lyrics": "Your line to display"}.