Introduction: Making the Spielatron (Robotic Glockenspiel)
We created this robotic glockenspiel from parts that we already had and made.
It is still experimental and is in version one.
The Spielatron is controlled by an Arduino which plays Midi commands sent to it from a PC.
Present limitations are
- It is monophonic ie can only play one hammer at a time.
- The servo speed limits either the beats per minute or the note length of the music eg you cannot play a semi quaver at 120 BPM.
Step 1: Find a Glockenspiel and Make Support Frame
We had a 40 plus year old glockenspiel that was rescued from a high school music department when it became surplus to requirements. It has sat in a cupboard all this time waiting for an opportunity to be used. It is a little knocked around and some of the keys are dodgy and give dull sounding notes, however, for the fun of making the project is did not warrant purchasing a new one.
The frame was made from 10mm thick plywood and is sized to fit the glockenspiel and to accommodate four pairs of RC modelling servos. The distance from the glockenspiel to the servo was determined to provide an arc so that the hammer head would strike the desired number of keys without hitting the tacks holding the keys in place. This worked out to be approximately 220mm from the centre of rotation of the servo to the centre of the keys.
Servo pair one strikes keys G5 through to G6.
Servo pair two strikes keys G#5 through to G#6.
Servo pair three strikes keys A6 through to G7.
Servo pair four strikes keys Bb6 through to F#7.
Step 2: 3D Print and CNC Rout Brackets and Set Up Servo Pairs - Picture 1
We had four old JR NES-507 servos plus two Hitec HS81 and two Hitec HS82 servos that were not in use. The HS81 & HS82 servos are similar enough to be used for the same purpose.
We 3D printed four brackets to mount the Hitec servos on and screwed these brackets onto the standard disc servo top provide with JR servos. As we print in ABS we usually print the files at 103% size to allow for shrinkage.
Next we routed four brackets to fit the disc tops of the Hitec servos out of 1.5mm plywood. These brackets are to support the hammers.
Step 3: 3D Print and CNC Rout Brackets and Set Up Servo Pairs - Picture 2
Step 4: 3D Print and CNC Rout Brackets and Set Up Servo Pairs - Picture 3
Step 5: Make Hammers and Attach to Servos - Picture 1
The hammers are made from 3D printed heads and 4mm bamboo skewers (available from your local supermarket). The heads are attached with cyanoacrylate glue and the hammer assembly is attached to the servo bracket with two cable ties on each. These were not initially fully tightened to allow for adjusting the length when setting up and testing.
Step 6: Make Hammers and Attach to Servos - Picture 2
Step 7: Electronics
First we 3D printed a mount for an Arduino Uno board which was attached to two of the servo support arms of the wooden frame. An interface board was routed to connect the eight servos to the Uno with their own separate 5V power supply. There was also a header for a micro SD adapter card with the thought of being able to play some midi files stored on the card as opposed to being sent from a PC. Presently we have only used the Spielatron with files sent from a computer.
Mount the interface board (shield in Arduino speak) on the Arduino and connect the servos in the following order:
- Rotational servo 1 to Arduino pin 2
- Hammer servo 1 to Arduino pin 3
- Rotational servo 2 to Arduino pin 4
- Hammer servo 2 to Arduino pin 5
- Rotational servo 3 to Arduino pin 6
- Hammer servo 3 to Arduino pin 7
- Rotational servo 4 to Arduino pin 8
- Hammer servo 4 to Arduino pin 9
Step 8: Electronics Interface Board - Picture 1
Step 9: Electronics Interface Board - Picture 2
Step 10: Arduino Code
Add the MIDI.h library to your Arduino programming environment and compile and upload the attached code to the Arduino.
Note line 81:
Serial.begin(115200); //use computer baud rate not the true midi baud rate of 31250
As commented, we are sending the Midi data to the Spielatron over a USB interface at a normal computer baud rate not the correct Midi baud rate of 31250 as none of our computers could easily be configured to this baud rate.
Also you will note that the code only deals with note on Midi events as the hammer must be raised immediately after lowering and cannot wait for a note off event to occur.
Step 11: Completed and Working
We will do a separate Instructable on how we compose and send Midi files from our PC to the Spielatron.