School of Arts

Artistic Research Project

<Synchrochord>
an automated monochord


dr.Godfried-Willem RAES
2011-2012

 

[Nederlandstalige versie]



<Synchrochord>


The first bowed instrument robot we designed was <Hurdy>, an automated hurdy gurdy, built between 2004 and 2007. The building of that robot had many problems and our attempts to solve these have lead to many new ideas and experiments regarding acoustic sound production from bowed strings. Between 2008 and 2010 we worked very hard on our <Aeio> robot, where we used only two phase electromagnetic excitation of the twelve strings. Although <Aeio> works pretty well, it can not serve as a realistic replacement of the cello as we first envisaged it. The pretty slow build-up of sound was the main problem. The cause being the problematic coupling of the magnetic field to the string material. Thus we went on experimenting with bowing mechanisms until we discovered that it is possible to excite the string mechanically synchronous with the frequency to which it is tuned. For such an approach to work well, we need a very precize synchronous motor with a very high speed. Change of speed ought to be very fast, thus necessitating a low inertia motor as well as a fast braking mechanism. Needless to say, but the motor should also run as quietly as possible. To relax the high speed requirement a bit, we designed a wheel mounted on the motor axis with ten plectrums around the circumference. Thus for every single rotation of the spindle, the string will be plucked ten times. Follows that in order to excite a string tuned to 880Hz, we need a rotational frequency of 88Hz. Or, stated in rotations per minute: 5280 rpm. The motor type ought to be a synchronous reluctance motor, since this type has no slip and can be frequency controlled with high precision. Fortunately we could dig up a suitable precision motor made by Eastern Air Devices. It's a spare part, custom made for an American military airplane.

Since the tuning of the string is very critical, we did strive at making the robot autotuning. Such a mechanism entails yet another motor specification problem. The tension on the string obtainable from the motor ought to be at least 600N. Such force values indicate the use of some kind of gears as well as a motor with slow speed and very high starting torque. This brought another type of motor we had on our shelves into sight: a General Electric synchronous inductor motor. The principle connection diagram is: Its torque (moment) is specified as 150 Oz.In., the anachronistic imperial equivalent of 1.059 Nm in standard SI units. This motor is used to drive, via an intermediate 1:10 dented wheel construction, a worm gear -horizontal in the drawing- without backlash, the large wheel being connected to the 12 mm take up spindle for the string. The reduction ratio of the worm gear is 1:4. The maximum force, leaving out all losses, we could have available to excert on the string now is 6.6 kN. We estimate that the sum of losses suppers up more than half of this force. Designing an autotune mechanism means that we also need to provide a sensor to measure the string pitch accurately. For strings made of ferromagnetic material, an inductive sensor or a coil wound on a permanent magnet can be used, but if we want to use other types of strings, either optical sensing or a contact microphone is needed. During the tuning procedure, the string has to be excited. Either the motor-exciter has to run at its lowest possible speed, just plucking the string at its free resonant frequency, or we can use the build-in feedback mechanism if ferromagnetic strings are used. As an electromagnetic string exciter, we used a synchronous shorted cage motor from which we removed the rotor completely. The string comes to run through the circular hole left open now. An extra bonus of this autotune approach is that it now becomes possible to apply vibrato on the string sound during normal operation. However, this makes it essential that the processor steering the string exciter and the processor called in for the autotuning mechanism talk to each other..
The circuit for the autotuner looks like:

In the circuit the pick-up element is first amplified and then fed to a TTL buffer with Schmitt-trigger inputs. The square wave that results is connected to the hardware interrupt pin (INT0) on the PIC microprocessor, where a counter is programmed in the interrupt handler to measure the exact frequency. The preamplified signal from the pick-up is also presented to the input of the tacho (LM2907). This component outputs an analogue voltage proportional to the frequency. This analog voltage is presented the the A0 analog input of the PIC. Before sending any commands to the motor, the PIC software always checks both the values on the analog input with the values of the frequency counter. Only when these are consistent, the motor will enter the control loop. We designed this redundancy in as a safety measure, since breaking strings can be pretty harmfull, both to the robot as well as to the people using it. It should be noted that in fact, frequency measurement is more precize in the tacho approach then it is using the counter. Since the gate time for the counter is 1 second, the count value will inherently be plus or minus 1 count. For frequencies we are dealing with here, this entails a precision worse than 2%. The tacho at the other hand is sampled at 10 bits, a much better precision.
Once tuning is completed, the microcontroller will continue to monitor string frequency and send out the data via its midi-out port. A midi controller (nr.80) allows users to choose the messages send. Circuit elements drawn enclosed in a yellow block, are mounted outside the printed circuit board.

The basic (and default) midi note mapping is:

This is a mapping only using octave overtones. It minimizes the inharmonicity of the string. An alternative mapping is:

As one can tell from this, the lowest octave is again played as fundamentals, whereas for higher notes string excitation makes use of overtones 2 to 5 or 6. The thirths are left out for they tend to be too much out of tune. As can be read from the note range, we could also have implemented only 6 or 7 frets without loosing possible high notes, but we would have a gap in the bass.

Since <SynchroChord> was designed to be a fretted instrument, we had to design an automated neck and fingerboard. Starting from the theoretical design rules and taking into account that practical values for the fret sizes will have to be somewhat smaller in order to account for the added string tension caused by shortening the strings under pressure, we could calculate the minimum stringlength required to meet technical considerations. If we plan to use Blacknight solenoids as pushers for the frets, taking into account their smallest mounting size (42mm), the total string length cannot be taken any shorter than 1400 mm. The frets are designed to be adjustable, such that if one wishes to do so, other tunings than standard EQ are possible. The 'fingering' solenoids are mounted on a square stainless steel tube 25 x 25 x 3 mm with counterplates such that they can be moved to an optimum match with the actual fretting. These solenoids use conical return springs, essential since they have to operate in a horizontal plane. For the fingers we used M4 rubber vibration dampers with an external M4 thread. These type do not have the usual metal counterplate. Note that with this solenoid assembly it became perfectly possible to implement finger vibrato, by modulating the voltage to the solenoids after striking the frets.

The string is attached to the center of a membrane resonator made of 0.5mm thin stainless steel mounted on a 40cm diameter hub. The principle is well known from asiatic instruments such as the gopi yantra or ektara. This changes the acoustic properties of the string quite a bit from their usual behaviour. Here the sense of the string vibration is under a straight angle to that of the membrane vibration. After research performed and publisked by C.J.Adkins (1981), this arrangement would cause the string to sound at twice its nominal pitch. So the mechanism works as a frequency doubler in a way. Our experiments show clearly that this does not fully hold, although it is true that the power spectrum of the string contains a very strong octave component next to many non-harmonic components.

The constructional parts for this robot are all made from welded stainless steel. The instrument is mounted on a wheel base, as most of our music robots. In this case we went for a sturdy three wheel construction. The wheels are in fact double wheels with yellow polyurethane tires. Only the back-wheel can rotate in a horizontal plane.

The design of working circuitry for the string motor driver (exciter) did cause a lot of headaches. The problems were related to malfunctioning H-bridge drivers (IR2104 chips) on the one side, and than the problems caused by the fast deceleration required from the motor spindle.

 

The circuit and the motor controller (an IB106) generates two waves, 90 degrees out of phase, at a frequency 1/10th of the required pitch. One input of the microcontroller is connected to a sensor measuring the actual rotational speed. Any errors are regulated by the microcontroller. The motor frequency signal is also output to the two 3W white LED's working as a strobe light on the spindle. The frequency generator makes use of 'old' technology: the infamous intel counter chip, the 8254. This way the precision could be made lot better than in the first versions using the mircrocontroller to generate the phase shifted clock for the motor. A Microchip 18F4620 was used for the microprocessor:

To improve response to changing speeds, we leave the motor running for a while also after receiving a note off. The motor will come to a complete standstill only after reception of a power down command. (Controller 66 with value 0). If it is envisaged to use <Synchrochord> in other tuning systems, not only the frets have to be adjusted but also the frequency lookup table in the firmware for this microcontroller.

The damper, mechanically realized with a tubular solenoid, is controlled by yet another PIC microcontroller, an 18F2525. The damper is activated on reception of the note off command for the string. The noteoff-release value controls the time the damper stays in contact with the string after a note-off. This time interval is interrupted on reception of a new note on request for the same string. The damping force can be controlled as well. By setting controller 64 to %true, the damper mechanism can be disabled. On startup the mechanism is always enabled. Note that none of the damper related controllers (33,34,35,36) have an effect as long as sustain is on. The microcontroller however will store any values send for these controllers such that they will be in effect as soon as sustain (64) turns false. The power down command (controller 66) resets all damper controllers to their default startup value.

Musically <Synchrochord> sounds quite a bit like a mediaeval Tromba Marina. A bit harsh in sound at times. The historical trumpet marine however, did not have any frets and its sounds were restricted to the high overtone series of the single gut string. On our instrument, not that many overtones can be produced due the the fixed position of the exciter with respect to the sounding string length. The fingered vibrato on this instrument came out to be very usefull. It certainly can be duplicated on just about any fretted instrument. Also, as the attack force can be controlled 'left hand only' playing becomes perfectly possible with very good dynamic control. On large interval jumps the behaviour of the synchronous plectrum driver is a bit sluggish due to motor inertia and thus the instrument is best suited for relatively slow moving string bass parts.


Midi implementation and mapping: [under development, features in white text are not yet implemented, features in purple are only implemented for advanced users and for instrument development and research. None of these controllers should be used in sequenced files ]

   
  • Midi note range: 39 - 81 (up to 87 implemented but shaky). Velocity implemented: steers plucking depth.
  • Note Off commands are required (dampers and motor brake) . Release value implemented.
  • Channel after touch: implemented (steers plucking depth during a note)
  • Controller 7: Volume controller for the ebow mechanism (tuner board) Setting this controller to a non-zero value automatically enables the ebow. This is implemented in the firmware, but as we did find no space to mount the e-bow mechanism, it is as yet without function..
  • Controller 20: Set string tuning [defaults to 39] (tuner board)
  • Controller 22: Autotune command (one shot, tuner board) - do not use in a sequence!
  • Controller 23: Enable e-bow mechanism (tuner board)
  • Controller 30: Release time control for finger solenoids (pulse/hold board)
  • Controller 31: Finger vibrato frequency (Pulse/hold board)
  • Controller 32: Attack striking force for finger solenoids, Duration of attack pulse. (Pulse/hold board)
  • Controller 33: Attack duration for the damper solenoid (Hub-board)
  • Controller 34: Release time control (hold time) for damper solenoid (Hub-board)
  • Controller 35: Attack force for the damper
  • Controller 36: Holding force for the damper
  • Controller 42: String Vibrato (tuner board). This influences both depth and speed. The larger the depth, the slower the speed will be. Value 0 switches this vibrato off.
  • Controller 51: Adjust tuning [64= stop, <64= lower pitch, > 64= higher pitch] (tuner board), Be carefull with this controller as it is easy to break the string. Values are cumulative! The parameter sets the time for the motor to run. Thus sending two times CC51, value 96 is the same as sending CC51 with value 127 once. CC51 should never we used together with CC42 as their actions contradict each other.
  • Controller 60: Synchro motor PWM 1, motor force (Synchro-motor board)
  • Controller 61: Synchro motor current, motor torque (Synchro-motor board)
  • Controller 62: Synchro motor phase (Synchro-motor board)
  • Controller 63: Synchro motor - direction of rotation (Synchro motor board)
  • Controller 64, sustain (damper on or off, 0 = damper active) (Hub-board)
  • Controller 65: Synchro motor time out value: This determines how long the motor will continue to run after reception of a note off command.
  • Controller 66: power on/off switch (all boards) . This controller also resets all controllers to their default startup values.
  • Controller 70: change the finger mapping lookup table.
  • Controller 80: controls the messages send through the midi-out port according to the bits in the data word as follows:
    • bit 0: if set, the measured frequency of the string is output as a keypressure message (msb,lsb)
    • bit 1: if set, the value of the tacho is output as a pitchbend message (msb,lsb)
    • bit 5: if set, a controller 51 with data 64 will be send on completion of the controller 51 command.
    • bit 6: if set, a controller 22 with data byte 127 will be sent to indicate the end of a tuning procedure.
  • Controller 123: all notes off (also switches off the lights) (all boards) . This command does not reset the controllers, so these retain their programmed values.
  • Program Change: not implemented yet.
  • Pitch bend: implemented over a plus or minus 64 cents range. Only the 7-bit msb value is used. A pitch bend applied to a note remains applied for repeated notes. On each new and different note-on command, pitch bend will be reset automatically. Note that after sending a new note-on command, at least a time of 1/4th of a wavelength corresponding to 1 tenth of the frequency of the sounding note should have passed for the pitch bend to be recognized. This is essential for preservation of proper phase relations between the frequencies driving the spindle motor. In the worst case, for midi note 39, this comes to about 130 ms. (synchro motor board). The pitch bend command does not change the tuning of the string.
  • Lights:
    • strobo-light (ON/OFF) (synchro motor board) - always follows note on/off commands.
    • mapped on notes 120-127, velo byte steers initial flashing frequency:
    • note 120: (hub board)
    • note 121: (hub board)
    • note 122: Blue LED spotlite on arm left (hub board)
    • note 123: Blue LED spotlite on arm right (hub board)
    • note 124:
    • note 125:
    • note 126: 1W red LED on back side of tuning motor assembly (tuning board)
    • note 127: 1W red LED on front side of tuning motor assembly (tuning board)
  • Midi Channel: 10 (counting 0-15)

Synchrochord also has a midi output port, delivering information back to the user, depending on the setting of controller 80:

  • Key pressure: gives the sounding frequency of the string (in Hz), format: status byte, msb, lsb (non standard use!)
  • PitchBend, gives the 10bit reading of the tacho corresponding to the string pitch. msb, lsb (non standard use!)
  • Controller 22: value = 127 is returned when the autotune process has finished.
  • Controller 51: value = 64 is returned when a tuning command with CC51 was completed.

Synchrochord has two audio-output jack connectors, one carrying the signal from the string pick-up and one offering the square waved version of this signal. These signals are available for debugging purposes and for interactive applications. They should not be used in normal orchestrations using the robot orchestra, since such use would entail the use of amplification. A video signal (composite video with a BNC connector) may be available as well.



Technical specifications:

Design and construction: dr.Godfried-Willem Raes (2011-2012)

Collaborators on the construction of this robot:


Music composed for <Synchrochord>:

String selection table: [steel strings, sounding length 1400 mm]

fundamental pitch diameter force comments
39 (77Hz) 0.7 mm 140 N this is the smallest wire size used in piano's
id. 0.8 mm 183 N starting point for version 1.0
id. 0.9 mm 232 N  
id. 1.0 mm 287 N  
id. 1.1 mm 347 N  
id. 1.2 mm 413 N calculated ideal
id. 1.3 mm 485 N  
id. 1.4 mm 563 N  
id. 1.42 mm   bicycle brake stranded steel wire (gives gut-like sound)
id. 1.5 mm 646 N  
id. 1.6 mm 735 N this is the thickest size ever used on piano's. 750 N is the minimum force in piano's (1000 N max)

Other strings and string materials tested:

Power supply calculation:

Back to Logos-Projects page : projects.html Back to Main Logos page:index.html To Godfried-Willem Raes personal homepage... To Instrument catalogue Naar Godfried-Willem Raes' homepage

Nederlands:

<Synchrochord>

Er is voorlopig geen nederlandse projektbeschrijving beschikbaar.

We hebben ook voor <Synchrochord> een beknopt bouwdagboek in het engels bijgehouden. Omdat we de bouw tot in de laatste details graag illustreren, kan het ook voor anderen die ons op dit pad willen volgen en/of verbeteren, van praktisch nut zijn.


Construction & Research Diary:

TODO list:

EVALUATION and CRITICISM


(Terug) naar logos-projekten:
projects.html

Terug naar Logos' index-pagina:
index.html

Naar
Godfried-Willem Raes personal homepage...

Naar Godfried-Willem Raes' homepage

Naar katalogus instrumenten
gebouwd door
Godfried-Willem Raes


Last update: 2017-08-05

by dr.Godfried-Willem Raes

Further reading on this topic (some in dutch):

Bibliographical references:

ROSSING, Thomas.D (editor), "The Science of String Instruments"

PICKEN, Laurence (editor) , Musica Asiatica 3. ed.: Oxford University Press, London 1981, pages 19: C.J. Adkins, R.C. Williamson, J.W. Flowers, L.E.R. Picken: Frequency-doubling chordophones.


Technical data sheet, design calculations and maintenance instructions:

Technische gegevens, ontwerpberekeningen en instrukties voor onderhoud en demontage:

Fingering lookup table:

solenoid numbering corresponds to the numbering scheme on the pulse/hold PC board. Outputs 1 (pic pins 4,3) and 2 (pic pins 2,5) are not used for fingering solenoids.

Midi note solenoid nr. -A (octaves) solenoid nr. B (fifths) solenoid nr. (alternate) remarks - PIC pinning wire color board output nr Weidmueller pin
39 none none none fundamental      
40 1 1 1 19,20 brown 14 2
41 2 2 2 17,18 pink 13 3
42 3 3 3 15,16 orange 12 5
43 4 4 4 22,21 yellow 11 6
44 5 5 5 24,23 green 10 7
45 6 6 6 28,27 blue 9 8
46 7 7 7 30,29 purple 8 10
47 8 8 8 34, 33 grey 7 11
48 9 9 9 36,35 white 6 12
49 10 10 10 10,37 black 5 13
50 11 11 11 8,9 brown 4 15
51 12 12 none 6,7 pink 3 16
52 1 1 1        
53 2 2 2        
54 3 3 3        
55 4 4 4        
56 5 5 5        
57 6 6 6        
58 7 none          
59 8 1          
60 9 2          
61 10 3          
62 11 4          
63 12 5 none        
64 1 6          
65 2 7          
66 3 8          
67 4 9          
68 5 10          
69 6 11          
70 7 12 none        
71 8 1          
72 9 2          
73 10 3          
74 11 4          
75 12 5          
76 1 6          
77 2 7          
78 3 8          
79 4 9          
80 5 10          
81 6 11          
82 7 12 none        
83 8 1          
84 9 2          
85 10 3          
86 11 4          
87 12 5          

Detail of the circuit for pulse- and hold on these finger solenoids:

Complete circuit, including the PIC microprocessor (18F4620):

The assembler firmware for this processor can be found here. The hexdump usefull for people wanting to copy the design is here. The source code consists of two file: the interrupt handler code and the main code module. The Proton+ compiler was used for compilation. For programming: use the Microchip MPLAB software.

Midi-hub board circuit:

This board steers the damper solenoid, the plucker solenoid as well as most of the lights.

Source code for the firmware for the hub board. If you want the hexdump. (can be uploaded directly using MPLAB)

Tuning motor board:

Circuit notes: the input opamp is clipping by design. An improvement would be to add an amplitude detector using a separate opamp and feed this rectified and integrated output to the A1 input of the PIC. This way validity of frequency measurement could be checked in the firmware against minimum amplitude conditions.

source code for the firmware for this board. If you want the hexdump. (Uploadable using MPLAB).


Robody pictures with Synchrochord: