Automatic Tubular Bells
This instrucuable explains the main steps I followed, to build the first prototype of a set of Automatic Tubular Bells I built in 2006. The automatic musical instrument features are:
- 12 chimes ( 12 tubular bells )
- Each chime plays one note, so it can play a full octave ( from C to B, including sustains )
- It can play up to 4 simultaneous notes ( so it can play 4 note chime chords )
- It is controlled through PC serial port (standar RS-232)
The instrument is composed of the control unit box and three towers. Each tower contains 4 chimes and two motors, every motor strikes two of the four chimes. All the towers are connected to the control unit box through a 10 wire-bus. The control unit is the responsible of powering each motor with the precise energy and speed to hit each chime, playing the notes that the software in computer sends to it. It is internally composed of three boards. The first board contains the microcontroller, which is an Atmel ATMega16, and the RS-232 communication elements. The second one contains the motor driver circuits, and the third one, the motor position controllers.
It took me nearly half year to finish this project. Next steps are general steps, with the most relevant information of the project construction process, minor details can be viewed on the pictures.
A video of the Automatic Tubular Bells:
Project main page:
Automatic Tubular Bells home page
- 12 chimes ( 12 tubular bells )
- Each chime plays one note, so it can play a full octave ( from C to B, including sustains )
- It can play up to 4 simultaneous notes ( so it can play 4 note chime chords )
- It is controlled through PC serial port (standar RS-232)
The instrument is composed of the control unit box and three towers. Each tower contains 4 chimes and two motors, every motor strikes two of the four chimes. All the towers are connected to the control unit box through a 10 wire-bus. The control unit is the responsible of powering each motor with the precise energy and speed to hit each chime, playing the notes that the software in computer sends to it. It is internally composed of three boards. The first board contains the microcontroller, which is an Atmel ATMega16, and the RS-232 communication elements. The second one contains the motor driver circuits, and the third one, the motor position controllers.
It took me nearly half year to finish this project. Next steps are general steps, with the most relevant information of the project construction process, minor details can be viewed on the pictures.
A video of the Automatic Tubular Bells:
Project main page:
Automatic Tubular Bells home page
Building the Chimes
First step was finding a good and cheap material to build chimes. After visiting some stores and doing some tests, I found that aluminium was the material which gave me the best sound quality vs. price relationship. So I bought 6 bars of 1 meter of length each one. They had a 1,6cm outer diameter and 1,5 cm inner diameter ( 1mm thickness ) Once I had the bars I had to cut them at the proper length to get the frequency of each note. I searched on the internet and found some interesting sites which provided me lots of interesting information about how to calculate the length of each bar in order to get the frequencies I wished (see links section). Needless to say that the frecuency I was looking for was the fundamental frecuency of each note, and as happens in nearly all instruments, the bars will produce other simultaneos frecuencies appart of the fundamental. This other simultaneous frecuenices are the harmonics which are normally multiple of the fundamental frecuency. The number, duration and proportion of these harmonics is the responsible of insturment's timbre.
The relationship between the frequency of one note and the same note in the next octave is 2. So if fundamental frequency of C note is 261.6Hz , the fundamental frequency of C in the next octave will be 2*261.6=523,25Hz. As we know that Western European music divides an octave into 12 scale steps ( 12 semitones organized into 7 notes, and 5 sustained notes), we can calculate the frequency of next semitone by multiplying previous note frequency by 2 # (1/12). As we know that C frequency is 261.6Hz and the ratio between 2 conescutive semitones is 2 # (1/12) we can deduce all notes frecuencies:
NOTE: the # symbol represents the power operator. For example: "a # 2" is the same that "a2"
Note Freq
01 C 261.6 Hz
02 Csust 261.6 * (2 # (1/12) ) = 277.18 Hz
03 D 277.18 * (2 # (1/12) ) = 293,66 Hz
04 Dsust 293,66 * (2 # (1/12) ) = 311,12 Hz
05 E 311,12 * (2 # (1/12) ) = 329.62Hz
06 F 329,62 * (2 # (1/12) ) = 349.22 Hz
07 Fsust 349.22 * (2 # (1/12) ) = 369.99 Hz
08 G 369.99 * (2 # (1/12) ) = 391.99 Hz
09 Gsust 391.99 * (2 # (1/12) ) = 415.30 Hz
10 A 415.30 * (2 # (1/12) ) = 440.00 Hz
11 Asust 440.00 * (2 # (1/12) ) = 466,16 Hz
12 B 466,16 * (2 # (1/12) ) = 493.88 Hz
13 C 493.88 * (2 # (1/12) ) = 2 * 261.6 = 523.25 Hz
Previous table is only for information purpose and it is not necessary to calculate the bars length. The most important thing is the relationship factor between frequencies: 2 for the same note in the next octave, and (2 # (1/12) for the next semitone. We will use it in the formula used to calculate the length of the bars. The initial formula which I found on Internet (see links section) is:
f1/f2 = (L2/L1) # 2
from it we can easily deduce the formula which will lets us calculate the length of each bar. As f2 is the frecuency of the next note we want to calculate and we want to know next semitone frequency: f2 = f1 * (2 # (1/12))
f1/(f1*(2#(1/12)))=(L2/L1)#2
...
L1*(1/(2#(1/24)))= L2
the formula is:
L2=L1*(2#(-1/24))
So with this formula we can deduce the length of the chime which will play next semitone, but obviously we will need the length of the chime which plays the first note. How can we calculate it? I don't know how to calculate the length of the first chime. I supose that exists a formula which relates the physical properties of the material, the size of the bar (length, outer and inner diameter) with the frequency it will play, but I don't know it. I simply found it by tuning it with the help of my ear and guitar ( you can also use a tuning fork or a PC sound card frecuencemeter to tune it ).
The relationship between the frequency of one note and the same note in the next octave is 2. So if fundamental frequency of C note is 261.6Hz , the fundamental frequency of C in the next octave will be 2*261.6=523,25Hz. As we know that Western European music divides an octave into 12 scale steps ( 12 semitones organized into 7 notes, and 5 sustained notes), we can calculate the frequency of next semitone by multiplying previous note frequency by 2 # (1/12). As we know that C frequency is 261.6Hz and the ratio between 2 conescutive semitones is 2 # (1/12) we can deduce all notes frecuencies:
NOTE: the # symbol represents the power operator. For example: "a # 2" is the same that "a2"
Note Freq
01 C 261.6 Hz
02 Csust 261.6 * (2 # (1/12) ) = 277.18 Hz
03 D 277.18 * (2 # (1/12) ) = 293,66 Hz
04 Dsust 293,66 * (2 # (1/12) ) = 311,12 Hz
05 E 311,12 * (2 # (1/12) ) = 329.62Hz
06 F 329,62 * (2 # (1/12) ) = 349.22 Hz
07 Fsust 349.22 * (2 # (1/12) ) = 369.99 Hz
08 G 369.99 * (2 # (1/12) ) = 391.99 Hz
09 Gsust 391.99 * (2 # (1/12) ) = 415.30 Hz
10 A 415.30 * (2 # (1/12) ) = 440.00 Hz
11 Asust 440.00 * (2 # (1/12) ) = 466,16 Hz
12 B 466,16 * (2 # (1/12) ) = 493.88 Hz
13 C 493.88 * (2 # (1/12) ) = 2 * 261.6 = 523.25 Hz
Previous table is only for information purpose and it is not necessary to calculate the bars length. The most important thing is the relationship factor between frequencies: 2 for the same note in the next octave, and (2 # (1/12) for the next semitone. We will use it in the formula used to calculate the length of the bars. The initial formula which I found on Internet (see links section) is:
f1/f2 = (L2/L1) # 2
from it we can easily deduce the formula which will lets us calculate the length of each bar. As f2 is the frecuency of the next note we want to calculate and we want to know next semitone frequency: f2 = f1 * (2 # (1/12))
f1/(f1*(2#(1/12)))=(L2/L1)#2
...
L1*(1/(2#(1/24)))= L2
the formula is:
L2=L1*(2#(-1/24))
So with this formula we can deduce the length of the chime which will play next semitone, but obviously we will need the length of the chime which plays the first note. How can we calculate it? I don't know how to calculate the length of the first chime. I supose that exists a formula which relates the physical properties of the material, the size of the bar (length, outer and inner diameter) with the frequency it will play, but I don't know it. I simply found it by tuning it with the help of my ear and guitar ( you can also use a tuning fork or a PC sound card frecuencemeter to tune it ).
The Three Towers
After cutting the bars to the proper length, I had to construct a support to hang them. I made some sketchs, and finally built these three towers you can see in the pictures. I hung four chimes on each tower passing a nylon wire through the holes I did near the top and the bottom of each chime. I had to drill holes on the top and the bottom because it was necessary to fix chimes on both sides to avoid they oscillate without control when being struck by the sticks. The precise distance to place the holes was a delicate matter and they had to coincide with the two nodes of vibration of the fundamental frequency of the bar, which are at 22.4% from the top and the bottom. This nodes are the no-movement points when the bars oscillates at it's fundamental frequency, and fixing the bar at these points should not affect them when vibrating. I also added 4 screws on the top of each tower to allow adjusting the tension of each chime's nylon wire.
The Motors and Strickers
Next step was building the devices that move the striker sticks. This was another critical part, and as you can see in the pictures, I finally decided to use DC motors to move each striker. Each motor has the striker stick and a position control system attached to it, and is used to hit a pair of chimes. The striker stick is a piece of bike spike with a black wood cylinder at the end. This cylinder is covered with a thin auto-adhesive plastic film. This combination of materials gives a soft but loud sonority when striking the bars. In fact I tested some other combinations, and this was the one which gave me the best results ( I would be grateful if someone lets me know a better one ) . The motor position control system is an optical encoder of 2 bits of resolution. It is composed of two discs: one of the discs rotates solidary to the stick and has a black & white codification printed on its bottom surface. The other disc is fixed to the motor and has two infrared CNY70 emitter-receptor sensors which can distinguish the black and white colour of the other disc, and so, they can deduce the position of the stick ( FRONT, RIGHT, LEFT and BACK ) Knowing the position allows the system centering the stick before and after striking a bell what guarantees a more precisse movement and sound.
Building the Control Unit Hardware
Once I had finished the three towers, it was time to build the control unit. As I explained at the beginning of the text, the control unit is a black box composed of three electronic boards. The main board contains the logics, the serial communication adapter ( 1 MAX-232) and the microcontroller (an ATMega32 8 bit RISC microcontroller ). The other two boards contain the circuitry needed to control the position sensors ( some resistors and 3 triggers-schimdt 74LS14) and to power the motors ( 3 LB293 motor drivers). You can take a look to the schematics to get more information.
You can downlad the ZIP with the schematichs pictures in the downlad area.
You can downlad the ZIP with the schematichs pictures in the downlad area.
Downloads
Firmware and Software
The firmware has been developed in C, with the gcc compiler included in the free WinAVR development enviroment ( I used programmers notepad as IDE). If you take a look to the source code you will find different modules:
- atb: contains the "main" of the project and the system intialization routines. Is from "atb" where other modules are called.
- UARTparser: is the module with the code of the serial parser, which takes the notes sent by the computer through the RS-232 and converts them into commands understandable for the "movements" module .
- movements: converts a note command recived from UARTparser, to a set of different simple motor movements in order to strike a chime. It tells to the module "motor" the sequence of energy and direction of each motor.
- motors: implements 6 software PWM to power the motors with the precise energy and the precise duration set by the "movement" module.
The computer software is a simple Visual Basic 6.0 application which allows the user entering and storing the sequence of notes which compose a melody. It also allows sending the notes through the PC serial port and listening to them played by the Atb.
If you want to check out the firmware you can download it in the download area.
- atb: contains the "main" of the project and the system intialization routines. Is from "atb" where other modules are called.
- UARTparser: is the module with the code of the serial parser, which takes the notes sent by the computer through the RS-232 and converts them into commands understandable for the "movements" module .
- movements: converts a note command recived from UARTparser, to a set of different simple motor movements in order to strike a chime. It tells to the module "motor" the sequence of energy and direction of each motor.
- motors: implements 6 software PWM to power the motors with the precise energy and the precise duration set by the "movement" module.
The computer software is a simple Visual Basic 6.0 application which allows the user entering and storing the sequence of notes which compose a melody. It also allows sending the notes through the PC serial port and listening to them played by the Atb.
If you want to check out the firmware you can download it in the download area.
Downloads
Final Considerations, Future Ideas and Links....
Despite the instrument sounds nice, it is not fast enough to play some melodies, in fact some times it desynchronizes a bit with the melody. So I am planning a new more effective and precisse version, because time precision is a very important matter when we are talking about musical instruments. If you play a note with some miliseconds advance or delay your ear will find something strange in the melody. So each note has to be played in the precise moment with the precise energy. The cause of these delays in this first version of the instrument is that percusion system I have choosen is not as fast as it should. The new version will have a very similiar structure, but will use solenoids instead of motors. Solenoids are faster and more precisse but they are also more expensive and dificult to find. This first version can be used to play simple melodies, as stand alone instrument, or in clocks, doorbells ...
Project main page:
Automatic Tubular Bells home page
A video of the Automatic Tubular Bells:
YouTube video of the Automatic Tubular Bells
Links
In this sites you will find allmost all information you'll need to build your own chimes:
Making Wind Chimes By Jim Haworth
Making Wind Chimes By Jim Kirkpatrick
Wind Chimes Constructors Message Group
Project main page:
Automatic Tubular Bells home page
A video of the Automatic Tubular Bells:
YouTube video of the Automatic Tubular Bells
Links
In this sites you will find allmost all information you'll need to build your own chimes:
Making Wind Chimes By Jim Haworth
Making Wind Chimes By Jim Kirkpatrick
Wind Chimes Constructors Message Group