KA SPENCER - Wiltshire, UK
Telephone: (+44) (0)843 289 9728
Email: kas at kaspencer dot com

choose one

project 2 - (scroll & read me)

AUTOMATIC LABELLING OF STOPS FOR HAUPTWERK ORGANS

Version 2 Labelling system for kasLABS v3.x software

The Stop Labelling Project version 2 labels answers the need for proper labelling of every organ stop as an organ completes the loading process.
On the right, you can see a finished stop plate using our Black Acrylic Stop Plate (showing the St. Anne's Moseley organ), ready for mounting into a stop jamb housing:On the right, you can see a finished stop plate using our Black Acrylic Stop Plate (showing the St. Anne's Moseley organ), ready for mounting into a stop jamb housing:
The (unvarnished) Beech Ply version, which is slightly cheaper, is shown below it.

1. THE OPTIONS

The preferred option is to purchase the minimum required components from KASpencer, and source the rest of the items yourself. You would then assemble the stop plate according to the instructions which follow.
The second option, for those who feel that they cannot solder and cannot assemble the stop plates, is to order a built and tested stop plate, ready to mount into a stop jamb housing (which is simple to build and is described later on this page).
Taking the preferred option first, we discuss the components for a right stop jamb.

1.1. Build it yourself
You purchase essential components from KASpencer and source the rest yourself. Then you solder components to the PCB, and assemble using the required cabling.
    For the labelling functions order the following from KASpencer:
      - PCBs: purchase 1 (20 stops/jamb), 2 (40 stops/jamb), or 3 (60 stops/jamb);
      - one Arduino Due pre-loaded with the kasLABS version 3.2x software;
      - one stop plate (either acrylic, or 3mm quality beech ply), state Left or Right.
   In addition, you must source and purchase for yourself, per PCB:
      - 12 x 0.1" 2x7   DIL PCB    sockets*,    or 3x40-way   0.1" SIL socket strips**;
      -    1 x 0.1" 2x7   DIL PCB   pin header, or 1x40-way   0.1" SIL pin strips;
      -    1 x 0.1" 2x20 DIL PCB  pin header, or equivalent  0.1" SIL pin strips;
      - 12  x  7-pin SPI SH1106 (1.3") OLEDs;
      -    1 x DIL IDC 0.1"  2x7    ribbon cable header plugs***
;
      -    1 x DIL IDC 0.1"  2x20  ribbon cable header plugs.
   (*DIL=dual in line; **SIL=single in line, ***IDC=insulation displacing connector)
      - a good supply of 0.05" 40-way ribbon cable and 3mm heat shrink tubing.
   To build the stop switch functions you will also need to source and purchase:
     -    60x 1.3" round illuminated switches for 60 stops (20/40 reduce accordingly);
     - 240x spade connectors 120 red, 120 blue for 60 stops (20/40 reduce
        accordingly);
     - connectors for your chosen encoder & decoder (eg 10 x 40-way 0.1" SIL pin
       strips);
     -   1 x 64-port MIDI encoder (may be reduced to 32-port for a 20 stop build);
     -   1 x 64-port MIDI decoder (may be reduced to 32-port for a 20 stop build);
     -   1 x 5v PSU, 1 x 9-12v PSU, 1 x USB cable (micro-B to B-plug);
     - a good supply of 0.05" 40-way ribbon cable and 3mm heat shrink tubing.

1.2. Purchase ready-built 60 stop (only) Stop Plates
Please note that there is only a limited capacity for built & tested stop plates.
Order a ready-assembled and tested Stop Plate (specify material: Acrylic or 3mm Beech Ply & Left or Right) fitted with:
     - 60 illuminated stop switches installed and mounted on the stop plate;
     - above switches wired to a 60-way Arduino-based MIDI Encoder, and LEDs wired
       to an OrgautoMatech MIDI Decoder;
     - 3 x version 2 PCBs, mounted between Stop Switch columns, fitted with sockets
       and with 34 x SH1106 1.3" OLEDs installed;
     - 1 x Arduino Due loaded with the kasLABS version v3.2x software;
     - 1 x 5v PSU and 1 x 9-12v PSU for the OrgautoMatech MIDI decoder.
 You will need to supply yourself:
     - 2 x USB cables (micro-B to B-plug) of length to connect 2 x Arduinos to your
       Hauptwerk PC.

Please note that delivery times for your assembled project will depend upon component and building capacity availabilty, although every effort will be made to complete it in the shortst time possible.

2. STOP PLATE HOUSING

You will need to house the Stop Plate as the front face of a Stop Jamb housing, which you will need to construct yourself. The Stop Plates supplied are somewhat oversize top-bottom and left-right, and so may be cut to a limited extent to suit your preferred Stop Jamb size.
The measurements of the panels are shown on the right, and I repeat them here:
(1) Outer side board: h22.5" x w17.5";
(2) Inner side board: h22.5" x w9";
(3) Back plate: h22.5" x w10.75";
(4) Top plate: inside 9" x outside 17.5" x back 10.75" x front (stop plate) 14".
These stop jamb housing dimensions are illustrative only, but they are compatible with the dimensions of the stop plates available for this project.
The left and right jambs need not be exactly the same size – especially if your pedalboard is 30-note, as it will project less far on the right than the left – the left stop plate can thus be at a lesser angle.
For cosmetics, consider glueing beading to the edges of the housing.
There is space inside this design to screw battens along the inside edges of the front, back and sides of the top board to provide a means of fixing the side boards together securely. A matching set of battens can be fixed at the base: these can also provide firm anchorage of the housing to your keyboard stack platform, possibly by a pair of bolts fitted through the platform and topped with wing-nuts.
It is likely that your cables for the stop jamb can be passed directly through the keystack platform into the stop jamb housing.
The cables requiring routing will be:
 - MIDI OUT cable from the decoder to your Hauptwerk PC, possibly via a MIDI hub;
 - MINI IN cable connecting your encoder (if you source the components), possibly via a MIDI hub,
   or a USB cable connecting the Arduino-based decoder (if the project is built for you), to your Hauptwerk PC;
 - 5v supply to the decoder for LEDs in the illuminated switches;
 - 9-12v supply to power the decoder, (& encoder if you source your components - one PSU can be shared);

3. THE PRINTED CIRCUIT BOARDS (PCBs)

This project was originally built with stripboards for support & connection of the components. That was a rather fiddly approach, although quite low cost. More recently we have completed the design, and have had manufactured, a set of PCBs to house the OLEDS and their connectors, which neatens the project no-end, and means that assembly is quicker and less error prone. Introducing the PCBs has also enabled other simplifications in that the PCBs can mounted quickly and securely between the stop switches, without having to build the infrastructural support that was required for the stripboards. Three PCBs are required for each stop jamb if 60 stops are to be serviced. The Central board houses 12 OLEDs and the Inner & Outer house 11. If your stop jamb housing is of minimum vertical size, you can score the Inner & Outer PCBs deeply with a Stanley knife, or similar, on both sides between the 11th and 12th OLED sockets, and snap the 12th section off which shortens the PCBs by about an inch.
Here is an image of the PCB front (OLED side):
and the back (CONNECTOR side) of the PCB:

4. PREPARING THE PCBs FOR THE OLEDS

Select a PCB for the Central position on the stop plate. Insert twelve 2x7 DIL PCB sockets into the OLED side of the PCB and solder them carefully from the CONNECTOR side, ensuring that they are firmly against the board surface. Then insert the 2x7 and the 2x20 DIL PCB pin headers into position on the CONNECTOR side and solder them from the OLED side, again ensuring that they in good contact with the board surface.
If you are using 40-way 0.1" socket strips instead of DIL sockets, cut the socket strips to 7-way with a Stanley knife - you may superglue a pair of these strips together and solder the pair into the adjacent rows of holes in the board if you wish - this will improve stabilty of the OLEDs. (Likewise you may cut a 40-way pin strip into two 20-way strips and use these instead of the 2 x 20 DIL PCB pin headers.)
As you complete the soldering of each connector check thoroughly for any broken tracks or solder bridges between tracks, visually, and using a meter.
You can then insert the OLEDs into their sockets: if you insert the pins into the lower row of holes on the board, the other edge of the OLED can be supported by the top row of socket below it.
The Inner and Outer PCBs (to the left and right of the stop plate in the right hand jamb) are identical to the central, but they only support 11 OLEDs.

5. PREPARING THE PCB CONNECTING CABLES

When all OLEDs have been mounted, you are ready to make up the cables which connect each PCB to the Arduino Due.

5.1 The 14-core, 7-way ribbon for Power & Control between all three PCBs
This cable connects the inner & outer PCBs power & control lines to the central PCB socket, which in turn receives those signals from the Arduino Due via the first 6-ways of its 40-core 20-way DIL PCB connector.
Tear about 15 inches of 14-cores off a length of 40-core ribbon cable. You will use the cores in pairs (1+2, 2+3 etc) because the PCB sockets are paired at 0.1" pitch and the ribbon cable is pitched at 0.05", two cores at 0.1". Fold the cable thus:
This is a little like cable origami! Keep the red core of the cable at the bottom when horizontal, and on the right when vertical. (The red core, number 1, is actually the GND line, so you may wish to colour it black with a spirit-based fibre pen in acknowledgement of that fact).
These instructions create a three way connector for use in the right hand stop plate. "Left" and "Right" refer to "inner" and "Outer" aspects of the stop plate with respect to the console centre, and are thus reversed for the left hand stop plate. (All this is to take account of whether your console and stop jambs are to display your stop names "Symetrically" or "Identically": read the detailed software documentation for an explanation of this.
The inner (left hand) fold is easy - just take the left end and fold it up over the front of the horizontal part of the cable.
The outer (right hand) requires an initial fold downwards and behind the horizontal part, then upwards and in front of the horizontal part.
The centre fold is quite complicated: first fold the horizontal cable backwards to the left, a little off-centre, followed by an immediate diagonal fold upwards and behind. Then about 2 or 3 inches up, fold the cable forwards and vertically downwards until level with the lower edge of the left hand side of the cable. Finally make a diagonal fold at that level, forwards and to the right. Having got the folds correctly, re-arrange them until the three vertical segments are more-or-less evenly spaced. Make the folds secure by applying gentle but firm pressure - attach tape if necessary. You then have to attach three DIL IDC 2x7-way plugs to the cable, each in the same orientation. The plugs should all be directed downwards, as they will be inserted into the 2x7 pin headers of the Left, Central and Right, PCBs. Use a vice or an IDC Crimping Tool. You can get the exact dimensions of the various sections of the cable from the layout on your stop plate. Note that the 7th & 8th cores are actually not used, but should be attached as an aid to stability.

5.2 The Central PCB 40-core 20-way cable
Attach a DIL IDC 0.1" 2x20 header plug to an approximate 8" length of 0.05" pitch 40-core 20-way ribbon cable - ensure that the length of the cable is sufficient to be neatly routed to the Arduino micro-controller. At the other end of the cable, split the first four cores at the red core away from the rest of the cable for about 2 inches. Cut a 23-way length of SIL pin strip. Before soldering each pair of cores to the indicated pins, slide a short length of 3mm heat shrink sleeve onto each cable pair. Once soldered slide the sleeve down onto the soldered pin, and use the soldering iron to shrink the sleeve tightly over the joint, being sure to cover the entire pin and joint.
 - split away the first two cores, remove a centimetre of insulation, twist the conductors together and solder them to the third pin
   of the 23-way pin strip. Although the first of those cores is red, it is actually the GND line, therefore, colour it black with a spirit pen;
 - remove the insulation from the second pair of cores and twist those conductors together, and solder them to the first pin of the 23-way 
   pin strip. This is the +3v3 vdd line;
 - remove the insulation from the next four pairs of conductors, soldering each pair in turn to pins 7 to 10 of the 23-way pin strip.
   These four core pairs are the remaining power & control lines connecting the central board to Arduino sockets 54-57;
 - the next two core pairs of the ribbon cable have no connection. Therefore you may strip them back from the cable by about 2 inches, and
   when the soldering of the remaining cores is complete, those conductors may be cut away;
 - the next four pairs of cores, constituting pairs 9-12, may be split and soldered to pins 11-14 of the 24-way pin strip. There is a gap at pin
   15;
 - the remainder of the core-pairs, 13-20 should be soldered to pins 16-23 of the 23-way pin strip.
As you prepare the core pairs, note that not all of the pins of the pin strip receive connections, as some of the Arduino lines cannot be used, and there are two unused pairs of cores. Remember to strengthen and isolate each pin as you complete the soldering, using 3mm heat shrink sleeve. The picture above shows the DIL IDC 0.05" pitch 2x20 header plug on the right, and the 23-way pin strip on the left.

5.3 The Inner PCB 40-core 20-way cable
Attach a DIL IDC 0.1" 2x20 header plug to an approximate 8" length of 0.05" pitch 40-core 20-way ribbon cable. Ensure that the length of the cable is sufficient to be neatly routed to the Arduino micro-controller. You may cut away the first eight core pairs from this cable, and the very last core pair, at about 1 inch from the header plug, as these cores are not required.
Cut two lengths of pin strip, one with 7 pins and a second with 4 pins. Although these pins connect to a contiguous series of Arduino header sockets, an unusual asymmetric gap between Arduino sockets 7 and 8 necessitates two separate pin strips (!).
Core pairs 17+18 to 29+30 must be soldered to pins 1-7 of the first pin strip, while cores 31+32 to 37+38 must be connected to pins of the second pin strip.
As previously, strip about 1 centimetre of insulation from the cores of each pair, twist and solder the strands together and slide a centimetre of 3mm heat shrink tubing onto the two wires. After soldering the pair to the correct pin, slide the heat shrink down onto the pin and use the soldering iron to shrink the sleeve tightly onto the soldered joint. This will aid stability and reduce the risk of the joint failing.
The picture below shows the wiring of the inner (left hand) PCB connector to the Arduino, with the DIL IDC 0.05" pitch 2x20 plug on the right, and the pair of pin strips on the left.

5.4 The Outer PCB 40-core 20-way cable
Attach a DIL IDC 0.1" 2x20 header plug to an approximate 8" length of 0.05" pitch 40-core 20-way ribbon cable. Ensure that the length of the cable is sufficient to be neatly routed to the Arduino micro-controller. You may cut away the first eight core pairs from this cable, and the very last core pair, at about 1 inch from the header plug, as these cores are not required.
Cut a length of pin strip with 11 pins. Core pairs 17+18 to 37+38 must be soldered to pins 1-11 of the pin strip.
The picture below shows the right PCB connector pin strip which inserts into the even numbered sockets 30-50 of the Arduino DIL socket on its right hand edge.
As previously, strip about 1 centimetre of insulation from the cores of each pair, twist and solder the strands together and slide a centimetre of 3mm heat shrink tubing onto the two wires. After soldering the pair to the correct pin, slide the heat shrink down onto the pin and use the soldering iron to shrink the sleeve tightly onto the soldred join. This will aid stability and reduce the risk of the joint failing.
The picture below shows the wiring of the outer (right hand) hand PCB connector to the Arduino, with the DIL IDC 0.05" pitch 2x20 plug on the right, and the pin strip on the left.

5.5 Connecting the PCBs to the Arduino Due
When the PCBs are mounted onto the stop plate (raise the plastic nuts of a double column of switches, slide the PCB carefully beneath the nuts, taking care to protect the OLED displays from damage) in the correct position, gently tighten the large plastic nuts over the PCB edges.
The default connection method arranges the stops and their labels in the "Symmetric" arrangement, which will suit most users. This arrangement allows a three division organ to have its stop labels arranged such that when set up to be duplicated across both jambs, the three divisions are displayed from the centre outwards (-symetrically-), which probably is the preference for most users. The documentation of the kasLABS software explains this in more detail (also referred to in the text shown in the diagram below) .

First select a suitable mounting position for the Arduino. Orientate and position the Aurduino such that the cables may suffer no stress and so that their terminations will be able to be neatly inserted into the Arduino Header Sockets.

Connect the PCB Interconnecting cable first (see section 5.1 above). Its central DIL IDC header plug fits into the 2x7 DIL PCB pin header on the Central PCB - check that the plug & cable are orientated correctly with the red GND line (or black if you have used a fibre pen on it) at the edge of the PCB. Then connect the Inner and Outer DIL IDC plugs into the 2x7 sockets of the Inner & Outer PCBs respectively.
NOTE: When inserting these plugs into the PCB sockets, support the PCB from beneath, otherwise you may damage the OLEDs if the PCBs are pressed too firmly against the stop plate.
Once connected, you may fold the cables back on themselves under the PCBs where they may rest safely out-of-sight.

Connect the Central PCB connector (see section 5.2 above) into the Arduino's lower edge Header Socket. This connector also includes the power and control line connections.

Connect the Inner PCB connectors (see section 5.3 above) which are on the left in the right hand stop plate, plug into the Arduino's upper edge Header Socket. Note that this connector is split into two sections.

The Outer PCB connector (see estion 5.4 above) which are on the right in the right hand stop plate,  plugs into the Arduino's right hand edge connector, even numbered sockets.


The image on the right shows all connections between the three PCBs and the Arduino Due. Note that the connections for the Inner and Outer PCB for both stop jambs are influenced by your choice of whether to arrange your stop labels "Symmetrically" or "Identically". Please see the detailed documentation for explanations. The default arrangement, which is "Symmetric", is assumed in this document.






6. MOUNTING + CONNECTING THE ILLUMINATED STOP SWITCHES

Your stop switches are fitted into the 1" holes cut into the stop plates. Begin by removing the microswitch and LED assembly from the back of each illuminated stop switch - press in, twist, and pull - the switch is illustrated on the right. Then remove the large plastic nut on each switch body, and insert the switch bodies through pairs of round holes at the top and bottom of each double column of round holes in the stop platel. Orientate all switches into the same direction. Apply the large nuts to each and screw them gently down the switch body stem.

If you have already completed assembly and testing of your PCBs with their OLEDs, you can lay each PCB OLEDs face down, onto the stop plate, over the rectangular apertures between each double column of stop swiches. The PCBs are then secured by gently tightening the large plastic nuts one by onw whilst very carefully checking the alignment of the OLEDs to the rectangular apertures. OLEDs are very easily broken: you must take care - especially at the delicate corners of the display surfaces of all OLEDs.

If your PCBs are not yet ready for installation, proceed to mount your switches into the circular holes applying the nuts. You may then insert the microswitch and LED asemblies back into the switches. You will note that the microswitches have two spade terminals, as do the LED holders too. In each case, one terminal must be assigned as the "Common" terminal. In the case of the switch you have a free choice, but in the case of the LEDs, the common terminal choice is determined by the polarity of your decoder. We will assume that your decoder is "common positive" output (as are the ones we supply), in which case you must identify which terminal on the LED assembly needs to be positive to light the LED. Try it with a battery to check - usually the red side of the microswitch is used as an indicator, but check as you can never be sure.

6.1 Connecting the Switch and LED Common Lines
First, we will make several long chains of spade connectors for the common terminals: for a common ground encoder, make up six chains  of ten with blue spades for the switch commons. For a common positive decoder make up six chains of ten with red spades for the LED commons:
 - for each chain, cut 10 x 2.5 inch lengths of connecting wire (you can use the cores of the discarded ribbon cable if you have no other);
 - strip a centimetre of insulation from both ends of each length, and twist the strands together. (Then I always solder the twisted strands
   although some say that should not be done with crimpable spade connectors):
 - then insert each twisted strand into the end of a spade connector to just beyond the insulation, and until it protrudes a millimetre or two.
Then either:
 - crimp the spade's cable retainer with a crimp tool;
or
 - apply solder and a hot iron, allowing solder to run into the spade's cable retainer sleeve.
Repeat for the remaining spade chains, but at the two end spades, attach a longer wire to all but one of the chains, so that you can join the six chains together at a later point.
Choose a side of the micro switches and insert the blue spade connectors onto the terminals on that side: ensure that they are very firmnly fixed into place - tighten or loosen the jaws of the spade connectors if necessary. Then solder each of the end wires to its neighbour in the next column of switches: the single remaining unattached wire should connect to the common ground terminal of the encoder board.
Then connect the second set of 10 red spade chains to each of the LED terminals previous identified as the positive, and connect the end terminal wire to the common postive input of the decoder.

6.2 Connecting the active Switch and LED Lines
The Switch Connections: The active lines of the switches must each be connected to an input of the encoder: connect each switch to the input corresponding to its stop button position in the sequence. Perhaps the best way of making these 60 connections is to make up six sets of 10 cores of ribbon cable each core staggered by the approximate separation of the switches - about 1.5 inches. Solder or crimp a red spade connector onto the end of each core using the method previously described.
The picture below shows an arrangement for connecting the active switch terminal of each switch into a ribbon cable strip; note that in the case of the switch terminals, normally the active terminal spades should be red. Each spade should be on a core which is about 1.5" shorter than its neighbour, but that distance should be decided by direct assessment of your stop jamb arrangement. In most cases, a ten-core ribbon will sit comfortably on the column of microswitches, nestled between the microswitch terminals. The length of each cable should be sufficient to connect to the input ports of the encoder.
At the other end of the cable, the cores should be stripped of their insulation and soldered in preparation for connection to the appropriate line in the encoder. Some encoders will require DIL IDC header plugs, others may use other types of connector whilst several types  have screw-in terminals.
The LED Connections: The active terminals of each LED must each be connected to an output port of the decoder: connect each LED terminal to the ouput port corresponding to the stop button position in the sequence. Once again, make up six sets of 10 cores of ribbon cable, each core staggered in length by the approximate separation of the LED terminals. Solder a blue spade connector onto the end of each core, using the method already described. Apart from the colour of the spade, the picture above shows a suitable arrangement for connecting the ative LED terminals to the decoder.
Decoders have a variety of connection mechanisms, and you must use a matching termination method at the other end of the cable. The OrgautoMatech decoders which are supplied if you purchase components from KASpencer have screw-in terminals for the active LED connections, and so you should carefully match the lengths of the cores to the positions of their terminal, strip off a centimetre of insulation, twist the strands and solder the twisted strands to make insertion into the terminal slots easier.

                                                                    back to the Projects page

home
software
older software
books
projects
(c) ka spencer, 1996-2022   1124