<Pos>

an automated organ positive

Godfried-Willem RAES

2018

[Nederlandstalige versie]

Robot: 'Pos'

In December 2017, out of the blue, we received an e-mail from brother Kris Oelbrandt in a Dutch Benedictine monastery offering us a small pipe organ for free. Of course we could not turn this down and on January 2018 we transported the instrument to our instrument building workshop at Logos Foundation. The organ was made by Gerard Pels in the early nineties of the 20th century, an outstanding organ builder based in Herselt. He was born in 1955 and died in 2014. In 2017, the Pels organ factory itself went bankrupt and stopped activity. The original design and order was for a tuning system using 13 notes per octave based on just intonation intervals, an idea worked out by composer Kris Oelbrandt. Here is a link to the document describing this tuning system. When he entered the monastery in 2002, the organ found a use in the religious rituals at the monastery in Zundert and to serve that purpose it was modified and retuned by Gerard Pels to conform to 12-tone equal temperament. This is the organ as it arrived in our workshop: The sizes were: depth: 335 mm, width: 1223 mm and height (including the pipes): 2210 mm. (sizes not including the keyboard, a separate component).

The single register (8' holpijp) was realized as follows: The lowest octave (note 36 to 48) are stopped wood pipes placed on the back row on the wind chest, the mid register (notes 49 to 93) are stopped tin pipes with an inverted resonator tube mounted on the inside of the pipe stops, and the highest 7 notes (94 to 100) are open tin pipes, slightly anti-conical. The pipes are arranged in three rows. In the windchest, solenoid driven valves are used, thus highly simplifying the automation of the instrument by us. The keyboard was a regular 5-octave organ keyboard with electric contacts connected to the organ through a single multi-conductor cable. Here are some detailed pictures:


Here is a drawing of the construction of the metal pipes, showing the internal resonator tube (inside soldered chimneys, in the proper language of organ builders).

Unfortunately for us, the multi-cable used no color coded wires but plain and very thin enameled copper wire... We could figure out the wiring from measuring and testing on the connector used to connect organ and keyboard:

The original wiring had a common ground connection and diodes across the pallet valve solenoids. It was wired as drawn here:

All diodes needed to be removed and replaced with VDR's or diodes on the control boards to make automation easy. High side mosfet switches are a lot more troublesome to design than the usual low side switches. This is what the pallet lifting solenoid valves inside the windchest look like:
Type 1:

Type 2: Type 3:

This is a picture of the original organ keyboard: The large connector originally found a place on the backside of the case. Of course we had no need for a keyboard, as in this project we decided to go for a stand-alone robot. Nevertheless, it can still be played with any standard MIDI keyboard. We rewired the complete windchest, using color coded wires to make the final wire-up a lot easier as compared to the tiny enameled copper wires used in the original design: : The wind, delivered by a Laukhuff Ventola 600 Pa compressor, is stabilised using spring loaded bellow: The round hole in the picture is the wind inlet from the compressor.

The entire circuitry for this robot makes use of five fast PIC controllers: Microchip PIC18F4620 - I/SP types. For each group of 14 notes, a controller takes care of the midi input parsing and the note on/offs, MOSFETS and valve solenoids. There is precise control over the note attack (the velocity byte accompanying each note on command controlling the response speed of the valves). This design was more or less a direct copy of what we did for our <Bomi> robot, although here we did not implement PWM during note hold. Key pressure is used for note-repetition. Thus, here again, it is important to the user to know that the velocity byte in the midi note-on command does not control sound volume, but only the way the pipes speak. It is strictly an attack control. For detailed circuitry and board population, we refer to the webpage of our <HarmO> robot our since it uses the same boards. Here is the complete circuit for a board serving 14 notes, showing the microprocessor port assignments. : The PIC firmware however is very similar to what we wrote for <Bomi>, but here we implemented key pressure control for note repeat. The boards with components for this circuit is shown here: A sixth PIC microcontroller (a 18F2525 type) takes care of the steering of the windvalve/tremulant as well as of the motor commands and the primitive PWM for the motor controller.

The circuit overview for the <Pos> robot looks like this:

For the motor control, we wanted to keep things as simple and cheap as possible, avoiding to use an expensive regular 3-phase motor controller. Thus we revisited an old and proven but quite primitive circuit principle: This is pretty easy to implement on a PIC controller, as long as the controll pulses are longer than a full period of the mains frequency, 20 ms and/or even multiples of a full period. Due to the inertia of the motor and its fan rotor, we can go with very slow pwm. Obviously it is impossible to let the motor run at speeds higher than the nominal speed, as this would require changing the mains frequency. The solid state AC relay we used is MP240D4, as it's a zero-cross relay specified for 4 A at 280 V ac. The complete circuit for the MIDI parser and hub board is this:

The firmware for all PIC microprocessors was written in Proton Basic.

Firmware for the midi-hub and motor board

Version 1.2 - 19.05.2018

 

source code hex-dump
Firmware for the pulse-hold boards source code hex dump board 1
    hex dump board 2
    hex dump board 3
    hex dump board 4
    hex dump board 5

Description of the organ register:

 

Circuit Overview:

Mapping

Midi implementation:

The midi channel for <Pos> is 2 (0-15) or 3 (1-16).

Midi note range: 36- 100., velocity implemented (steers the speed wherewith the valves do open and hence the note attack). Individual note aftertouch (polyphonic) under development.

Note Off commands are required, note release is not implemented.

Key pressure is implemented for automatic note repeats. The pressure value determines the repetition speed. Maximum repetition speed is 16Hz, but if such fast values are used, velocity values have to be kept at very low values. It is obvious that when the repetition lenght is shorter than the velocity pulse lenght, repetition will not work. Also, note that repeats using key pressure are 'sticky'. The setting is not cancelled with a note off. So, once set all new note-on commands will lead to repeated notes, unless key pressure is set to zero again.

Controllers:

Controller #7 is used for the wind pressure (motor speed). The normal setting should be 127. Default startup value in the PIC firmware is 0. It cannot be used for fast wind pressure modulation but is perfectly suitable for slow crescendo and decrescendo. Note however that the pitch as well as the intonation may be affected when <Pos> is operated on non-standard wind-pressures.

Controller #30 is used to set repetition speed for all notes to one and the same value. The parameter determines the repetition speed. (range 2Hz to 16Hz for values from 1 to 127). Repetitions start on reception of a note-on command. Thus, phase shifts of the repetition frequency will occur if notes are not started at the same time. This controller, with value 0 can also be used to cancel all repeats.

Controller #66 is used to switch the robot on or off.

The tremulant is implemented using a large solenoid working on the bellows. Modulation speed can be set using midi controller 1. Default value for controller 1 when using the tremulant: 64.


Controller #123: <Pos> responds to the midi all-notes-off command. This command also switches off the lights, but not the motor. To switch the motor fully off, controller 66 should be used or else controller 7 can be set to zero.

Technical specifications:

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

Collaborators on the construction of this robot:

Music composed for <Pos>:

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

Voorlopig is geen Nederlandse beschrijving beschikbaar. Zolang we geen strukturele erkenning krijgen van de Vlaamse Gemeenschap, en zolang hoofdzakelijk korrupte poco-pomo maffiosi de ministeriele advieskommissies bevolken, zal daar ook niet meer aan gewerkt worden.

Tessituur:

Op 13 september 2018 vertrok <Pos> voor zes maanden naar de Speelklok Museum in Utrecht. Ter gelegenheid daarvan werd hij voorzien van de mogelijkheid volkomen autonoom een aantal demo-stukken te spelen. In 2020 was <Pos> te gast op het Lunalia festival te Mechelen met de 'Musik fuer ein Floetenuhr' van Ludwig van Beethoven.


Building logbook Bouwdagboek
Following diary given an idea of the work involved in the making of the <Pos> robot. It also illustrates the building proces.

Omdat ons vaak wordt gevraagd hoeveel werk en tijd kruipt in, en nodig is voor, het bouwen van dergelijke muzikale robots, houden we ook voor <Pos> een beknopt en geilllustreerd bouwdagboek bij:

 

To be done


Robodies Pictures with <Pos>:

none as yet. Candidates?

 


(Terug) naar logos-projekten:

projects.html

Terug naar Logos' index-pagina:

index.html

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

gebouwd door

Godfried-Willem Raes

Naar Godfried-Willem Raes' homepage  
by Godfried-Willem Raes

Technical data sheet and maintenance instructions:


Wiring tables for the three PIC 18F4620 controller boards:

Board 1:

board output connector pin mapping wire color remarks PIC pin Weidmueller
1 2 note 36 black pulse/hold 4,3 4p1
2 3 note 37 brown pulse/hold 2,5 4p2
3 4 note 38 red pulse/hold 6,7 4p3
4 5 note 39 orange pulse/hold 8,9 4p4
5 7

note 40

yellow pulse/hold 10, 37 4p1
6 8

note 41

green pulse/hold 36, 35 4p2
7 9 note 42 blue pulse/hold 34, 33 4p3
8 10 note 43 purple pulse/hold 30, 29 4p4
9 12 note 44 grey pulse/hold 28, 27 4p1
10 13 note 45 white pulse/hold 24, 23 4p2
11 14 note 46 black - white pulse/hold 22, 21 4p3
12 15 note 47 red - white pulse/hold 15, 16 4p4
13 17 note 48 red - black pulse/hold 17, 18 2p1
14 18 note 49 brown pulse/hold 19, 20 2p2

Board 2:

board output connector pin mapping wire color remarks PIC pins Weidmueller
1 2 note 50 orange - red pulse/hold 4, 3 4p1
2 3 note 51 orange - black pulse/hold 2, 5 4p2
3 4 note 52 yellow - black pulse/hold 6, 7 4p3
4 5 note 53 green - yellow pulse/hold 8, 9 4p4
5 7 note 54 blue pulse/hold 10, 37 4p1
6 8 note 55 purple pulse/hold 36, 35 4p2
7 9 note 56 grey pulse/hold 34, 33 4p3
8 10 note 57 pink pulse/hold 30, 29 4p4
9 12 note 58 black pulse/hold 28, 27 4p1
10 13 note 59 brown pulse/hold 24, 23 4p2
11 14 note 60 red pulse/hold 22, 21 4p3
12 15 note 61 orange pulse/hold 15, 16 4p4
13 17 note 62 yellow pulse/hold 17, 18 2p1
14 18 note 63 green-yellow pulse/hold 19, 20 2p2

Board 3:

board output connector pin mapping wire color remarks PIC pins Weidmueller
1 2 note 64 grey - blue pulse/hold 4, 3 4p1
2 3 note 65 purple pulse/hold 2, 5 4p2
3 4 note 66 grey pulse/hold 6, 7 4p3
4 5 note 67 black-white pulse/hold 8, 9 4p4
5 7 note 68 black pulse/hold 10, 37 4p1
6 8 note 69 brown pulse/hold 36, 35 4p2
7 9 note 70 red pulse/hold 34, 33 4p3
8 10 note 71 orange pulse/hold 30, 29 4p4
9 12 note 72 yellow pulse/hold 28, 27 4p1
10 13 note 73 green pulse/hold 24, 23 4p2
11 14 note 74 blue pulse/hold 22, 21 4p3
12 15 note 75 purple pulse/hold 15, 16 4p4
13 17 note 76 white - red pulse/hold 17, 18 2p1
14 18 note 77 white pulse/hold 19, 20 2p2

Board 4:

board output connector pin mapping wire color remarks PIC pins Weidmueller
1 2 note 78 orange - red pulse/hold 4, 3 4p1
2 3 note 79 orange - black pulse/hold 2, 5 4p2
3 4 note 80 blue - grey pulse/hold 6, 7 4p3
4 5 note 81 pink pulse/hold 8, 9 4p4
5 7 note 82 green - yellow pulse/hold 10, 37 4p1
6 8 note 83 geel - zwart pulse/hold 36, 35 4p2
7 9 note 84 rood - zwart pulse/hold 34, 33 4p3
8 10 note 85 zwart pulse/hold 30, 29 4p4
9 12 note 86 brown pulse/hold 28, 27 4p1
10 13 note 87 red-green pulse/hold 24, 23 4p2
11 14 note 88 orange pulse/hold 22, 21 4p3
12 15 note 89 yellow pulse/hold 15, 16 4p4
13 17 note 90 green pulse/hold 17, 18 2p1
14 18 note 91 blue pulse/hold 19, 20 2p2

Board 5:

board output connector pin mapping wire color remarks PIC pins Weidmueller
- 1 - - + 10V voltage - -
1 2 note 92 purple pulse/hold 4, 3 4p1
2 3 note 93 grey pulse/hold 2, 5 4p2
3 4 note 94 white -black pulse/hold 6, 7 4p3
4 5 note 95 white - red pulse/hold 8, 9 4p4
- 6 - - + 10V voltage - -
5 7 note 96 black pulse/hold 10, 37 4p1
6 8 note 97 brown pulse/hold 36, 35 4p2
7 9 note 98 rood pulse/hold 34, 33 4p3
8 10 note 99 orange pulse/hold 30, 29 4p4
- 11 - - + 10V voltage - -
9 12 note 100 yellow pulse/hold 28, 27 8p1
10 13 nc blue pulse/hold 24, 23 8p2
11 14 note 123   hold 22, 21 8p3
12 15 note 122   hold 15, 16 8p4
- 16 -   + 10 V voltage - 8p5
13 17 note 121   hold 17, 18 8p6
14 18 note 120 - led   pulse (used as hold) 19, 20 8p7
- 19     + 10 V voltage - 8p8


With the V1.2 firmware in the 18F2525 PIC controller, we get following correspondence between the controller #7 value and the motor duty cycle:

Controller 7 value Duty cycle

wind pressure

10 mm H20 = 1 mbar = 100 Pa

remarks
0 0% 0 motor fully off
1 - 3 4%   period = 0.5 s
4 - 9 8%   period = 0.25s
10 - 14 12%   period = 0.5s
15 - 19 16%   period = 0.25s
20 - 24 20%   period = 0.5s
25 - 30 24%   period = 0.25s
31 - 35 28%   period = 0.5s
36 - 40 32%   period = 0.25s
41 - 45 36%   period = 0.5s
46 - 51 40%   period = 0.25s
52 - 56 44%   period = 0.5s
57 - 61 48%   period = 0.25s
62 - 66 52% 30 mm H20 period = 0.5s
67 - 72 56%   period = 0.25s
73 -77 60%   period = 0.5s
78 - 82 64%   period = 0.25s
83 - 87 68%   period = 0.5s
88 - 93 72%   period = 0.25s
94 - 98 76%   period = 0.5s
99 - 103 80%   period = 0.25s
104 - 108 84%   period = 0.5s
109 - 144 88%   period = 0.25s
115 - 119 92%   period = 0.5s
120 - 124 96%   period = 0.25s
125 - 127 100% 60 mm H20 this would be the nominal pressure for the given motor. motor fully ON

The windpressure was measured in the windchest. The pressure measured in the output orifices for the pipes with the valve opened is always slightly lower.

Note that wind pressure at high wind consumption can get modulated by the period applied for the PWM (see table). The modulation frequency will be either 2Hz or 4Hz. In some circumstances this feature can be used to replace the effect of a tremulant.

 

Disassembly and servicing instructions:

1.- The carrier board holding the power supplies and the five note-control boards can be taken off by loosening and removing the 4 M6 bolts. Make sure all connectors are disconnected. Also, the connectors on the midi-hub board have to be disconnected.

2.- If access to the windchest is required, the wheelbase must be removed. First take out all pipes carefully and store them safely. Now the organ can be placed on its backside. Then remove the MDM plate holding the radial compressor (remove the 4 woodscrews holding it in place. Also unscrew the four screws holding the wind inlet to the windchest. Remove the motor assembly. Now the windchest can be opened and serviced. When reassembling, make sure to replace the leather strips making the windchest airtight. The windchest cannot be opened from the upperside. The pipe holding plate is glued to the windchest.

3.- The note/velo boards with the 18F4620 processors can be reprogrammed/upgraded without any disassembly.