Harpsichord Robot

Research project on the development of new tools for musical expressionnt

<Cemba>

a harpsichord robot

dr.Godfried-Willem RAES

2024

<Cemba>

Het eerste door ons geautomatiseerd spinet was <Spiro>, uitgaand van een halffabrikaat spinet gebouwd door Walter Maene. Later bouwden we een tweede automatisch spinet, <Sper>, uitgaand van een Sperhake instrumentje. Daarvoor pasten we het recept van de Vorsetzer toe. Uit de bouw en de evaluatie van deze beide eerdere bouwprojekten konden we lessen trekken ten bate van dit nieuwe bouwprojekt. Potentiele verbeter-punten op het vlak van automatisering zijn daarbij:

Puur technisch gesproken, zou de beste oplossing erin moeten bestaan de dokjes van onderuit met de elektromagneten omhoog te duwen op de plaats waar de toetsen dan normaal gezien doen. Daarvoor moet het hele keyboard blijvend weggenomen worden. Maar, zonder toetsenbord wordt het wel moeilijk tot omslachtig om het klavecimbel te stemmen, want om dat dan te doen zouden we telkenmale een midi-keyboard ofwel een komputer met midi-interface moeten aansluiten. Snel wat bijstemmen is dan niet meer aan de orde. Ook de alternatieve mogelijkheid om de dokjes aan hun bovenkant met elektromagneten omhoog te trekken bestudeerden we grondig. Bezwaren daartegen zijn enerzijds dat het schroefje waarmee de demper op het dokje wordt afgeregeld dan niet meer bereikbaar is. In het gat voor die regelschroef moeten we immers draad tappen waarmee het dokje aan het anker van de elektromagneet wordt bevestigd. Een tweede bezwaar is dat het erg moeilijk wordt om het mechanisme te verwijderen en terug te plaatsen. De ankers zitten immers vast op de dokjes en de spoelen moeten dan met 54 tegelijk en zuiver in register over de ankers worden geschoven... geen sinecure. Voor <Spiro> beslisten we de elektromagneten in te zetten voor het omhoogduwen van de achterzijde van de toetsen. Het probleem daarbij was, dat we maatregelen dienden te nemen om te verhinderen dat de hele toets omhoog werd geheven eerder dan haar te doen omkiepen. De pennen waarop de toetsen bewegen voorzagen we van een stop om dit te verhinderen. Voor <Sper> konden we dit probleem vermijden door een Vorsetzer te ontwerpen.

Na lang beraad en heel wat proeven beslisten we uiteindelijk ook bij het ontwerp van het robo-klavecimbel voor een Vorsetzer-ontwerp te gaan. Het Italiaans klavecimbel waarvoor we de Vorzsetzer ontwierpen heeft 54 toetsen , 22 zwarte en 32 witte en had oorspronkelijk een verkort oktaaf. Dat verkort oktaaf lieten we vallen en vervingen we -met herbesnaring- door een normaal doorlopende stemming in het laagste deel van de tessituur.

Enig opzoekwerk leerde ons dat het klavecimbel waarvan we vertrokken een Wolfgang Zuckermann (1922 - 2018) kit moest zijn te dateren van rond 1985 en wellicht gebouwd en afgewerkt in Berlijn. Hier is een foto van een zo goed als identiek exemplaar: Op ons instrument - in speelbare staat gebracht door Chris Vandekerckhove - bevinden de bedieningsknoppen van de beide registers en die voor het luitregister, zich aan de linkerkant. Op het hierboven afgebeelde instrument zijn ze aan de rechterkant. De dokjes zijn gemaakt uit kunststof evenals de plectra zelf (Delrin). De dokjes zijn aan de onderkant voorzien van een messing staafje met schroefdraad waarmee de afstand tussen snaar en plektrum kan worden afgeregeld.

De maatvoering voor het toetsenbord is: :

Om wat meer ruimte voor het mechanisme te scheppen, verwijderden we de vertikale afdekplank -mogen we dat een boenselplank noemen?- bij het einde van de speelkant der toetsen. Deze heeft geen enkele muzikale noch akoestische funktie. De Vorsetzer wordt opgebouwd met twee lengtes 30 x 30 x 3 inox profiel voorzien van 11.5 mm gaten (voor 7/16 - 20 tpi, schroefdraad) voor de elektromagneten. De twee profielen worden vastgelast op de 10 mm dikke zijkanten met een hoogteverschil overeenkomend met het hoogteverschil tussen de witte en de zwarte toetsen (11 tot 12 mm). Het laswerk voerden we uit met manuale TIG techniek.

 

De elektromagneten hebben een DC weerstand van 27 Ohm. Bij 12 V (de nominale spanning voor 100% duty cycle bedrijf) trekken ze 444 mA, een vermogen van 5.5 W. Indien we clusters van 54 noten mogelijk willen maken, moet de 12V voeding gedimensioneerd worden voor 24 A, een 300 Watt voeding zou dan nodig zijn. Aangezien de opgemeten houdkracht van de elektromagneten bij een spanning van 9 V (de stroom is dan 333mA) door meting bepaald kon worden op 2 Newton -ruim voldoende om de toets naar beneden te houden- kunnen we bij toepassing van een kleine 9 V 100 W voeding van XP-Power, nog steeds 33 noten polyfonie ondersteunen. Meer dan driemaal zoveel dan wat een mens zou kunnen. Voor de berekening van de voeding voor de velocity pulsen moeten we vertrekken van het gegeven dat een noot-aan kommando (3 bytes) in MIDI 1 ms vergt. Wanneer de velo pulsen 10 ms duren, kunnen we dus maximaal 10 pulsen tegelijk van stroom te voorzien hebben. Bij een pulsspanning van 15 V is de stroom gedurende de puls 12 V + 15 V / 27 Ohm = 1 A. Een voeding met een stroom van 10 A moet derhalve volstaan. Bij 15V pulsspanning en 9V houdspanning wordt dit 24 V / 27 Ohm = 888mA.

dc   100% 50% 25% 30% 10%
U   12V 17V 24V 27V 38V
P   5.5W 11W 22W 27W 55W
I   0.444A 0.639A 0.888A 1A 1.4A
t   230" 25" 20" 6"
             

De bouw leverde wel wat moeilijkheden van ontwerptechnische aard op. Aanvankelijk hadden we alle spiraalvormige terugkeerveertjes op de elektromagneten helemaal verwijderd. Uit proeven was namelijk gebleken dat dit de repetitiesnelheid zeer ten goede kwam. Maar... omdat het nochtans erg kleine gewicht van de ankers zo permanent op de toetsen kwam te liggen, kwam de demping van heel wat snaren bij het loslaten van de toets in het gedrang. De voor die demping nodige kracht bleek tot overmaat van ramp, heel erg verschillend te zijn van toets tot toets en volkomen afhankelijk van de afregeling van de dokjes. Dit noopte ons ertoe alle veertjes opnieuw aan te brengen. Het daardoor geintroduceerde probleem was nu, dat het hele mechanisme erg luidruchtig werd omdat bij het lossen van de toetsen, de ankers vrij konden 'dansen' op het aanraakvlak van de toetsen. Om dat rammelende euvel op te lossen konstrueerden we een dubbele met dik vilt beklede demperlat, waarmee de veerresonanties grotendeels konden worden gesmoord. Een volgend probleem waarmee we te maken kregen was de ongelijkheid van de nodige aanslagsterkte voor de zwarte versus de witte toetsen. De verschillende lengte van de hefbomen, die de toetsen uiteindelijk toch zijn, maakt dat er een krachtverschil is van enkele procenten. Dit losten we op door kompenserende velocities uit te sturen voor de kromatische en de diatonische tonen. Een verder inherent probleem was dat de aanslagkracht ook een funktie is van de snaarlengte. Voor de lage -en dus lange- snaren is alweer iets meer kracht nodig. Tenslotte kregen we ook nog af te rekenen met het -op zich simpel in te zien- verschil in aanslagsterkte in funktie van de registers. Immers wanneer een toets twee snaren moet tokkelen, is een dubbel zo grote kracht nodig dan bij een enkele snaar. Uiteindelijk slaagden we erin al deze parameters in de firmware in te bouwen waardoor die met recht en reden 'smart' kan worden genoemd. Een laatste, maar eigenlijk voor ons zo goed als onoplosbaar probleem heeft te maken met onderlinge verschillen in kracht naargelang de lengte van de plektra in de dokjes. Onoplosbaar, omdat dit geheel afhangt van de nauwkeurigheid waarmee de speler of instrumentenbouwer die plektra snijdt. Voor wie het allemaal wil narekenen, hier een gedetaileerde maatschets voor dit klavecimbel:

Na veel wikken en wegen besloten we -na voltooing van de eigenlijke Vorsetzer- toch ook een poging te wagen om ook de registers te automatiseren. Een vrij hachelijke onderneming omdat de manier waarop die registers werken allesbehalve een toonbeeld is van goed mechanisch design. De idee erachter is de hele dokkenlijst met plektra voor het stel snaren voor dat register zowat 2 mm te verschuiven, zo dat de plektra de snaren niet meer kunnen raken. Probleem is echter dat die dokjes tijdens dat verschuiven aan de onderkant rusten op het uiteinde van de toetsen. Na verschuiven van de dokkenlijst staan alle dokjes dan ook een beetje schuin. Die schuinstand wordt opgeheven vanzodra de toetsen de betreffende dokjes omhoog geduwd hebben. Het resultaat is, dat die registers pas na wat inregelen en inspelen redelijk betrouwbaar blijken te werken. Automatisering van een dergelijk mechanisme is om die reden een hachelijke onderneming omdat we niet kunnen garanderen dat het altijd helemaal betrouwbaar zal werken. Voor die automatisering dienden zich in grote lijnen drie verschillende mogelijkheden aan:

1.- gebruik van twee stappenmotoren met schroefdraadstang waarmee de dokkenlijsten heel precies kunnen worden verschoven en gepositioneerd. Probleem met deze aanpak is dat de twee stappenmotoren vrij groot en zwaar zijn en dat we daarom telkens slechts een motor per kant van het instrument zouden kunnen monteren. Verder probleem is dat het bewegen van de registers altijd gepaard zal gaan met glijdende piepjes en geluidjes veroorzaazkt door de motoren. Een voordeel zou evenwel kunnen zijn dat tussenliggende posities mogelijk kunnen zijn en dus een zekere mate van regeling van de aanslagsterkte. Experimenten die we uitvoerder met zo'n mechanisme brachten evenwel aan het licht dat het principe weliswaar goed werkt, maar dat de onderlinge verschillen in sterkte tussen de verschillende tonen heel erg groot worden.

2.- gebruik van twee bidirectionele elektromagneten. Gezien de nodige kracht, moeten we in dit geval vrij grote magneten gebruiken die we dan -zoals in bovenstaand geval met de motoren- elk langs een andere kant van het instrument moeten monteren. De breedte van het instrument zou dan met minstens 40 cm vergroot worden. Het risico op beschadiging tijdens transport wordt daardoor bijzonder groot. Een bijkomend probleem is dat we niet direkt een leverancier of fabrikant weten die dergelijke elektromagneten met een traject van maximaal 2 a 3 mm in zijn leverprogramma heeft.

3.- gebruik van vier trekmagneten. Hier kunnen we volstaan met 6.5 Watt / 100% duty cycle types, die we met een verdubbelde spanning in pulsbedrijf kunnen aanwenden. Het vermogen (en dus ook de geleverde kracht) wordt dan opgedreven tot de viervoudige waarde, 24 Watt dus, bij duty cycle 25%. Dit kan, omdat eens de dokkenlijst verschoven is, de magneten verder onbekrachtigd kunnen blijven. Ook in dit geval zijn we verplicht aan elke zijde van het instrument twee dergelijke magneten te plaatsen. De uitsteeksels die dit voor gevolg heeft kunnen echter worden beperkt tot 50 mm.

We besloten de derde mogelijkheid uit te werken en zowel in hard- als firmware te implementeren. Extra processoren waren daar niet voor nodig maar wel een extra voedingsmodule voor de registermagneten: 26V - 90W, er kunnen immers maximaal twee magneten tegelijkertijd bekrachtigd worden.

Gebruikersaanwijzingen en instrukties:

Voor het wegnemen van de vorsetzer evenals voor het verwijderen van de slede met de voedingen en de besturingscomputer, moet de stroom volledig uitgeschakeld worden. Ook voor het wegnemen van de demperlat -nodig bij het stemmen van het instrument- raden we sterk aan de stroom volledig uit te schakelen.

Voor transport raden we aan het instrument steeds horizontaal te transporteren en het op een zachte ondergrond te leggen. Een groot stuk schuimrubber is heel erg geschikt.


Midi Mapping and implementation:

Midi channel: 0 . If one wants the instrument to respond to another channel, the corresponding constant in the source code has to be changed and the code recompiled on the hub-board only.

Note off: release not implemented.

Note on: velocity implemented, but the ideal value should be 64 If plectra are changed, different velocity values might give better results. With velo value 1, no substantial pulse will be applied to the solenoids. This opens the possibility to lift the dempers from the string(s) without playing the note itself. If the default velocity override-mode is used, velocities can be controlled with controller 81. Also in this case, setting controller 81 to 1, will just lift the dampers.

Key pressure: implemented for automatic note repeats. The repetitions rate can be different for each individual key. [we ommitted this feature in the final design, as fast repetitions on notes are potentially very destructive for the instrument. If required, there is a metacompiler command in the PIC sourcecode, wherewith it can be re-enabled.].

Controllers:

Controller #30: sets the global repetition rate. However, note that note repetitions will only be synchronous if the note on commands start at the same time.

Controller #66: ON/OFF switch. This controller is mandatory! If the instrument is not in use, always switch power off using this controller. Do not repeat on/off commands fast, as this can be detrimental to the power supplies. In normal use, leave some 5 seconds between off/on commands. This controller always performs the all-notes-off command and resets all controllers to their default value.

Controller #69: switches lights automation mode on of off. By default, this is switched to ON.

Controller #80: ON/OFF for velocity control. OFF means, the robot disregards velocity bytes send with note-on commands but uses either the constant/smart optimum value or any fixed value set by the user using controller #81. The default value is always OFF.

Controller #81: set a value for the constant/smart velocity value to be used on reception of note-on commands. If this controller is set to 0, the default values will be applied. With value 1, it will just lift the dampers. Whenever this controller is sent, controller 80 will be reset to OFF and incoming velo bytes will be replaced. Compensation for the difference in required force for black keys versus the white ones is automatic. Scaling in function of the pitch (low strings require slightly higher velocities than high strings) as well as in function of the number of registers selected is automated as well. There is some intelligence in the system... If controller 80 is set to any value other than 0, none of these 'smart' features are applied. In that case it's up to the user to send velocities taking into account all these dependencies. The advantage of using individual manual velo settings are in the possibility to take into account note-to-note differences in the instrument itself and thus to minimize any mechanical noises from the key mechanism.

Controller #82: Set the duration of the pulse applied to the register solenoids whenever register changes are issued using the program change command.

Controller #123: all notes off. Releases all solenoids. Does not reset controllers.

Program Change: used to adapt the velocity scaling according to the registers selected. Values are: 0 = no register selected, 1 = first 8' register, 2 = second 8' register, 3 = both 8' registers are selected. When no registers are selected, it is possible to play in a ppp mode, whereby no strings are plucked but at the most gently touched by the plectra with the dampers for the notes played lifted up. The use of electromagnets to automate the registers is implemented on the hub board, and we did mount the required solenoids. However, there may be some problems here as the trajectory for the sliding mechanism is smaller than 2 mm, the force needs to be quite large and... last but not least, aural feeback seems to be required here as the mechanism is inherently not really reliable. The duration of the pulses the register solenoids get on reception of program change commands can be controlled with controller #82.

Aftertouch: not implemented
Pitch Bend: not implemented

 

Technical specifications:

Design and construction: dr.Godfried-Willem Raes

Collaborators on the construction of this robot:

Music composed for <Cemba>:

Designed to be used by Marc Sinan.

Pictures taken during the construction in our workshop:

 

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

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

 


Bouwdagboek - Construction & Research Diary:


(Terug) naar logos-projekten:

projects.html

Terug naar Stichting Logos' index-pagina:

index.html

Naar Godfried-Willem Raes personal homepage... Naar katalogus instrumenten

gebouwd door

Godfried-Willem Raes

Go to Godfried-Willem Raes' homepage Robotorkest

Last update: 2024-07-10 by Godfried-Willem Raes

The following information is not intended for the general public nor for composers wanting to make use of our <Cemba> robot, but is essential for maintenance and servicing of the robot by our own collaborators or by technicians employed by our clients. It also might be usefull for people that want to undertake similar projects. Feedback is mostly welcomed.

Technical drawings, specs and data sheets:

Power supplies:

Wiring & circuit details midihub board:

Power MOSFET's used on the hub-board: IRLZ34NPBF ( 55V, 30A, Rdc <= 0.035 Ohm). For automation of the registers and potential later expansion (lights, sensors).

Source code firmware for this board: Cemba_Hub.bas Hex-dump for the compiled code: Cemba_Hub.hex

Circuit details solenoid driver boards:

board specifics:

Source code firmware for these boards: Cemba..bas Hex-dumps for the compiled code: Cemba1.hex , Cemba2.hex, Cemba3.hex, Cemba4.hex For compilation the Positron compiler should be used. For uploading we use MPLAB (Mircochip) in tandem with the PICkit3 programmer.

Tubular solenoids: ITS-LZ-1642-D-12VDC, Conrad order nr 506148. DC resistance 28 Ohm, cold.

+9V - 11A power supply module: XP-Power ECM100US09. Data sheet.

Register solenoids (4 pieces) : 12 V - 6.5 W @ 100% duty cycle. BLP type 41 120 610 620. Farnell order code: 9687769

Mechanical construction drawings and welding plan:

Connector wiring:

Download high resolution pictures of this robot:


References:

Raes, Godfried-Willem, "Expression control in musical automates", 1977/2024,

 


Prijsberekening:

14-note PCB's:

28 Mosfets TO220 (IRL640 and IRF540)
2.50-
70,00-
14 T0220 dubbeldiodes
2.20-
30,80
14 P-channel mosfets
3.00-
42,00-
1 18F4820 Microchip processor
23,.00-
23,00-
1 X-tal 10 MHz
3.30-
3.30-
40 weerstanden metaalfilm
0.12-
4,80-
14 Schottky diodes
0.20-
2,80-
14 Zener 10V - 500mW
0.80-
11,20-
5 Keramische kondensatoren
.0,40-
2,00-
1 Tantaalcaps
3.20-
3,20-
2 6-polige Weidmueller connectors
8.20-
16,40-
1 3-polige Weidmueller connector
4,30-
4,30-
1 7-polige Weidmueller connectors
8.50-
8,50--
14 Tubular Solenoid Intertec ITS-LZ-1642-D-12VDC
27.50-
385,00-
1 LED - 5 mm
0.30-
0,30-
1 programmeerconnector 6p.
1.25-
1,25-
1 PCB, Europrint -JT met masker
9,60-
9,60-
1 werkdag assemblage en testen
350,00-
   
   
968,45-

Totalisatie bouwkost:

4-stuks dito, volgens bovenstaande tabel
3.873,80-
Neopreen sokjes, custom made 54 x 2,20-
118,80-
Voedingen: ( 1 x 9 V / 11A en 1 x 15 V / 10 A)
500,00-
Hub print: (5V power, mains relay, reg. control,midi I/O)
600,00-

Ontwikkeling, testen en debuggen firmware voor de vijf microprocessoren:14 werkdagen a 350,00- =

4.900,00-
Inox profielen, TIG-laswerk, boutjes, moeren en andere bevestigingsmiddelen, boor- zaag- en freeswerk, dempingsvilt, montage en afregeling
1.500,00-
 
subtotaal voor een 5-oktaafsinstrument
11.492,60-
 
 

Geschatte kostprijs van het gehele bouwprojekt, inklusief tweedehands klavecimbel: 15.000,-

 

Automation of the registers, extra cost calculation:

Solenoids 12V/ 6.5W
38,00-
153,60-
Mounting brackets right and left side
10,00-
20,00-
Power supply, Bionix 26V - 90 W modular
125,00-
M3 thread, stainless steel
21,00-
 
Mechanical work (days)
4
Firmware development (days)
Testing and evaluating (hours)