This project allows you to learn a song note by note on the piano, by lighting up appropriate LED lights that correspond to each individual key on the piano.
- Learn: the piano will show which note should be played and then it will wait for you
- Listen: the piano will play the song and you will watch which notes it is playing
- Play: play any song and the piano will light up the notes played
The main unit is composed by an Arduino Leonardo and an USB-Host Shield. The piano is connected to the USB-Host Shield and a PC or mobile device running Synthesia is connected to the Arduino Leonardo.
Synthesia shows any MIDI song as falling notes, then the Arduino Leonardo board receives this information and lights up the appropriate LED. When you press a piano key, this information is sent back to Synthesia.
An android application is available to setup the key colors and effects.
- Arduino Leonardo
- Arduino USB-Host Board
- WS2812B Led Strip (144 led/m)
- 5V Power Supply
- 1000 uF capacitor
- 470 ohm resistor
- 3D Printer
A 1000 uF capacitor was added across the + and – terminals from the power supply to buffer sudden changes in the current drawn by the LED strip. A 470 ohm resistor was added to the LED strip data line to reduce the noise.
A LED support was designed using OpenSCAD in order to hold the LED strip, it is fully parametric and can be easily adjusted to other pianos or keyboards.
The box case holding the Arduino Leonardo and the USB-Host Shield was based on the work of Zygmunt Wojcik. It was modified to fit the USB-Host Shield connected above the Arduino Leonardo board.
The application allows you to select the key colors and the brightness. There are some predefined colors and sequences/effects, but it is also possible to set custom colors.
The application is automatically launched and connected, every time you plug the USB cable between your phone/tablet and the Arduino Leonardo.