Logos Foundation

Flanders Robotics

<Ekla>



an automated D or Eb clarinet

Godfried-Willem RAES

2021- 2026

 

Version 1.0


<Ekla>


Instrument:

This small clarinet must be dated in the first half of the 19th century. The lowest note it sounds now is F# (midi note 54) . This would lead us to assume it is a quite rare D-clarinet, however taking into account the pitch in the time of its construction, it most likely is an Eb instrument with a diapason around 415Hz. On the instrument no signs of the maker could be found. Our colleage dr.Ignace De Keyser agrees on this and tends to date it around 1820.

The mouthpiece on the picture is most certainly not original as mouthpieces from that time used to be in wood and used twine or rope to secure the reed to the mouthpiece. We bought the instrument in the mid seventies from the Maheu woodwind workshop in Ghent. We know for sure -as they told us- it was not made by them, but brought in for repair by a client that passed away and this never picked it up.

Automating the fingering requires 7 valve-solenoids for the open tone holes and 5 for the valves, 4 closed at rest, 1 open. The fingering table ought to be like this:

Tuning:

The clarinet was automated using the same mechanism as developed earlier for robots such as <Asa>, <Fa>, <Ob> and <Autosax>. Thus it uses a membrane compressor and an acoustic impedance convertor with a capillary to drive the following air column into resonance.

The diapason can be selected and/or adjusted using controller 20. By default the clarinet plays in equal temperament with a diapason set to A = 440Hz. The range corresponding to that of a (quite rare) high pitched D-clarinet.

Excitation:

Acoustic researchers for a long time have been looking into methods to capture the source of the vibration in wind instrument mouth pieces. Practical methods to measure and record the vibration of lips or reeds on wind instruments directly, never lead to convincing results, as the transducers required for measurement influence normal sound production to a great extend. Hence our idea to derive the vibration of the excitation source indirectly. A now verified method to generate the required wave-form lookup tables for driving the membrane compressor coupled to the impedance convertor we developed and tested thoroughly in 2020 for robots such as <Flut>, <Autosax>, <So>, <Hunt>, <Teno>, <Cornalto>, <Trumpeter> and now also <Ekla> consists of the following steps:

1. Excite the membrane compressor with a waveform (at least 4 periods are required and these must be looped in the firmware) corresponding to what you would like the robot to sound like. Lets call it WavIn(). This waveform must be without any modulation and recorded in an anechoic chamber using high quality microphones at a distance not larger than the size of the sound source. This signal can best be derived from a recording of the instrument, played in the traditional way. So, it should be recorded prior to modifications required to build the actual robotic instrument. Make sure you record sound samples for a large series of different notes in different dynamics and registers as excitation waveforms differ greatly in function of these parameters.

2.- Record the sound of the robot, using a high quality condenser microphone, with this excitation and convert it to a format suitable for the microprocessor selected. Lets call this waveform WavOut() . Make sure the sizes of WavIN() and WavOut() are the same and take care to align the phase as well as possible. Normalization is also required. This is a quite tedious job, in particular for instruments where the contribution of the instrument to the sound result is relatively small as compared to that of the playing style, the mouthpiece etc. For the saxophone this is noticeably the case, whereas we had less problems in this respect with the oboe and the flute. The clarinet comes in somewhere in-between.

3.- Calculate the required excitation waveform as: WavEx() = (2 * WavIn()) - WavOut(), in the time domain. Normalize this wave and remove any DC components. This wave now is a model of the excitation wave deprived from the influence of the instrument. Of course this cannot be fully true, as it doesn't take into account the mutual coupling of excitation and instrument. However, the model does work quite well on practical robots if enough waves are prepared to cover the different registers and dynamic levels.

4.- Reprogram the microprocessor to use WavEx() as an excitation waveform for as many notes and dynamics as the microprocessor can cope with.

This method was also applied in the construction of the <Flut> and version 3 of the <So> robot in 2020. Of course, the procedure ought to be performed for a note in each register the instrument is supposed to sound. It would be ideal -but tedious- to follow this procedure for each individual note. However, the microprocessor used should than have a very large memory. The 16 bit 24EP256MC202 type used for the <Ekla> robot, is limited to 32kBytes, enough for a maximum of 20 wavetables, 1024 bytes each.

The theory behind this approach is that the excitation-wave should correspond as much as possible with the vibration of the lips or reeds that cause the vibration in the instrument. As it is nearly impossible to capture this vibration by direct methods, we reason that the sound produced by the instrument is the sum of the excitation and whatever the instrument adds (or omits) to it. Thus, by sending a sample of the normally produced sound to the membrane compressor, we should get the excitation wave plus twofold the contribution of the instrument. By calculation of WavEx() = (2 * WavIn()) - WavOut() we get a model of the excitation wave. When studying and analyzing waveforms produced by real instruments, you will notice that in fact no two periods are the same, neither in shape, neither in length. That's why we take a minimum of four full periods. Do not use more than say 16 periods though, because it may introduce subharmonics, if not even rhythmical pulsation in the sound on long sustained notes. With four periods, you get a very soft subharmonic two octaves below the sounding pitch. For this reason we always add a tiny amount of jitter to the sampling rate. In theory it should be a Gaussean, but in practice straight random jitter over a narrow range leeds to very acceptable results. No two periods have exactly the same length, just as in humanly played wind instruments.

Construction:

This small clarinet can move slowly forwards up and down. It is mounted on a 3-wheel base.



Midi implementation and mapping:


The midi channel <Ekla> listens to is 6 (If counting from 1, this would be channel 7).

Lights:

note 120:
note 121:
note 122:
note 123:
note 124:
note 125:.
note 126::
note 127: not yet mounted lights, reserved for future uses.

Motor: automated movement if controller 69 is set.

Controllers:

#1: controller 1: Wind noise in the sound of the clarinet [default setting 48]
#3: controller 3: Vibrato depth for the clarinet[default setting 8]
#4: controller 4: vibrato speed for the clarinet [default setting 94]
#5: controller 5: tremolo depth (amplitude modulation) for the clarinet [default setting 4, high values give flatterzunge]]
#6: controller 6: tremolo speed for the clarinet . [default setting 20]
#7: controller 7: volume control - global volume controller for the horn.[default setting: ]
#15: controller 15 - ADSR time scaling for the clarinet[default setting: 114]
#16: controller 16 - attack time controller [default setting: 32]
#17: controller 17 - attack level controller [default setting 127]
#18: controller 18 - decay time controller [default setting 91]
#19: controller 19 - release time controller (release time can also be controlled with the release byte of a note-0ff command)[default setting 100]
The interdepencies for the controllers 7, 15, 16, 17, 18 and 19 are shown in the graph below (It's the graph for <Hunt>, but for <Ekla>, it's the same:

#20: controller 20 - tuning for the clarinet. By default equal temperament and A = 440 Hz for value 64.

#40: This controller selects the waveform lookup for the register 41 to 52. Possible values are 0 to 6. Default value is 6.
#41: This controller selects the waveform lookup for the register 53 to 70. Possible values are 0 to 6. Default value is 5.
#42: This controller selects the waveform lookup for the register 71 to 81. Possible values are 0 to 6. Default value is 5.
#43: This controller selects the waveform lookup for the register 82 to 91. Possible values are 0 to 6. Default value is 2.
#66: Power on / off. This command also resets all controllers to their default cold-boot values. Power on recalibrates the horn and brings it back to a central position.
#68: Motor speed. Default value is 100.
#69: Enable or disable automation of the eye-lights and the motor. Default value : > 0, ON. To switch this off, send controller with value = 0.
#80: Dynamic range controller. Default is 32 for 30 dB dynamic range.
#123: All notes off

pitch bend: range 1 semitone (-50 to + 50 cents) [note that pitch-bend must follow a note-on].

  subject to changes during the building process 



Technical specifications:

Design and construction: dr.Godfried-Willem Raes (2020- ...?)

Collaborators on the construction of this robot:



Music composed for <Ekla>:
none so far

Note that Igor Stravinsky's 'Le Sacre du Printemps' has an original part for a D-clarinet!

 

This robot is projected to be ready by the end of 2026, if Godfried's health permits and if we can get some subsidy again to continue our research.

 

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

Construction diary:

15.02.2020: First sketches and designs.
02.02.2026: Project taken up again. We might use the bistable solenoids we still have in stock from the construction of <Tinti> for the open tone holes on this clarinet. Anyhow, we dont have the money anymore to buy new and more suitable solenoids for this project.
03.02.2026: Construction of an acoustic impedance convertor on the lathe, starting from brass staff material. For the compression driver we re-use a driver that we used in one of the early versions of our <Autosax> robot. It is certainly more than powerfull enough. 30 Watts is our estimate.
04.02.2026: First acoustic tests with the impedance convertor and the motor driver. The instrument appears to be either a D clarinet, diapason 440Hz or an Eb instrument, diapason 415Hz.
05.07.2026: Cound we use this board for the fingering? : It was designed in 2025 as a hub board with 26 outputs for hold only solenoids.
06.07.2026: If we use the bistable solenoid assemblies (Syndyne) we have in stock, we need 14 outputs for the open holes and 5 to 10 outputs for the valve operated holes, depending on the solenoids to be used here. Thus a 26 output board would reach out here.
07.07.2026: Start construction of a carrier plate in stainless steel.
25.07.2026: Project taken up again after a pause as we had to work on our full evening 'Linac Elekta' production with Emilie De Vlam for the Ghent feasts.
26.07.2026: design and construction of brass 'fingers' for the open holes on the instrument. Welding of the driver part to the instrument carrier. Constructing of a holder for the 'eye' lights.
27.07.2026: Further work on the preparation and selection of suitable solenoids to operate the valves. For the right pink tonehole, the bidirectional solenoid will not work. We have to use a simple square 12V solenoid with a spring. A 32 mm pvc clamp digged up to clamp the clarinet at its bell. Do these clamps have an M7 thread really?
28.07.2026: Continued work on the left side solenoid assembly.
29.07.2026: Horizontal tube welded on the clarinet holder. So the robot will be able to move a bit, provided we can dig up a suitable motor. Mounting of the solenoid for the open dumb hole on the underside of the clarinet. Working on the automation of the side valves for the left hand little finger. By accident we perforrated the windings of a coil we were going to use for the low G# valve...
30.07.2026: Trying to find a replacement for the perforated valve... A Laukhuff type digged up and mounted. A day of work lost...
31.07.2026: Vertical L-profiles sawn and drilled to mount the bearings. Sizing: 30 x 30 x 3, stainless steel. Study of the possibilities for the wheel base as well as the mounting for the PCB's. We still have a couiple of rollator wheels, diameter 100 mm, width 50 mm, axle 8 mm, that could be used in combination with a frontal wheel, building heigth 105 mm. Heavy but sturdy: use a 10 mm thick bottom plate?
01.08.2026: Hele dag gewerkt aan het boren en handmatig tappen van de bodemplaat uit 10 mm dik inox. Gebruikte tapmaten: M4, M5, M6 en M8. Nog geen uitsluitsel met betrekking tot een bruikbare motor. Het MIDI-hub board moet nu onderaan gemonteerd worden.
02.08.2026: Boren van de montagegaten in de vertikale L-profielen. Lassen ervan op de basisplaat. Uitsnijden van een polykarbonaat drager-plaat voor de puls-hold boards, de power-amp module en de generator. Motor besteld bij RS-components: Mellor Electric UB T6, 24 W, 230 V RS bestelnummer RS 248-3659. Toerental 80 rpm, as 7.95 mm, as lengte 31 mm, moment: 1.68 Ncm. Kostprijs 97 Euro. Levering op 5 augustus...
03.08.2026: Tentatieve eerste montage van de robot, nog zonder voedingen en elektronika. Uitzoeken koelvin voor de Kemo versterkermodule. Montage van de versterker, de synth print en de pulse-hold bordjes op de achterzijde: De kogel is door de kerk: we gaan twee nog resterende puls/hold boards recycleren voor de besturing van de kleppen. Da's alvast weer wat uitgespaard... Voor het hub board kunnen we de film voor <Ubu> (06.10.2025) gebruiken om een nieuw board op te bouwen. Dit board heeft twee Crydom optorelais, waarvan de eentje kunnen gebruiken voor de Crouzet motor.
04.08.2026: CT-scan vanmorgen... Toestand blijkt redelijk stabiel. Even pauze voor het werk aan <Ekla>... De <Ekla> robot geimplementeerd in GMT. De testkode is gelijkaardig aan die voor <Teno>. De GMT fileplayer moet nog gecheckt worden. Midi hub board belicht en geetst, gebruik makend van de PCB film voor <Ubu>. Printje geboord en meteen het soldeerwerk aangevat.




 

 

 


Maintenance information:

 

 

 



Last update: 2026-08-06

by Godfried-Willem Raes

Further reading on this topic (some in dutch):


Technical data sheet, design calculations and maintenance instructions:

Wheels: Back : 100 mm x 50 mm, axle 8 mm. Massive PU tires. Recycled from an old wheelchair/. Font wheel: pivoting, Green PU tire, building height 105 mm.

Base plate: stainless steel, thickness 10 mm. AISI 316. 400 mm x 200 mm.

Vertical profiles: Stainless steel, 30 x 30 mm, 3 mm thick.

Analog amplifier module: Kemo, M034N. Kemo Electronic Gmbh, Leher Landstrasse 20, D 27607 Geestland. BRD

 


References: