an automated sousaphone
This musical robot consists of an old Bb sousaphone with an automated playing
head and automated valves. The building history is quite long as this instrument
went through three fundamental revisions and redesigns over the last twenty
This first version was finished in 2003. For the control it used a laptop computer
with a Centronics printer port. The MIDI commands came in on the laptop, translating
them into the required commands on the printer port. Wind supply was fully automated.
Controlling the robot was realized using the standard midi protocol. The sound
generating mechanism used mimics human lips and does make use of the original
mouthpiece of the instrument. A moving coil valve activates a leather pad (actually
one taken from the lowest keyholes of a tenor saxophone, later replaced with
silicon lips) that opens and closes the air traject through the mouthpiece.
We did spend a lot of research time in finding a mechanism producing a realistic
tuba sound. Hundredths of attempts using solenoid valves failed, because the
magnetization of the iron alloys used is way too slow to open and close any
kind of valve at speeds exceeding 40 Hz. Hence we decided to use a moving coil
mechanism in a permanent magnet, much like the action of a regular loudspeaker,
where the moving coil is mechanically connected to the paper cone. This mechanism
is controlled by a switching signal of a frequency corresponding to the note
to be played. At the same time the valves (activated by bidirectional solenoids)
are pushed such that resonance through the instrument does occur. We dismissed
the return springs in the original sousaphone valves as we found we could get
more silent operation from the valves by pushing and pulling them under solenoid
action. Wind pressure, derived from a small axial compressor, is applied to
the artificial mouth assembly. The pressure is variable between 0 and 75mm H20.
In fact, this pressure is lower than what we calculated to be necessary (350mm
H20 is what brass players build up by their lungs in fff
passages...), but we could not find anywere in the industry small and silent
operating blowers in this range. (Forget about vacuum cleaners...). As a consequence
we had to foresake the implementation of ff and fff (cuivré) playing
in this robot.
Dynamic control is not an easy matter, and requires at least two interdependent
parameters: wind pressure and signal amplitude. The valve membrane amplitude
diminishes and the center point of movement symmetry shifts with frequency,
when pulsed DC is used. Thus to compensate for the lower valve excursions at
higher frequencies, the wind pressure has to be increased. On theoretical grounds
it would have been better to adjust the distance between valve seating and mouthpiece
in function of amplitude and frequency, but this posed us way too many mechanical
problems. Thinking along this path, in the first version of this robot, we went
for a DC pulse steering for the lower notes and transformer coupled AC steering
for the higher notes in the compass. As a consequence for the user, note velocities
for notes 39 and higher had to be derated with maximum values of 63 (for note
39) to 9 (for note 47).
The details of this version1 can be found in the archive
The laptop computer was replaced by two PIC controllers take care of the translation
of the midi commands flowing into the quite complex command set the instrumental
hardware requires. In this 2007 version of <So> we implemented pitch bend
over a range of nearly a semitone around any note played. With this it became
possible to score <So> in quartertone music with perfect intonation. However,
do not forget to send the appropriate pitch bend command for every quartertone
you want to get played. Also, note that for quartertone music, it will definitely
make a difference when you have the choice between say note 36,5 played as 36
raised a quartertone up, or note 37 lowered a quartertone, since the instrument
will always use the valve position for the 'normal' basic note. The valve combinations
for notes 36 and 37 are indeed different! Our advise to composers wanting to
write quartertone music for <So> is to experiment first with a few testscales
using the different possibilities. It is possible as well to use <So>
with non standard fingerings in order to get sound color variation. Refer to
the detailed midi implementation for <So> given further on this page.
In this 2007 version, we used a dsPIC and attempted to set the DC shift point
for the lips (and thus the mouthpiece aperture) for the moving coil completely
in the PIC firmware. By generating asymmetrical waveforms, the DC shift required
to change the membrane position can indeed be realized. However, <So>
still sounded best in its optimum range: 15-39. The dsPIC circuit is pretty
simple, since we use only a single output and its complement (however not necessarily
symmetric, since we wanted DC shift to be possible) for the wave generation.
The 16-bit dsPIC controller takes care of the pitches generated as well as of
their amplitude and enveloppe. These controllers offer complementary PWM outputs
and thus allow very precise control of the movements of the moving coil driver
around its mechanical symmetry point at rest. The circuit was first designed
with a high power op amp (LM12) in a differential configuration, as output driver:
Later -for version 2.0- we changed it for a more traditional ILP HY30 driver,
since the power available from the LM12 was way too high. Note that a high quality
audio transformer was used to coupled the wave generator output to the analog
amplifier driving the moving coil head.
The midi mapping for this version was:
The notes between brackets do not sound the best, so for best ('realistic')
Sousaphone sound, restrict notes to the non-bracketed range. This range corresponds
to what 'normal' sousaphones can produce. We have extended the range on the
low side up to midi note 0. The note range 0-11 should be used only for special
effects and will never sound realistic since they cannot normally be produced
by the instrument. The footstep is mapped on midi note 48.(the force is proportional
to the value of the velocity byte sent). It is not required to send separate
commands for the pistons, since these commands are handled automatically in
the firmware. The white lites are mapped on note 49, the colored lites on note
50 and the 'logos' display on note 51.
Pitch-bend is implemented, with a range of +/- 60 cents. Pitch bend commands
do not change the valve combination used. Pitch bend is cancelled for every
new note on. Only msb is relevant and should be used. However, the circuitry
as well as the firmware supports full 14 bit resolution. If you want a note
to be raised a quartertone, send pitch bend value 118 for the msb. To lower
a note by a quartertone, send pitch bend value 10 for the msb.
Controller 1 is used for wind pressure. The motor frequency is displayed on
the motor command panel. The minimum rotation frequency is set to 10Hz, such
that a reasonably fast response is possible. An optimum setting for normal playing
corresponds to midi value 50 (frequency 42Hz). For real good forte and fortissimo
on low pitched notes, value 127 should be send. The lower the pitch requested,
the more wind you should provide. For high pitches, wind pressure has to be
somewhat reduced. Note that when using the program changes, (0 or 120-126) wind
control in function of the note played will be automatic. When in such a preset,
the lookup setting can be overridden using controller 1. To re-enable the use
of the lookup tables, send the preset (program change) again.
Controller 7 is used for volume scaling. It can be used to change the amplitude
of playing notes. This controller sets the maximum amplitude value attainable
with the velocity byte of any note. The setting for this controller is also
important if you want to use the attack control. For very strong attacks, the
level for controller 7 should be set pretty high and the velocities for the
notes played, to very low values. The dynamic range of the attack equals the
difference between the setting for controller 7 and the velocity byte accompanying
a note on command.
Techical details and circuit drawings for version 2
can be found in the archive file.
In this rebuild, finished february 2020, we took profit from the experiences
learned in the construction of our <Flut> robot. We added many more controllers
and changed quite some of the older ones. We do realize that composers wanting
to use this robot, at first sight might be overwhelmed by the prohibitive looking
amount of degrees of freedom , expressed in a corresponding amount of midi controllers
to set and steer different parameters of the sound production. At the other
hand, to achieve really musical -and not caricature-like- results with just
about any monophonic instrument, it seems unavoidable to me as a designer to
introduce quite a lot of the musicians craftmanship in the controls of the instrument.
Intelligent composers therefore will have to be knowledgeable about brass instrument
playing if they want to get convincing results from such robots. Definitely
so, if they want to get results surpassing the possibilities of human performers.
Of course we know that in reality there are lazy composers around, without this
desire for precision and surpassing human capabilities. Composers that like
to have fast results, even though dirtier than possible... Cartoon composers,
so to speak. With those people in mind, we have made some compromise ways of
controlling this robot, implementing some quick and dirty 'off the shelve' default
settings corresponding to musically acceptable presets. These presets are documented
in the midi implementation table below.
This version of the <So> robots uses three microprocessors: an 8-bit
18F2620 for he valves and the lights, a 16-bit 24EP128MC202 for the membane
compressor, and a 16-bit 30F3010 for the displays.
Power supply voltages and currents:
- 5V dc: required for all logic boards and displays, 2A. (SMPS-module)
- 24V dc: required for the valve solenoids (3A max) and the foot stepper (420mA).
So we used a classic transformer - rectifier power supply rated for 24V ,
- +35/-35V power supply for the amplifier driving the membrane compressor
- +15/-15V using a small SMPS module soldered on the 24EP128MC202 board.
Midi Mapping and implementation:
Midi note range: 15-69, or in musical notation:
We have limited the range on the low side down to midi note 15, the lowest
possible pedal note on the sousaphone. The footstep is mapped on midi note 84.(the
force is proportional to the value of the velocity byte sent). It is not required
to send separate commands for the pistons, since these commands are handled
automatically in the firmware. The white lites are mapped on note 120, the colored
lites on note 121 and the 'logos' display on note 122. The eye lights are mapped
on note 123, but these are automated to follow note-onn/off's, their intensity
following the volume as set with controller 7.
Pitch-bend is implemented, with a range of +/- 60 cents. Pitch bend commands
do not change the valve combination used. Pitch bend is cancelled for every
new note on. Only msb is relevant and should be used. However, the circuitry
as well as the firmware supports full 14 bit resolution. If you want a note
to be raised a quartertone, send pitch bend value 118 for the msb. To lower
a note by a quartertone, send pitch bend value 10 for the msb.
Controller 1 is used for the noisyness of the sound. [default = 8]
Controller 3: Vibrato depth [default = 3]
Controller 4: Vibrato speed [default = 64]
Controller 5: Tremolo depth [default = 2]
Controller 6: Tremolo speed [default = 10]
Controller 7 is used for volume scaling. It can be used to change the global
amplitude of playing notes.It does not affect any ADSR parameters. The default
range is 40dB, but can be changed with controller 80. The default setting is
Controller 13 changes the lookup table for the valve-pitch correspondence.
The default is 0 and conforms to an empirical mapping of valve combinations
for optimal resonant sound. Value 1 selects the theoretical valve combinations
calculated after simplified acoustic theory. [default = 0]
Controller 15: sets the period for the entire ADSR cycle. When fast passages
are to be played, it is advised to decrease the setting for this controller.
It will than rescale the entire ADSR curve maintaining the proportions set with
controllers 16,18 and 19. The default setting for this controller is 50.
Controller 16: set the attack duration. Default = 45. Although a setting to
100 sounds quite good, for orchestral parts it should be set to a much lower
value, as high settings cause the instrument to sound too late. If you still
want the slow attack, you have to anticipate the So part in the midi file or
in the software.
Controller 17: sets the attack level. Default = 100. Note that he velo-level
is added to this setting.
Controller 18: sets the decay duration. Default = 61. During the decay phase
the sound level is modified such as to reach the velo level.
Controller 19: sets the release duration. Default = 90. The release phase will
always be cancelled when a new note-on command is given during the release phase.
Controller 20: Sets the tuning (default = 64 = 440Hz)
Controller 34 sets the functionality of the display (values 0-3): With value
0, the display always shows the midi note the sousaphone is playing. With value
1, the displays show the value sent with controller 35 (value range 0-99), with
value 2, controllers 36 and 37 can be used to display numbers and signs (0-15)
to each display independently. With value 3, the displays will we completely
off. Other values for this controller are disregarded. The default setting for
controller 34 on startup is 0. The displays are fully functional, regardless
the value for controller 66 (on/off).
Controller 35: if controller 34 is set to value 1, controller 35 allows you
to send a numeric value 0-99 to the displays. Note that it is up to the user
to limit the number to 99 (use count MOD 100, in your code). For higher values,
strange signs do appear on the displays...
Controller 36: if controller 34 is set to value 2, controller 36 allows you
to send a nibble to the msb of the display. For values larger than 9, the display
shows 'strange' signs. It is up to the user to limit the range.
Controller 37: if controller 34 is set to value 2, controller 37 allows you
to send a nibble to the lsb of the display. For values larger than 9, the display
shows 'strange' signs. It is up to the user to limit the range.
Controller 66: on/off: enables the sound production. Note that setting this
controller to zero will make sound production impossible. Also it will reset
all controllers to their default cold-boot settings. Avoid sending on/off commands
in fast succession, as the microprocessor recalculates all its lookup tables
on reset and this takes some time (ca. 200ms)
Controller 80: sets the dynamic range used. 64 = 40dB range, <64 = 20dB
range, >64 = 60dB range. The default is 64. This scaling affects all dynamic
related parameters (velo, 5,6,7,17).
Controllers 100-109: Set waveform parameters in conjunction with the program
change settings. Sending these controllers will allways interrupt the sound
production, as the lookup tables have to be recalculated. These controllers
should never be used in sequencing software. [implemented for experts use only,
as all details are fully documented in the GMT source code contained in so.inc].
Controller 123 switches all notes off. Releases the valve solenoids. Dims the
Note Off commands are implemented. If note-off with release is used, it will
control the release duration, overriding the setting of controller 19. Velocity
is implemented and has a wide control range. Very soft notes do not sound very
natural, since no real tuba is able to produce those. Also, with too low energy
blown into the tuba, real resonances in the instrument will not even occur.
It is possible to send succesive note-on's without note-off commands if pure
legato playing is required. However, regular sequencer software does not support
Pitch bend implemented. The range is limited to a semitone, thus a quartertone
up or down. Pitch bend can be used for microtonal music. The coding follows
from the example below, given for a fragment of the highest range of a quartertone
Most good sequencer
software (such as Cakewalk or Sonar) use the signed 14 bit format. To convert
fractional midi to the msb only pitchbend to apply follow following procedure:
if the fractional part is <= 0.5 then msb= 63 + (FRAC(note) * 128), if the
fractional part is larger than 0.5, we should switch on the note + 1 and lower
the pitch with msb= (1-FRAC(note)) * 128.
- size: base 700mm x 700mm, heigth 2200mm (For transportation, the sousaphone
bell can be taken off)
- weight: ca.70kg
- power: 230V ac / 240W peak, nominal 85W. IEC power connector.
- Tuning: based on A = 440 Hz (within 1%) - tuning is programmable.
- Ambitus: midi note 15 to midi note 69
- Insurance value: 14.500 Euro.
Design, research and construction: dr.Godfried-Willem
Further collaborators on the construction of this robot:
- Kristof Lauwers (Standard midi to specific So-midi conversion software,
2003 version; lookups 2007 version)
- Leonaar Degraeve (tuba advisor 2002, version 1)
- Moniek Darge (painting)
- Xavier Verhelst, Sebastian Bradt, Kris De Baerdemacker: composer/user advisors.
- Johannes Taelman (PIC coding 2007, version 2)
- Lara Van Wijnsberghe (2020)
Music composed for <So>:
- Godfried-Willem Raes "So What" (premiered on august 21th 2003)
- Godfried-Willem Raes "GestroSo"
- Godfried-Willem Raes "SQE v STO 4 QR" (premiered on september
9th 2003, revised 01.2005)
- Kristof Lauwers & Moniek Darge "King So" (premiered january
In het Logos robot orkest hadden we al heel vroeg behoefte aan
wat meer variatie in de heel lage basinstrumenten, niet in het minst voor de
verklanking van de opening van mijn apero <Technofaustus>. Alleen de <player
piano>, <bourdonola> en <Vox Humanola> beschikten rond het jaar
2000 over een in de laagte redelijke bas. Nu is het maken van lage instrumenten
op zich eigenlijk technisch eenvoudiger dan hoge vanwege de geringere eisen
gesteld aan de precizie bij de bouw, maar, de afmetingen ervan swingen werkelijk
de pan uit. Om midi noot 24 voort te brengen met open luchtkolommen bvb., heb
je gauw een bouwhoogte nodig van ca. 6 meter... Tongwerken anderzijds klinken
wanneer ze klein worden gemaakt, gauw erg nasaal en uiterst boventoonrijk, waardoor
ze niet goed als dragende bassen aan te wenden zijn. De bezoekers van de Logos
koncerten zullen dit ook wel al hebben opgemerkt bij het horen van de klanken
van <Vox Humanola>, <Trump> en van <Krum>. Vandaar het idee
om werk te maken van een geautomatiseerde bastuba. Een tuba, het instrument
bij uitstek voor de verzorging van sterke dragende bassen, hadden we wel niet
in onze instrumentenverzameling, maar een (helaas erg versleten) Sousafoon,
ooit eens op de rommelmarkt gekocht voor een prikje, hing nog ergens in onze
traphal sierraad te wezen. Nadere inspektie leerde ons dat het om een Sib instrument
ging voorzien van 3 ventielen. Automatisering van die ventielen bleek een erg
eenvoudige klus, maar het vinden van een adekwaat klankvormingsmechanisme had
heel wat meer voeten in de aarde. Na heel wat research met namaaklippen in rubber,
silikonen en neopreen, kleppen in koper, mica en teflon, kwamen we terecht bij
een reeds in de 19e eeuw bekend mechanisme voor toonopwekking: dat van het diaphane
register in sommige britse orgels. Het toongat, in ons geval het mondstuk van
de sousafoon, wordt daarbij door een zachte en juist sluitende klep heel erg
snel geopend en gesloten. Dat klinkt zo'n beetje zoals je met de palm van je
hand op het mondstuk slaat: een zachte slaptongue op het instrument. Nu was
het zaak deze klep tegen de juiste snelheid, overeenkomstig de resonantiefrekwentie
van het instrument, te laten trillen. Elektromagneten bleken hopeloos te traag:
we haalden nooit snelheden groter dan ca. 40Hz. Dan maar de zaak omgekeerd aangepakt:
vaste magneet en lichte beweeglijke spoel. Zo hadden we ei zo na opnieuw de
luidspreker uitgevonden natuurlijk... Hier echter, wordt niet een membraan in
beweging gebracht door de spoel, maar uitsluitend de in silikonenrubber uitgevoerde
afsluitklep voor het mondstuk. Deze klep vormt eigenlijk het equivalent van
de lippen waarmee het mondstuk bespeeld wordt. Dit bleek prima te werken en
liet ons de mogelijkheid ook lucht opgewekt door een radiale kompressor aan
de achterzijde toe te voeren. De sousafoon wordt op die wijze ook echt aangeblazen.
De pedaalnoten (midi 15 tot 22) bleken met ons op deze wijze opgebouwd artificieel
hoofd uitstekend speelbaar: voor menselijke spelers zijn die tonen zo goed als
onhaalbaar). Alleen om snel van lage naar hoge noten te kunnen overgaan, konden
we geen snel genoeg reagerend drukventiel verzinnen. De radiale kompressor is
weliswaar in druk regelbaar gemaakt, maar door de inertie van de schoepen, reageert
die eerder traag op winddrukkommandos. De tessituur zal dus beperkt blijven
tot de diepere regionen van de muziek (tot hooguit, en niet zonder moeite, midi
Als speels extraatje hebben we onderaan deze robot een houten
leest -aan de onderzijde met ijzer bekleed- gemonteerd, die bekrachtigd door
een elektromagneet, de maat kan tikken op de grond; 't heeft voorwaar iets menselijks
zo... Ook enkele LED-spotjes werden toegevoegd om de visuele attraktiviteit
nog iets te vergroten.
De <So> robot werd op het 21 augustus 2003 koncert van het
Logos <M&M> ensemble voor het eerst ten doop gehouden. In de daaropvolgende
weken werden nog vele verbeteringen in de werking van de robot aangebracht.
Hij groeide zowaar op. In 2005/2007 onderging <So> een eerste komplete
'redesign' en upgrade (Versie 2) , waardoor hij nu ook naar een standaard midi
protocol luistert en ook de ventielen grotendeels van bijgeluiden werden ontdaan.
Het was zijn puberteit. De tweede bouwfaze met verdere verbeteringen werd na
heel wat research en experimenteel werk, afgerond in de zomer van 2007. In deze
upgrade werd <So> voorzien van tooninflektiemogelijkheden (via pitchbend),
klankkleurmogelijkheden, en van een groot 2-digit display voor kommunikatie
met live musici en/of dansers in het M&M orkest. <So> kan van nu af
ook worden gebruikt in kwarttoonsmuziek en heel wat 'extended' techniques zijn
nu ook mogelijk geworden. De korrekte en muzikale besturing van <So> vergt
evenwel vrij veel inzicht en begrip van koperblaasinstrumenten van de komponist.
De robot kan zeker niet beschouwd worden als een midi-synth waar je zowat eender
welke kommandos kan op loslaten. De volledige dokumentatie van de midi-implementatie
is opgenomen in de engelse tekst op de <So> webpagina en zal zeker door
belangstellende komponisten moeten worden doorgenomen. Om komponisten toch enigszins
op weg -en in toom- te houden, voorzagen we <So> van een heel grote analoge
meter waarop het vermogen toegevoerd aan de mond kan worden afgelezen. De naald
van deze meter mag nooit tegen het maximum (10) aanlopen. Overtredingen hiervan
kunnen de robot ernstig beschadigen.
Voor 'quick-and-dirty' komponisten en eerste vlugge schetsen,
voorzagen we <So> ook van een aantal gestandaardiseerde presets.
In februari 2020 ondernamen we een grondige revisie van deze robot.
Het lip-mechanisme bleek na bij 20 jaar dagelijks gebruik helemaal versleten
en ook andere aspekten van de klankvorming waren stilaan aan een upgrade toe.
Gezien de gewijzigde instellingen van de controllers, moeten bestaande midi-bestanden
waarin So voorkomt, worden aangepast. Enkele vuistregels terzake verschijnen
binnenkort op deze pagina. Hier zijn alvast onze eerste bevindingen en aanbevelingen:
- 1.- transponeer de So partij een oktaaf hoger.
- 2. - delete alle controller #1 settings
- 3. - voor snelle partijen: controller 15 @ 32, controller 16 @ 12, controller
17 @ 120, controller 18 @ 20
- 4.- controller 7 @ 104
- 5.- als noot 48 (voetje) voorkomt, transponeer naar noot 84
- 6.- als lichtjes gebruikt werden (noten 49,50,51) transponeer ze naar 120,121,122
The left picture shows the original circuitry,
version 1.0, operational up to june 2007. The picture in the middle shows version
V2 finished in august 2007 and version V3.0, 2020, is on the right.
Construction and research diary:
- 15.03.2001: first ideas and practical sketches.
- 12.09.2002: Proeven met rotatiemechanismen voor de klankopwekking, voortbouwend
op experimenten opgezet door Christoph Schlaegel. Het probleem is het vinden
van stillopende motoren met extreem hoge toerentallen en uiterst geringe traagheid...
- 18.10.2002: Principle design of control electronics.
- 01.07.2003: Design of a UART decoder for non-standard midi control in robots.
- 02.07.2003: PC board design finished and sent to Digit printservice. This
is a design without any microcontroller.
- 03.07.2003: Tests and experiments with compression drivers (as used on Autosax).
The sound is not very pleasing and quite electronic in nature. So this path
- 04.07.2003: Test lucas ledex solenoids on valves (same type as used on Vibi).
- 05.07.2003: Design of sound synthesis part and vibration mechanisms.
- 06.07.2003: part placement and soldering of UART pc-boards. Testing UART
boards with midi input.
- 07.07.2003: part placement and soldering of DEMUX circuit boards.
- 08.07.2003: part placement and soldering of power Mosfet driver boards.
- 09.07.2003: Welding of playing head assembly with artificial lip mechanism.
(modified Sonics SLE60 moving coil operated valve)
- 10.07.2003: soldering driver boards. Test artificial mouth mechanism. Now
behaves somewhat like a 19th century diaphane register in some British pipe
- 11.07.2003: start construction wheelbase for <So>. Software written
to calculate the valve lookup table. Artificial mouth welded and soldered.
Speaker driver mounted. Procedure GetInstrumParams in g_file.dll prepared
to return the correct values for <So>.
- 12.07.2003: Welding day... Basic construction, wheelchair model, completely
welded together. Plasma cutter gave up... Murphy being the way he is, we also
fall without argon gas...
- 13.07.2003: Mounting of sousaphone on base construction. Artificial mouth
connected to sousaphone. Solenoids mounted on valves.
- 14.07.2003: Plasma machine to repair (Welda) . Argon gas ordered (A-Gas
center). Frame for PC boards welded. Frame mounted (movable) in instrument
base. Soldering divider synth board. Base plate holder in glasfiber epoxy
- 15.07.2003: Rescue came: Fresh Argon gas! Replacement plasma machine available...
PC boards mounted on base assembly plate. Start soldering AND- mosfet driver
- 16.07.2003: Piston solenoid circuit designed, using large cap and power
series resistor, to limit dissipation. Practical RC values used and soldered
in (cfr. circuit diagram): 15 Ohms and 4700mF.
- 17.07.2003: construction of piston solenoid board and mounting. Assembly
mounted under left arm. Further soldering on note driver boards (connectors).
Low level driver code added to gmt in module g_midi.inc compiled to g_lib.dll.
- 18.07.2003: power DAC circuit built and tested.
- 19.07.2003: wiring boards. Woodshoe model found on flea market. A 'leest'
- 20.07.2003: more wiring of boards
- 25.07.2003: design foot assembly. Wiring valve solenoids
- 26.07.2003: further wiring board assembly. Power supplies connected.
- 27.07.2003: bs2 code written for wind controller. Test program written in
GMT and added to g_gorgel.exe compilation for our midi controlled robots.
- 28.07.2003: construction and mounting of foot mechanism, using a Laukhuff
electromagnet. Software adapted to implement wind controller (using channel
pressure command) and foot mechanism (now mapped on midi note 71).
- 29.07.2003: hardware/software debug session. 8 IRL640 power mosfets gone
to heaven because of error in our software... Replaced with BUK101-50 types
(moving coil drivers on latch 7). Mapping of foot mechanism can now also be
on notes 48,49,50 or 51.
- 30.07.2003: design of power DAC appears to be faulty. The gates may be exposed
to way to high voltages. When the mosfets have protection diodes, the AND
gates will die since they will see up to 24V on their outputs... New power
DAC designed used relays.
- 31.07.2003: Rescue: 74HCT93 counters found at Gentronics electronics store,
so we could finish the synth board. The relais we planned to use, appeared
to be bistable types. Problems finding 24V dc coil types that fit onto the
sockets on our PC board...
- 01.08.2003: Bad luck day: artificial head burned out. 8 mosfets gone to
heaven. So, we have to start all over again with the construction of the artificial
mouth. Wiring bugs removed. Foot mechanism is now up and working.
- 02.08.2003: debug session of driver code. Specific low level code written
and tested. Bug discovered in g_mus.dll: GetLowestNoteInHar and GetHighestnoteinHar
had an offset error. This bug repair may affect many existing compositions.
Still hardware problem with note 24. Artificial head replaced. (Sonics SLE60
driver). Wind inlet welded on the back of the head. BS2 controller programmed
and placed in the circuit. So played its first notes today!
- 03.08.2003: support welded for radial compressor. Assembly of compressor
finished. Polishing of valve interiors for smooth operation. Cleaning of Sousaphone.
Regulating mechanism made for valves. Springs tuned. We still have problems
with notes higher than midi note 30. Maybe we have to AC couple the mouth
- 04.08.2003: Those awfull holidays seem the be finally ending, so we could
get the missing components again at our regular stores. 24V relais ordered.
- 13.08.2003: Zero cross relais (Crouzet type) for motor control (wind pressure)
- 14.08.2003: For notes higher than midi 28, AC signals work better on the
mouth assembly. Transformer coupling tested. A diode appears essential now.
This makes the very low notes less natural sounding however. Maybe we need
a much heavier 1:1 transformer with very good low frequency response, or,
a low pass filter on the output. We still have a problem with note 24. Probably
a short on the PC board. Higher windpressure would also greatly improve the
- 15.08.2003: 74HCT08 burnt out: this caused the failing note 24. Support
added for external drive, mapped on note 8. Transformer replaced with a 50W
type toroidal witch burnt out 230V primary but intact split 2 x 12V secondaries.
Head assembly painted red.
- 16.08.2003: very short experiment with 24:24V transformer. Seems to work
better. No time today to really figure it out...
- 17.08.2003: transformer changed again. (20V:24V), series resistance should
be > 8 Ohms. For good low basses it is better to use DC on the speaker,
whereas for higher pitches (midi 39 and above) transformer coupling sounds
better. So we will have to change the circuit with a relais mapped on note
50 to switch between AC and DC excitation modes.
- 18.08.2003: wiring AC/DC circuitry. Software extensively checked and debugged
(in g_midi.inc, part of the library g_lib.dll). Our circuits still seem to
suffer from inductive spikes. We may have to add many more bypass caps.
- 19.08.2003: Bypasses added. Spikes seem to remain. Trying to solve it in
software. Mosfets on notes 40-47 replaced with IRL640 types.
- 20.08.2003: Rattle in compressor repaired. <So> would work better
with a Laukhuff blower (tested!). Gray code based latch adressing applied.
Spikes seemed to come from the inherent deficiencies of the 74HCT154 demultiplexer
chips (Why does'nt our elecronics industry produce improved versions of this
25 years old chip...). Thanks to Kristofs GMT midi fileplayer, So played its
first midi pieces: a Tango by Cardel and my own '2bv-2b'. We also implemented
support for <So> in 'Wandering Quadrada Space'. The public premiere
is scheduled for tomorrow...
- 21.08.2003: First public concert with So. It worked nicely, but in order
to overcome the glitch problem we are causing a way too large midi stream
resulting in a delay larger then needed. So further research is required here.
- 22.08.2003: Redesign of adressing scheme of latches. Now we should only
have two bits changing on each transition.
- 23.08.2003: New wiring applied to <So>: latch adresses are now: 1,2,4,8,16,17,32,48.
DLL revised. We now solved the problem with the data stream, but still have
glitches on the AC/DC transitions.
- 24.08.2003: Software fine tuning.
- 27.08.2003: Ventola blower delivered from Laukhuff.
- 28.08.2003: mounting of Ventola blower in So. We have a 6dB sound level
improvement now! Also, this blower is in itself a lot more quiet than the
type we had mounted at first.
- 29.08.2003: construction of holding and steering bar in 3/4" tube.
Painting. CEE male power socket mounted.
- 07.02.2003: previous design-file for So placed under the \so\directory on
the site. Click here for consultation.
- 15.12.2004: <So> piece "So What" published on CD LPD012
- 08.02.2005: UART circuitry redesigned using PIC's. This to avoid glitch
problems that arrised on high midi data rates. At the same time, solenoids
for valves redimensioned. In the new design we will use bidirectional types.
- 16.02.2005: Valve solenoids replaced with bidirectional Laukhuff types.
Carrier structure rewelded and enlarged. Now there is no danger any more in
burning out the solenoids on long sustained notes.
- 29.11.2005: research on driving the Ventola compressor as a 3-phase motor
using a Siemens Micromaster 410 motorcontroller. This technique can be applied
to <So>, <Harma>, <Ake>, <Autosax>.
- 15.01.2006: The Micromaster is no longer in production. We will have to
go for a Siemens Sinamics G110 instead.
- 09.11.2006: DS-PIC board testcode added to GMT module, for the moving coil
- 15.12.2006: New type Siemens Sinamics controller G110, 0.12kW has arrived.
- 16.02.2007: design of yet another circuit
for the moving coil driver.
- 19.04.2007: Kist gemaakt voor transport van de klankbeker van <So>
naar Vilnius. So speelt mee in Vilnius op 25.04.2007.
- 14.07.2007: <So> speelt een hoofdrol in het M&M maratonkoncert
op de gentse feesten in de spiegeltent.
- 18.07.2007: Uitsnijden nieuwe basisplaat voor de <So> elektronika
in 5mm dikke aluminium plaat. Ontwerp schikking komponenten daarop. Plaatsing
nieuwe grote voltmeter en Siemens motor controller. Antieke Britse aan/uit
schakelaar in stalen kast gemonteerd.
- 19.07.2007: Research on tone generation with analog drive of the moving
coil assembly. Pitch bend implementation worked out. This is new in the 2007
implementation. Midihub board soldered. Missing components ordered from Farnell.
Circuit drawing added to maintenance sectrion at the very end of this webpage.
Note that the motor on/off function requires an external 1.5k (1/2W) resistor
as pull up.
- 20.07.2007: Motor on/off pull up mounted on midihub board. dsPIC boards
designed. Research into functionality of the very large 2-digit 7-segment
displays. Large rectangular hole cut out for Siemens Sinamics motor controller.
Midihub board completed and finished.
- 21.07.2007: dsPIC board hand assembled on perforated prototyping PC board.
The midi connector is an output and is intended to be used for PIC-firmware
debugging only. The yellow LED will be lit as soon and as long as the +5V
power is connected. The small red LED is for PIC monitoring and debugging.
The PIC programming connector (6 pin SIL strip) is soldered below the small
red LED. The 3-pole Weidmueller connects to the midihub board and powers the
dsPIC board as well. The large 7-segment display boards with 10mm LED's can
be fed from 12-15V unstabilised.
- 22.07.2007: Circuit drawing for the display boards added to maintenance
section below. Pull up resistors added on 7-segment decoders on dsPIC board.
Recalculation power sypply requirements: 24V unstabilised DC at 5A should
be plenty. Each valve solenoids draws 1A, the displays consume maximum 250mA
and the footstep another 500mA. For the logic, we use a small Farnell transformer
230V primary and two secondary windings, rated 6V each.
- 23.07.2007: Assembly of main components on aluminium front panel.
- 24.07.2007: Wiring works. Meter circuit finalised. We used an old selenium
bridge rectifier for the meter because of the unsurpassed low forward voltage
drop (<300mV), typical for these antiquities. Hole in the sousaphone water
valve closed with a piece of form-shaped brass.
- 25.07.2007: Wiring finalized (except lites). Motor controller programmed.
Filter circuit designed on the output of the dsPIC. We use a 1:1 Bourns transformer
(600 Ohms, dc resistance 80 Ohm), type LM-NP-1001.8.
- 26.07.2007: All electrical and hardware tests performed. Construction of
LED spotlites (red) mounted on the base plate. Valve combination software
extracted from GMT and placed in a new so-design code module to generate the
lookup tables required for pic programming.
- 27.07.2007: PIC programming session with Johannes Taelman. Hub pic version
1.0 done. No lookup's for valves as yet. Voltmeter added for read out of the
24V power supply voltage.
- 28.07.2007: Wiring bug mosfet foot repaired. Output config for dsPIC changed.
We now use pins 26 and 24 instead of 26 and 25. Further programming session
on dsPIC with Johannes. Circuit drawings updated. Hardware bug discovered
in display decoder circuit: it displays the negative of the numbers we send
to it... We should have used a 74LS249 chip instead of the 74LS247 we used.
However, a search revealed that the 74LS249 is since long no longer produced
nor stocked anywere... The only solution seemed to be to insert a couple of
octal inverting bus driver chips. Fortunately we still have a few of those
in stock. Hence the addition of the 74HCT540 chips in the circuit drawing.
Software bugs reported sofar: dsPIC does not listen to all notes off command.
It does not yet refuse sound production when controller 66 is off as it should.
There seems to be a bug in the pitch bend implementation such that on start
up, <So> is a semitone out of tune. The default startup value for pitch
bend ought to be 64 (msb). Controller 7 modulation (volume controller) after
a note off, starts up the sound generator... Pitch bend is not reset after
each new note as it should in our implementation.
- 29.07.2007: driver circuit modified. We now use a top quality Altec Lansing
audio driver transformer (type 15335) in an octal vacuum tube socket. This
type does'nt show up any distortion even for frequencies as low as 10Hz. After
the modification with the octal inverters on the outputs of the BCD to 7-segment
decoders, the displays work to perfection now. First parameter reference tables
measured and checked. Problems with pitch stability: doubts as to the exactness
of the pic-code twelfth root of two implementation.
- 30.07.2007: Derivation of equations for the parameters of So. Pictures on
site updated. Bug fixes in PIC code by Johannes Taelman: ctrl7 no longers
triggers notes now. Pitch bend bugs killed. The range for pitch bend is now
a little less then a semitone up or down. Controller 66 now also disables
sound production. Controller 123 implemented on dsPIC board. Bug with <So>
starting up with the wrong diapason now fixed. Now it will start up on diapason
- 31.07.2007: Evaluation and measurement session. Functionality of program
change commands worked out.
- 01-02.08.2007: Research on lookup tables for the program changes by Kristof
- 03.08.2007: Revision of PIC specs. Tables made by Kristof Lauwers converted
to standard comma delimited list format.
- 04.08.2007: PIC programming session with Johannes Taelman. Controller 13
implemented: value 0 = empirical table, now extended down to midi note 0,
value 1= theoretical valve table after acoustic theory. Values 4,12,20,28,36,44,52,60
for individual valve combination settings. User programmable lookups still
to be done. Controllers 21 (second partial), and 22 (thirth partial) added
to midi implementation.
- 05.08.2007: Test run for Piazzolla, Contrabajando. File adapted with all
- 09.08.2007: PIC programming session. Pic 1: sysex for valves with lookup
tables implemented. Wind sysexes still to be done.
- 10.08.2007: Test runs with <So> in our ancient music program prepared
- 11.08.2007: Further development works in PIC code: Program changes for pic1
(lookup tables for wind pressure) implemented. Display mode controllers 14-17
implemented on the ds-PIC. Controller 20 (tuning) now can tune <So>
up to a quartertone upwards. At value 0, the tuning is 440Hz.
- 12.08.2007: Evaluation. debug and test under GMT. Sysex structure for dsPIC
- 13.08.2007: Test sequence files updates and adapted to new firmware.
- 17.08.2007: So sysex kode toegevoegd aan GMT door Kristof Lauwers.
- 31.08.2008: Upgrade van de GMT testkode.
- 24.11.2008: Documentation on the implementation of microtones added in manual.
(Midi implementation in the english text above).
- 22.11.2011: Glissando playing now fully implemented under GMT
- 02.11.2012: So suffers and wears out quite a bit by using it in pop music
contexts. In particular, if it is used with the wind controller turned off...
If we would want to allow such use in the future, we should consider changing
the design and use a membrane compressor driven by an ARM processor (as done
in Klar and Fa).
- 11.04.2013: Flight case for the <So> horn finished.
- 19.04.2013: <So> lost a wheel (due to a loose nut...) during its transportation
after the concert in Glasgow. A temporary fix was required. We will finish
the repair on his return in Ghent on 22nd of april.
- 22.04.2013: Wheel repaired. This wont happen again! Nothing else was damaged.
- 18.10.2015: Transport and concert at Dok19 with Kristof Lauwers.
- 19.10.2015: Check-up on <So>. Everything seems o.k.
- 26.09.2016: <So> transported to Berlin for participation in the 'Wir
sind die Roboter' Festival.
- 02.10.2016: <So> returned safely from Berlin. No failures reported.
- 28.10.2016: <So> on the road to Brugge for Iedereen Klassiek.
- 30.10.2016: Safe return from Bruges.
- 01.08.2017: <So> on the road to Liepaja (Letland).
- 09.08.2017: <So> returned safely from Liepaja. The attachment of the
wind tube to the compressor got loose. We repaired it with a new gasket in
transparent silicon glue. New short mains cord made with a CEE plug just to
save a bit on cluttered wires in our setup.
- 22.11.2017: <So> joined the party at euRobotics in Brussels. Found
o.k. on return.
- 13.07.2018: <So> played the opening of the Ghent Feasts at Sint-Jacobs.
It returned safely.
- 14.07.2018: Horn polished and cleaned.
- 26.10.2018: Shaky french made weidmueller connector (black) replaced with
an original Weidmueller orange connector.
- 02-06.05.2019: <So> on the road to Koeln for a WDR recording with
- 30.07.2019: <So> returned safely from Tomorrowland. Due to the high
humidity, we had to polish the sousaphone again. The flightcase for the detachable
horn was ruined on return: it must have been in the rain for a long time.
All wood panels are warped. We need to make a new flightcase. The tracture
operating the foot was found bend such that it didn't work. Mechanism readjusted
and tested again.
- 08.08.2020: <So> doesn't do what it should do in the register 24-47
anymore. The mouth driver must have been subjected to a lot of shocks. Readjustement,
or worse, is needed.
- 08.02.2020: Start of yet another resivion of the so robot. Considering to
use a membrane compressor now and taking advantage of the experiences gained
in the design of the <Flut> robot...
- 09.02.2020: Disassembly of the lip-driver revealed it to be completely worn
out. The original Sonics SLE60 driver no longer being produced, we cannot
replace it, so the only option left is to change the design. We started by
making a new compression driver coupled to the tuba mouthpiece. Here we used
an Atlas driver, type PD60A, rated 60W, 16 Ohms, 100Hz-3700Hz. The radial
compressor was removed as well as its Siemens Sinamics driver and all related
- 10.02.2020: New power amplifier mounted, using an LM12CLK power opamp:
It's a PCB we designed back in 1991 for use as a laboratory DC-amp. We only
had to change the 0 Ohm bridges on R1 and R2 to 500k (1%), to get the input
sensitivity required here. As this module is somewhat larger than the original
one, we had to find another place for the RED LED spotlight as well as for
the Jenssen transformer. The transformer guarantees us that the driver will
never get DC, as that would ruin it right away.
Construction of a new crook in copper and brass to replace the rubber hose
we had hitherto.
- 11.02.2020: GMT coding adapted for version 3.0. Potmeter added to set maximum
volume to protect the Atlas driver. In fact we need a far more powerfull driver
here... This is the look of the front panel now:
First tests: it plays again, but the sound quality is not too great. In particular
the pedal notes (15 to 22) do not sound well anymore. So we should consider
a new sound generator board as well as the design of better low frequency
- 12.02.2020: Start design of a new sound generator board for the compression
driver, taking off from the example of the <Flut> robot. However, if
we do this and also extend the range for <So> up to note 69, we need
to change the firmware for the hub board as well... If we want to implement
the delay between valves and sound production, we even need another hub board.
Features we certainly want to implement are: a formant filter, full ADSR controll,
wind noise, vibrato, tremolo, pitch bend, tuning. Here is the design for the
waveform generator: The
PCB had to be redesigned, as the maximum board size should be 130 x 100 mm
instead of our usual eurocard format. PCB design finished, exposed, developed
and etched right away. Here is the PCB at 200%: All
components soldered. Missing ones, to be ordered, are 100mH inductor, OP27
or OPA627 opamp, 22k log potmeter. But even without these components, the
board starts up and can be programmed right away. We can test already by using
a TLO71 instead of the OP27. With the introduction of this board, the midi
implementation will undergo major changes...
- 13.02.2020: Missing components digged up in the lab. Start coding firmware
for the newly made board. Start adapting the test code for <So> in GMT.
Power connector changed from CEE 16A, blue type to standard IEC with provision
for 2 extra mains voltage outputs, unswitched but fused with 10A. Main switch
replaced with an antique round bakelite switch, as the old one was a bit stiff
and difficult to operate for our users. Voltage monitor moving coil meter
(25V range) placed somewhat lower, to make space for the new PCB. Polycarbonate
mounting plate made for the new PIC board. Designs made for a novel very low
frequency compression driver.
- 14.02.2020: All wiring prepared for the inclusion of the new driver board.
Amplifier connection changed, dropping the Jensen transformer:
- 15.02.2020: A full day of coding and testing firmware. The mouthpiece driver,
so far, seems to work best using a squared sine wave.
- 16.02.2020: Further work on the driver firmware. Start rewriting the firmware
for the hub-board. Here we have to find suitable fingerings for the extended
compass 48 to 69. First tests with existing midi-files using <So> revealed
that edits will be required. Also , the 5V power supply, with the addition
of the new board, causes hum. We need either a transformer with a somewhat
higher secondary voltage (now 6V), or an SMPS. Adding a power-on relay would
also be an improvement. New <So> portrait pictures made.
- 17.02.2020: Rewriting the firmware for the hub board controlling the valves
and the lights. Changes on the hub board: R22, R25, Z24, C20 removed. D6 (1N5819)
replaced with wire brigde. 1k5 1W resistor removed. +24V connected on pwm
Weidmueller. We have now place for the addition of eyes... A selection of
suitable tungsten bulbs ordered from Conrad.
- 18.02.2020: ...and in fact we did add them today. Tungsten
bulbs they are, and they will run automatic, dependent on volume and note-on/off.
Some nasty bugs removed from the 24F firmware. Programming session with Johannes
Taelman on the 30F3010 ds-microprocessor, now just steering the displays.
Display controllers changed from 14,15,16,17 to 34, 35, 36, 37. The midi-note
for the display is now 0 to 99. Of course the sousaphone will only play the
notes 15 to 69.
- 19.02.2020: Registers and wave forms decided: For notes 15 to 26 we use
a squared sine waveform (Wave0 in the firmware). For notes 48-69 we use an
assymmetric wave with f + 2f in the positive half during 2/3th of the wave
with a 1/3th negative going sine wave in the second half. (Wave5 in the firmware).
No firm decision as yet for the register 27 to 47. However, <So> is
back in full working condition now.
- 20.02.2020: Register 27-47 will use Wave6 as a default. Hex dump flashed.
- 21.02.2020: <So> takes up its usual place in the orchestra again.
- 22.02.2020: Display functions for the waveforms implemented in the firmware,
added to the GMT test-code for <So>. The wave-form algorithms reside
in our library g_wave.dll.
- 23.02.2020: Some robot orchestra files adapted to the new <So> version:
La Cambiada, Intron When, Weill (Ouverture, Beggars Opera), Monteverdi - Orfeo,
- 24.02.2020: Adapting midi-files for Mainerio (Ballo Francese), Sergio Ortega
(Pueblo Unido). Hub board reprogrammed to remove a bug with the eye lights.
Further debug of the ADSR-system. Consulting with Lara Van Wynsberge for determination
of suitable cold boot default controller values. Strange observation with
the very low notes sounding quite a bit lower than calculated. It may be either
a perception problem or a problem inherent to the tuba-acoustics, as the pitch
ought to increase in precision the lower the frequencies generated in the
Notes on further possible improvements:
If ever we would make a version 4 of this robot, we would first of all, design
a low frequency membrane compressor. This would make a full ff in the low notes
possible. Second, it would be an improvement to use a 32-bit processor instead
of the 24EP128MC202. Splitting the dynamic functions from the waveform generating
functions, by using two 24EP128 chips and dividing the workload, would already
get us rid of all possible glitches.
Maintenance notes and further technical documentation:
Detailed circuitry for PIC1 on the midihub board:
Detailed circuit for the two large 7-segment display boards:
Valve solenoids: bidirectional August Laukhuff, 24V - 24 VA (24 Ohms per winding,
1 A nominal at 100% duty cycle).
Power Supply: 24V - 5A (unloaded, 29V), 33mF buffer capacitor. Fused. The protective
cover over the power supply module is to be removed to get access to the fuse.
Detailed circuit for the waveform generator: (Version 3)
Compression driver (<So> version 3.0):
- Atlas Sound
PD60A (16 Ohm, 60 W)
- Note on low frequency
- Power derating data (-12dB/oct):
||max. voltage (rms)
||limited to 42 W, due to max. amp voltage swing
Power amplifier components: (<So> version 3.0)
Display driver, using a dsPIC type 30F3010:
- circuit: The waveform
output for the moving coil driver is no longer used in version 3.0.
Lamps and LED spotlite specs:
- Red: 80mA @ 12V and 160mA @ 17V. Type LAMPL12R MR16-GX5.3 - 18 LED's. The
two red lites are connected in series.
- White: Type LAMPL12W - 18 LED's. Two lites connected in series.
- Eyes: 24V - 5W tungsten, E14 sockets. (<So> version 3.0)
- connectors used on the LED spotlights: Weidmueller 2pole, screw terminals.
Last update: 2020-02-24
by Godfried-Willem Raes