Constructing a self-playing piano


I recently participated the seminal course for my Computer Science degree, the System Design Project. The course essentially is a group robotics project, with the vague theme of building an “assistive robot”, meaning practically as long as your idea had some robotic element (use of an actuator) it would work.

I suggested an idea of making a music sheet transcriber, where a performer would play which would be transcribed in real time by a drawing robot. This was an accepted idea, but due to not being robotic enough had to be changed last minute into making our own robotic piano.

I undertook the project management role for my team, and was also a participant in both the design of the piano itself (everything was 3D printed) and the design and implementation of the firmware.

This was such a great experience because practically everything I did and was involved in for the course I hadn’t done before. I’d never touched any CAD software or used C++ in the context of an ESP32. As such it was an incredibly challenging experience but also one where I felt I learned a lot.

For the design, I was responsible for researching pre-existing key designs and then replicating the keys we already had into other keys.

Three keys CAD

For the firmware, I was responsible for the upgraded audio system. This was an especially fun challenge and required some careful thought, given the limitations of the computers we were working with.

Home