You can learn a lot about tinkering with microelectronics, but now, thanks to Adrian Cruceru’s latest Raspberry Pi project, you can use microelectronics to learn how to play the piano. A Raspberry Pi Pico microcontroller drives his RP2040 Piano helper project and can be programmed to help students learn any song they like. Just follow the LEDs and press the corresponding key to play new songs on the fly.
The Pico controls a series of LEDs that line up with the keys on a keyboard (or piano). The LEDs illuminate on specific keys so the player knows which key to press next in the song. When not in use, it can also demonstrate a nice gradient effect. The Pico charts out songs by interpreting MIDI files to determine the note and length of time the note is played for.
To learn a new song, all you have to do is find a MIDI file for the song you want and run it through his converter. Songs can be selected from a browser window. You can have the song programmed to light up the keys at predetermined intervals or use the appropriate timestamps from the original song. This versatility makes it possible to gradually learn songs at your own pace.
To create the project, Cruceru uses a Raspberry Pi Pico module that's connected to a WS2812B LED strip. This strip is then adjusted into place above the respective keys on his keyboard. Each LED corresponds with a certain note (or key) so that the MIDI file will always cause the right note to be illuminated.
The code for this project was created from scratch by Cruceru using Micropython. Cruceru was also kind enough to make the project open source. If you want to get a closer look at the code and see how it works from the inside, check out the official RP2040 piano helper project page over at GitHub.
This is one clever Raspberry Pi project you should really see in action. To check out a video demonstration of the RP2040 piano helper, visit the original thread shared on Reddit or watch the video on YouTube. Also, be sure to follow him for more cool projects and any future updates on this one.