Wrecking ball player piano, with nokia ringtone to gcode converter.

Similar projects worth following
What better way to make music than to convert a home brew CNC sandplotter into a wrecking ball player piano? Software converts nokia ringtone files into gcode that can then be run through linuxcnc on the machine to absolutely butcher whatever music you desire.

The machine started life as a CNC sandplotter built along the same pattern as one I built for the Calgary Science Centre. After getting bored of drawing I wanted the machine to do something else and building an impractical player piano fit the bill. 

The CNC hardware is controlled Beaglebone Black running machinekit (LinuxCNC) connected to a protobotix PBX-BB breakout board. This is in-turn connected to four pololu style stepper drivers. 

The motion for the machine is four stepper motors with a hand machined aluminum pulley on each. There are no linear guides or anything fancy, you just spin the motors to adjust the length of each of the four strings to position the aluminum head anywhere in the 3d work envelope. I wrote a custom kinematics module for linuxCNC that handles the coordinate math so the machine thinks its a 3 axis conventional mill. 

The piano is a 30 key baby baby grand childs piano, acquired from a local thrift-store.  Originally I tried simply dropping the head directly onto the piano but found myself limited by gravitational acceleration. The solution was to build strikers that the head could hit sideways to sound a note.

As for the actual playing of music, my workflow is as simple as the rest of the machine: 

The processing sketch replaces each ringtone note with the real world  3d coordinates of the corresponding piano key. It also adds the appropriate lead in, lead out, strike and delay functions so the rhythm is mostly preserved. The code doesn't as yet have any error checking, but really running with no sanity checks  just adds to the spice of things. 

  • Zelda Theme - Triforce at speed

    dbynoe10/14/2018 at 01:57 0 comments

    Worked on the machine for a bit, mostly now I am trying to clean up some timing issues with linuxcnc. G93 sets the machine to inverse time feed mode, which should allow me to complete moves in a known time. Unfortunately at really high feed rates the machine falls behind and as a result it loses the tempo. Which is okay for single track songs like the above, but on more complex pieces I have to record the song in multiple parts and overlay the recordings. As a solution I am looking at breaking up my songs by level (so lower keys  on one track, and uppers on the next), vertical moves really slow the works down.

  • Carol of the Robot Bells

    dbynoe10/08/2018 at 05:02 0 comments

    I  made a few changes to the robot, on the hardware side I added an HDMI screen and a USB hub so I no longer have to SSH into the box to run it. Software side I cleaned up the delay code and made the timing and tempo better. This allowed me to multi track the song so that I can play more complex melodies. 

  • Some Construction Details

    dbynoe10/08/2018 at 01:46 0 comments

    This is the electronics bay, the stuff on top is for the 8" display. Below is the beaglebone black and my homebrew stepper breakout.

    Here is a closeup of the keyboard assembly, the parts are laser cut wood and acrylic, DXF files are on my github

  • Because Star Wars

    dbynoe10/08/2018 at 01:38 0 comments

    Getting closer, just need to fix the tempo, and that key that got broken. 

  • Gotta start playing piano somewhere...

    dbynoe10/08/2018 at 01:36 0 comments

    Its alive.. its alive.. ITS ALIVE! 

View all 5 project logs

Enjoy this project?



Mike Szczys wrote 10/09/2018 at 20:27 point

The velocity you can get with the cable robot is impressive! 

  Are you sure? yes | no

dbynoe wrote 10/13/2018 at 16:53 point


I usually run it at about 1 meter/sec, it can go faster but the issue becomes more about bouncing. The only thing keeping the cables taut is the weight of the head so once you get going really fast it starts flying around all over the place. I once managed to shoot the head about 30 cm ABOVE the towers. This also becomes an issue once it starts smashing into keys, so I compensate with a long lead in/out to give it time to settle. 

The head only weighs about 45 grams, and the motors are nema 17 3303's that are capable of 4.8kg/cm. So its just a little over powered. 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates