Musical Robot


automated orchestral chimes

dr.Godfried-Willem RAES


Robot: <Chi>

Orchestral chimes are a relatively new addition to the gamut of orchestral percussion instruments. They entered our orchestras in the early seventies of the 20th century. Generally they are made from aluminum staff material, in rods of ca. 6 to 8 mm in diameter. The number of chimes in a set ranges between 28 and up to 42. One of the main considerations in the design of this robot was to build it from materials we had in stock. The reason being that in the period of its conception and construction, we suffered from very serious insecurities with regard to the funding of the Logos Foundation by the Flemish government. So we had to avoid any kind of extra expenses.
From an acoustical point of view, orchestral chimes behave as freely vibrating rods. For our instrument we used bronze, mainly for the greater clarity of sound and the much larger ultrasonic spectrum. The fundamental resonant frequency of these rods is inversely proportional to the square of the length of the rod: With: f= fundamental frequency in Hz, L= length of the rod, k=diameter of the rod, Q= modulus of elasticity, r= density of the material. (Olson, p.77). The overtones are a non-harmonic series, given in the literature as:

Excitation of the chimes can be achieved in three different ways:

All different modes of excitation can be combined freely.

For the linear motion, we used a Dunkermotor, type BG65x50SI, rated for 24 V operation. Nominal rpm for this motor is 3090, as this, if it were to drive a threaded rod (M10 thread) directly, would lead to a pretty slow linear motion in the order of 10 seconds for the full glissando, we used a dented belt mechanism between the motor and the rod. Proximity sensors are mounted on both ends of the striking mechanism. The motor can be speed controlled and can move to the left or to the right. However, jumping from one spot to another is not possible. On reaching either end position, the motor will stop automatically. It is up to the user to reverse the direction of rotation. A command to make the motor move and go over and back between two given positions is also implemented. On cold boot, the robot will always perform a calibration and than return to the extreme left position. Users should never move the motorised slide by hand, as doing this will invalidate the calibration. Note that fast changes of motor speed may cause motor stalling and should be avoided.

We did not provide in a damping mechanism for the chimes. Thus users are warned that the sound may go on for much longer than the actual duration of the excitation.

Just like in the case of our <Tinti> robot, a nice and original feature here again is that the sounds it produces are extremely high pitched and their spectral components extend well into the ultrasonic range. We measured sound pressure levels up to 114 dBC in the frequency range between 25 and 35 kHz. (Note that the dBA scale cannot be used, as this is corrected for the characteristics of the human ear). This opened a wealth of musical possibilities when used in combination with our ultrasound based invisible instrument technology. In fact, the sensors we developed capture the ultrasonic components of the chimes very well and, due to the demodulation circuitry, can be brought into the audible range and even be modulated through gesture and movement. Quite magic in fact.

The idea behind the technology being very similar, the implementation for <Chi> however, came out quite different than what we did for <Tinti>. First of all, we used the PIC microprocessor on the midihub board to generate ultrasonic frequencies in the range 16 kHz to 38 kHz. The frequency can be modulated on the fly using pitch bend commands. The amplitude of the ultrasonic carrier signal used for demodulation can be controlled with controller #8. However, other than in <Tinti>, here we feed the ultrasonic carrier frequency directly into a multiplier circuit, thus circumventing the problem of finding suitable wide band ultrasonic transducers. Thus we perform frequency demodulation on the ultrasonic spectral contents of the chimes, transposing them into the audible range. If this feature is enabled on the <Chi> robot, the audible result is that all difference tones between the carrier frequency and the ultrasonic components of the chimes become audible through the build-in speakers. Although this robot has indeed a pair of loudspeakers, it should not be considered an electronic instrument at all, as all sound produced is inherently acoustic. By modulating the carrier frequency, pitch shifts of the chime sounds become possible. The effect is quite mesmerizing.

A final remark: as this robot makes use of ultrasonic frequencies it may show interference with our ultrasound based gesture sensing technology, as the acoustic frequencies used could interfere with the invisible instrument used for gesture recognition. So composers should make sure they test their concept thoroughly before attempting to use <Chi> in our sonar based gesture-interactive environment. If our radar equipment (PicRadar, Quadrada etc...) is used at the other hand, no interference can occur as its working principle is based on microwaves and not on sound. The same problem with interference can also happen if the <Chi> robot is used together with the <Tinti> robot, as <Tinti> is capable of emitting ultrasound as well.

Only when integrated in the context of our robot orchestra with its wealth of varied sensor systems allowing full interactivity with gesture and audio, this automate will become a true robot. That's after all were its destination is to be sought.

Midi Mapping and implementation:

This is the ambitus for the instrument:

Midi channel: 9 (10 if counting 1-16).

Controller 7: Volume control for the ultrasonic receiver and amplification. Setting this controller to zero will mute the amplifier.

Controller 8: Level for the ultrasonic carrier wave. This works by PWM on the carrier wave (range 0-50%). The effect is not spectacular, but using lower settings helps to reduce the spikes in the bell sounds. With a setting to maximum, the duty cycle will be 50% and the waveform symmetrical and reasonably sinusoidal.. With low values for this controller, leak through of the carrier frequency, if this is set to values within the human perception range, can be minimized.

Controller 30: sets the repetition rate for all components that have auto-repeat implemented, including the lights.

Controller 31: can be used to shift the frequency range of the carrier frequency in chromatic steps as shown in this table:

Value base frequency midi note note name
< 39 21096 Hz 136 E
39 2489 Hz 99 Eb
40 2637 Hz 100 E
41 2794 Hz 101 F
42 2960 Hz 102 F#
43 3136 Hz 103 G
44 3322 Hz 104 G#
45 3520 Hz 105 A
46 3729 Hz 106 Bb
47 3951 Hz 107 B
48 4186 Hz 108 C
49 4435 Hz 109 C#
50 4698 Hz 110 D
51 4978 Hz 111 Eb
52 5274 Hz 112 E
53 5587 Hz 113 F
54 5920 Hz 114 F#
55 6272 Hz 115 G
56 6644 Hz 116 G#
57 7040 Hz 117 A
58 7458 Hz 118 Bb
59 7902 Hz 119 B
60 8372 Hz 120 C
61 8870 Hz 121 C#
62 9397 Hz 122 D
63 9956 Hz 123 Eb
64 10548 Hz 124 E
65 11175 Hz 125 F
66 11840 Hz 126 F#
67 12544 Hz 127 G
68 13289 Hz 128 G#
69 14080 Hz 129 A
70 14917 Hz 130 Bb
71 15804 Hz 131 B
72 16744 Hz 132 C
73 17739 Hz 133 C#
74 18794 Hz 134 D
75 19912 Hz 135 Eb
76 21096 Hz 136 E
>76 21096 Hz 136 E

If any controller value setting in the midi note range higher than note 127 is send (controller values > 67) , the blue LED on the demodulation board will light up. The actual frequency generated will always be the base frequency with the 14-bit value send with the pitch shift command added. The default value for this controller is 76. The formula for calculating the frequency of the emitted sound is: f = (2489 * 2^((CC31 - 39)/12)) + (pbmsb * 128) + pblsb, wherein CC31 is the setting for controller 31 within the limits 39 to 76, pbmsb the 7-bit value sent with the pitchbend command and pblsb the low 7-bit value of the pitchbend command.

Controller 65: Mute switch for the amplifier section. Value 0 mutes the amplifier, any other value will turn it on.

Controller 66: Robot on/off switch. Sending this controller with value zero will power down the robot and reset all controllers to their default value. The glissando motor will return to its default extreme left position if it wasn't there already. The amplifier will be muted.

Controller 70: Calibrates the movement motor position and brings it to a left position. This command should only be sent on a full stop of all motors, i.e. no other midi motor related commands should be sent during this calibration. The parameter can be any non-zero value. This calibration also takes place automatically after a cold start of the robot. Do not use this controller in any sequenced composition. If the motorised sledge has been moved by hand with the robot turned on, this command must be send in order to recalibrate the positions.

Controller 71: implemented for hardware debugging: Motor OFF. Do not use this.

Controller 72: implemented for hardware debugging. Absolute run clockwise. Do not use this.

Controller 73: implemented for hardware debugging. Absolute run counterclockwize. Do not use this.

Controller 74: sets a left side start or end position for the motor carriage. By default this controller is set to 0, corresponding to extreme left. If a value is given larger then the setting for controller #75, the robot will correct this and set the controller to the value for controller #75 minus one. On reception of this controller the motor will move to the position given by the value of the parameter.

Controller 75: sets a right side start or end position for the motor carriage. By default this controller is set to the extreme right if calibration was performed. This setting may be smaller than 127. If a value for this parameter is send smaller then the value for controller #74, the robot will correct this and will set the controller to the value for controller #74 + 1. The setting for the right side position must always be larger then the position for the left side. The minimum value for this controller is 1.

Controller 76: sets the ramping speed for motor acceleration. Default startup value = 64. Minimum value =1. Note that ramping is never applied to slowing down.

Controller 123: All notes off, preserving controller settings and motor position. The motor will be halted.

Pitch bend: used to modulate the ultrasonic carrier wave. (All 14 bits are used as a unipolar unsigned 14 bit value). The frequency can be controlled between basefrequency (by default 21096 Hz) and basefrequency + 16384. So the upper limit for the ultrasonic frequency is 37480 Hz. With CC31 set to 39, the lower limit is 2489 Hz.

Status indicators on the PCB's:

Technical specifications:

Design and construction: dr.Godfried-Willem Raes

Collaborators on the construction of this robot:

Music composed for <Chi>:

Godfried-Willem Raes: 'Namuda Study #60 : The Passion of Chi' (2016)

Kristof Lauwers: new piece including Chi (2016)

Kristof Lauwers: 'Picradar Study for Chi' (2016)

Pictures taken during the construction in our workshop (in chronological order):

Robodies picture with <Chi>:

[waiting for nude model candidates]


Back to composers guide to the M&M robot orchestra.

Back to Main Logos page:index.html To Godfried-Willem Raes personal home page... To Instrument catalogue Go to Godfried-Willem Raes' homepage


Construction & Research Diary: