Penelope

Step sequencer for standalone Novation Launchpad and Arduino

Novation Launchpad

The Novation Launchpad (not the new Launchpad S) is a computer USB peripheral with buttons (it's not a MIDI controller) and it's cheaper than Monome :) It can't really do anything on its own, you need a computer with USB host capability and some software (for example Ableton Live) and then you can control the software with the Launchpad. But what if you don't want to use software or a big computer?

Raspberry PI

I originally wanted to use Raspberry PI to serve as a USB host computer and program a simple utility in Python that would communicate with the Launchpad - thus the name "Penelope": Python + Novation Launchpad + Raspberry PI - but then I decided the PI is too big and its performance is overkill anyway, but the name "Penelope" stuck.

Arduino

Arduino gives you a tiny chip you can program using a language based on C/C++. This particular board with a 8-bit CPU has 2kb of RAM and around 30kb of space for your compiled program and it fits inside the Launchpad chassis! The Launchpad uses a similar chip on its board: a STMicroelectronics 72f63bk2m1, but its only function seems to be to send out of the USB information about which pads are pressed and receive from USB info about which pads should light up.

Penelope

The 80 Launchpad pads are internally divided into 4 groups, because the Launchpad circuitry (shift registers controlled by SW_SL pin 6 "PC1/TDO") can only handle 20 pads at a time. Pins 19-22 ("PA4/ICAP1/IT1", "PA5/ICAP2/IT2", "PA6/OCMP1/IT3" and "PA7/OCMP2/IT4") control which of the 4 groups are currently selected. For each group there are 40 clock ticks (pin 10 "AIN7/IT8PB7" - BB_CLK), in each tick LED_DATA (pin 5 "PC2/USBOE") lights some of the pads (2 LEDs for each pad = 40 LEDs) and SW_DATA (pin 7 "PC0/RDI") reads which of the 20 pads in the active group are currently pressed down.

Penelope bypasses the original onboard chip and USB (USB is now only used for power and programming (via a FT232RL USB to serial adapter), the original chip is disabled by connecting the RESET and +5V pins), replaces the pad pressing and lighting functionality with Arduino, adds a simple step sequencer program on top of it and sends out MIDI data through the added MIDI out (some space had to be dremeled out for the MIDI in and out connectors). NOW it's a MIDI controller :)