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.
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.
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