School of Arts

<Synchrochord>
an automated monochord


dr.Godfried-Willem RAES
2011-2012

 

[Nederlandstalige versie]



Robot: <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 can use M4 rubber vibration dampers with an internal M4 thread if we removed the metal counterplate.

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 circuitry for the string motor driver (exciter) follows one of the schematic drawings below. The first version makes use of a dsPIC (30F3010):

In a first version, transformer coupling was applied throughout the design mainly because, on microprocessor failures, outputs can get stuck with a risk of burning out motor windings. Somewhat later we discovered the feautures of the IR2104 chip, making the design of the circuit both easier and less bulky.

The dsPIC generates two sine waves, 90 degrees out of phase, at a frequency 1/10th of the required pitch. One input 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 second version is very different and was build up to evaluate performance. It uses older technology (hardware counters) , but the precision is a lot better than in the first version. Circuit functionality is pretty much the same. Here an 18F4620 microprocessor is used: The timing precision is due to the use of the 82C54 triple programmable counters. The phase shift between the two signals driving the motor is realized in the PIC firmware by steering the gates of the counters. Any phase shift between 90 and 120 degrees can be programmed. Power control is possible by changing the duty cycle of the PWM outputs driving the half-bridge drivers. At lower frequencies, the power to the motor should be reduced. To improve response to changing speeds, we leave the motor running 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 softshift 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. By setting controller 64 to %true, the damper mechanism can be disabled. On startup the mechanism is always enabled.

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. None of these controllers should be used in sequenced files ]

   
  • Midi note range: 39 - 87. Velocity implemented: steers plucking depth.
  • Note Off commands are required (dampers and motor brake) . Release value implemented.
  • Note after touch: implemented
  • Controller 7: Volume controller for the ebow mechanism (tuner board) Setting this controller to a non-zero value automatically enables the ebow.
  • 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 (Pulse/hold board)
  • Controller 33: Damping force for the damper solenoid (Hub-board)
  • Controller 34: Release time control for damper solenoid (Hub-board)
  • 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 PWM 2, motor force (Synchro-motor board)
  • Controller 62: Synchro motor phase (Synchro-motor board)
  • Controller 64, sustain (damper on or off, 0 = damper active) (Hub-board)
  • Controller 65: note-off release value enable/disable switch. If note off with release is not used, the value passed with this controller determines the time the damper will stay on the string after a note off.
  • Controller 66: power on/off switch (all boards)
  • 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)
  • Program Change: not implemented
  • 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)
  • Lights:
    • strobo-light (ON/OFF) (synchro motor board) - follows note on/off commands.
    • mapped on notes 120-127, velo byte steers flashing frequency:
    • note 120: Blue LED spotlite on arm left (hub board)
    • note 121: Blue LED spotlite on arm right (hub board)
    • note 122: (hub board)
    • note 123: (hub board)
    • note 124: (hub board)
    • note 125: (hub board)
    • 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 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.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:

Robot:<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:

 


(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: 2012-02-16

by dr.Godfried-Willem Raes

Further reading on this topic (some in dutch):

Bibliographical references:

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


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).