A robot that plays the synthesizer

Project description

This project aims to create an end-effector for the ABB140 that can push down the keys of a piano, and play a variation of different intervals. For this purpose, we had to integrate three servo motors that were programmed using a python script which runs raspberry pi pico board. In the end effector setup one of the servo motors was used to move the flange horizontally to the left or right and the other two servo motors were used for vertical movement similar to fingers to press the buttons on the keyboard as per the desired music composition. The robotic targets were set as per the mapped position on the MIDI keyboard and the music composition was designed using logic gates on grasshopper for three proposed positions along with the time intervals to optimize the sound output. The pins linked with the python script was then finally synced with the grasshopper script and the optocoupler.

Final setup

End-effector design description

The end-effector uses 3 servo motors, one for the 64 teeth gear that moves the horizontal rack, and two that spin the 18 teeth gears moving the vertical ”Pusher” racks up and down.

The length of the horizontal rack corresponds to the distance between 10 white keys (C to E –> 15 semitones).

The vertical ”Pusher” racks length is determined by the distance needed to push down a key and play a sound.

The dimensions of the chassis and the mounts of the 2 lateral motors, allow the horizontal rack to move by a distance of 2 white keys to the right and left, giving the end-effector 6 playable white keys without having to move the robotic arm. When a key that is out of range, the robotic arm will reposition.

Cross-section of the end-effector
Isometric view

Bill of materials

The parts for the chassis and the gears are all lasercut out of mdf panels. The racks are 3d printed.

Bill of materials

Logic description

Rack movement logic

There are two main logical steps required in order to play the keys. They are the rack movement and finger movement.

The rack movement has two signals. The first signal specifies whether or not the rack has to be moved in the first place. If yes, then the second signal specifies if the rack has to move left or right.

There are conditions within which the rack movement works as well. First one is that the rack moves a fixed distance to the left or right. This distance is determined by the spacing of the keys. The second is that the rack always returns to center position after playing the keys.

Finger movement logic

The finger movement has three signals. The first one specifies if the fingers need to be moved or not. The other two signals are for pressing the right and left key down respectively. If both the fingers need to be pressed down together, the signals are sent in parallel.

The fingers are pressed down a fixed distance which is determined by their height above the keys. They stay down for a fixed amount of time and retract back up into place.