Automated Piano


For one of the last big projects at my university, me and some colleagues took on the challenge to create a self playing piano also called the PianoPlayer. The PianoPlayer is a stand-alone module that can be placed on any acoustic piano and uses MIDI to play the 88 keys and controls the sustain pedal with a seperate pedal motor module.

MIDI to solenoid
Pressing the keys on the piano is done with 88 solenoids. Each solenoid is responsible for one key of the piano. With the use of PWM it’s also possible to introduce velocity which gives the PianoPlayer a human feel. The timing of the keys and the velocity is determined via the MIDI protocol. The MIDI data is processed with the Arduino development environment. The goal is that any device that can output MIDI data to the PianoPlayer (like a keyboard or a computer with a MIDI interface), can play the piano it is placed on.

To control all solenoids from one tiny microcontroller, six PCBs (Printed Circuit Board) will be made which contains the analog circuitry to power each solenoid with 48 volts. On each of the six PCBs is also an isolated digital segment which consists of secret switching logic.

Adding sustain
Pianos have a pedal which is called the sustain pedal. This pedal makes sure that any pressed key will ring until the pedal is lifted. To automatically control this pedal, a windscreen wiper motor is customized both electrically and mechanically.

Final result
The PianoPlayer is still in development and is planned to be finished in June 2018. The PianoPlayer is already able to:

– Play 10 keys through MIDI
– Control the sustain pedal through MIDI


At this moment the PianoPlayer is already finished for months but I never bothered to update this page. The project is a great succes and works like a charm. The pictures below shows the complete setup of the PianoPlayer:

Complete setup of the PianoPlayer. 88 solenoids divided over 6 PCBs.
A close-up of one of the solenoid driver PCBs
A custom Arduino Uno shield for MIDI input and solenoid and sustain pedal control
The automated sustain pedal. A windscreen wiper motor is reused for this purpose!

DEMO – Flight Of The Bumblebee

The REAL final result
The last time I talked about this project the requirements for the Pianoplayer were:

– Play 10 keys through MIDI
– Control the sustain pedal through MIDI

Now we’ve improved this to:

– Play 88 keys through MIDI
– Control the sustain pedal through MIDI


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s