Here I will describe my design and building of a 31 equal temperament (31-ET) keyboard.
I have chosen an isomorphic arragnement for the keyboard and to also ensure the keys "line up" with the traditional 12-ET layout. Here each 12-ET white note is broken into three 31-ET light-coloured notes (pale red, white, pale yellow) and each 12-ET black note is broken into two 31-ET dark-coloured notes (dark green, dark blue). I have chosen to use the plus sign for semisharp and the minus sign for the semiflat. The two octave arrangement is shown below.
This arrangement is essentially a two octave single manual version of the Fokker Organ.
The keyboard is made from tactile switches mounted on stripboard, with the stripboard in turn mounted on a wooden board using spacers and bolts. A second stripboard provides a basic control panal with eight rotary potentiometers and five buttons. The wiring tends to be on the underside of the stripboard to keep the playing surface clean. Finally, diodes are required to convert the 62 keys into 16 signal lines for connection to a MIDI encoder. The chosen encoder is a mkc64u from MIDI boutique providing USB connectivity.
The caps of the tactile switches are avaliable in a number of colors and are easy to change. One could choose to have just white and black keys, or perhaps, the white, pale blue and black scheme as used by Adriaan Fokker.
Parts and related information is given in the table below.
Cost | Order | Used | Item | Make | Part | Size | Spec | Data | Shop |
---|---|---|---|---|---|---|---|---|---|
0.91 | 70 | 62 | Small Signal Diode | Fairchild | 1N4148 | 100V 200mA 1V 4ns 1A | 1934602 | Farnell | |
13.09 | 70 | 67 | Tactile Switch | Multicomp | MCDTS2-4N | 12x12 | 160gf | 1662341 | Farnell |
0.98 | 15 | 14 | Switch Cap | Multicomp | KTSC-22Y | 13x13 | yellow round | 1486988 | Farnell |
0.98 | 15 | 14 | Switch Cap | Multicomp | KTSC-22I | 13x13 | ivory round | 1486988 | Farnell |
0.70 | 15 | 14 | Switch Cap | Multicomp | KTSC-22S | 13x13 | orange round | 1486988 | Farnell |
0.58 | 10 | 10 | Switch Cap | Multicomp | KTSC-22B | 13x13 | blue round | 1486988 | Farnell |
0.99 | 10 | 10 | Switch Cap | Multicomp | KTSC-22G | 13x13 | green round | 1486988 | Farnell |
0.30 | 5 | 5 | Switch Cap | Multicomp | KTSC-22R | 13x13 | red round | 1486988 | Farnell |
17.68 | 8 | 8 | Rotary Pot | Bourns | 3310Y-001-103L | 9x9 | 1653582 | Farnell | |
28.40 | 8 | 8 | Knob | Elma | 021-1220 | 9 | black | 283200 | Farnell |
1.77 | 2 | 2 | Wire To Board | Phoenix | 1725672 | 4 positions screw | 5117 | Farnell | |
2.64 | 2 | 2 | Wire To Board | Phoenix | 1725698 | 6 positions screw | 1697162 | Farnell | |
2.78 | 2 | 2 | Wire To Board | Phoenix | 1725711 | 8 positions screw | 5117 | Farnell | |
9.05 | 1 | 1 | Hook Up Wire | Alpha | 3051/1 GR005 | 30.5m | 22 AWG green | 1684295 | Farnell |
9.05 | 1 | 1 | Hook Up Wire | Alpha | 3051/1 BL005 | 30.5m | 22 AWG blue | 1684295 | Farnell |
10.26 | 1 | 1 | Stripboard | Kelan | 147899 | 365.8x114.3 | 41 tracks of 143 holes | 316820 | Farnell |
4.04 | 1 | 1 | Stripboard | Vero | 01-0171 | 214.6x38.1 | 81 tracks of 15 holes | da4392 | RS |
4.46 | 100 | 50 | PCB Spacer | Richco | 9.5x4.8 | M2.5 screw | 02e298 | RS | |
11.79 | 100 | 50 | Socket Cap Screw | PTS | M2.5x25 DIN 912 A2 | A91202525 | PTS | ||
0.92 | 200 | 50 | Flat Washer | PTS | M2.5 From A DIN 125 A2 | A125025A | PTS | ||
3.50 | 200 | 50 | Hexagon Nut | PTS | M2.5 DIN 934 A2 | A934025 | PTS | ||
1.91 | 10 | 10 | PCB Spacer | Duratool | 5x5.5 | M3 screw | 1733418 | Farnell | |
3.81 | 100 | 10 | Socket Cap Screw | PTS | M3x20 DIN 912 A2 | A9120320 | PTS | ||
0.98 | 200 | 10 | Flat Washer | PTS | M3 From A DIN 125 A2 | A12503A | PTS | ||
2.34 | 200 | 10 | Hexagon Nut | PTS | M3 DIN 934 A2 | A93403 | PTS | ||
4.13 | 1 | 1 | Chopping Board | IKEA | 802.334.30 | 450x280 | Bamboo wood | IKEA | |
84.71 | 1 | 1 | USB-MIDI Encoder | mkc64u | Manual Wiring | MIDI Boutique | |||
2.47 | 1 | 1 | 16-way Break-Out | bo15 | MIDI Boutique | ||||
0.53 | 1 | 1 | Ribbon Cable | dci16-16/25 | MIDI Boutique |
The cost is in UKP and excludes VAT (tax). It is for the order quantity listed at the time of purchase. This information is not being kept up to date.
The mkc64c provides 64 inputs, also known as scan points, arranged in an 8x8 scan matrix. The scan matrix allows 8 * 8 = 64 keys to be easily encoded into only 8 + 8 = 16 signals, provided 64 diodes are used to prevent ghosting and masking problems. This means that one side of the 64 key switches are connected to 64 diodes, which in turn are connected to the 8 rows of the mkc64c. The other side of the 64 key switches are connected to the 8 columns of the mkc64c. The combined row and column connections are then the 16 signals required to determine the keyboard key presses.
Six switches and diodes are first arranged in a 3x2 scan matrix and connected to the mkc64c encoder using 3 + 2 = 5 signals to form a simple test. The MIDI output of the encoder is routed to a keyboard to generate the sounds. This is still in 12-ET tuning.
The six tactile switches with caps and six small signal diodes are simply pushed into some breadboard. The scan matrix setup for the mkc64u (on the right) is column 0 black, column 1 red, row 0 right, row 1 center and row 2 left.
The 31 notes of an octave will be distriburted over a number of different MIDI channels, where each channel makes use of a unique constant global pitch bend. This is to avoid using MIDI Tuning Standard (MTS) messages which seem to be poorly supported on hardware synthesizers. There are 31 notes to allocate over a maximum of 16 MIDI channels. If we choose to allocate no more than three notes to a single channel, then 31 / 3 round up shows that 11 channels are required. The task now is to distribute no more than three 31-ET notes to each of the 11 globally tunable channels. However, within a channel the tuning separation is still 12-ET, and as the numbers 12 and 31 are coprime, it is to be expected that there will be some small tuning errors.
Let us divide the octave into 12 × 31 = 372 parts to give us a fine granulation to work to. As it is also customary to divide the octave into 1200 cents we compute this granulation in cents as 1200 / 372 = 100 / 31 ≈ 3.2258. Since we are going to allocate three notes to a channel, let us begin by tuning the 11 channels 3 × 100 / 31 = 300 / 31 = 9.6774 cents apart. If we name the 11 channels i, where i runs from -5 to +5, then channel i is tuned to i × 300 / 31. The table below shows the tuning pitch bend amount in cents for the 11 channels.
MIDI Channel Tuning | ||
---|---|---|
Named Channel | Pitch Bend Cents | |
-5 | -48.3871 | |
-4 | -38.7097 | |
-3 | -29.0323 | |
-2 | -19.3548 | |
-1 | -9.6774 | |
0 | 0.0000 | |
+1 | +9.6774 | |
+2 | +19.3548 | |
+3 | +29.0323 | |
+4 | +38.7097 | |
+5 | +48.3871 |
Up to three notes of the octave are now assigned to each channel. If for every 31-ET note we choose the channel with the nearest 12-ET tuning then we are able to allocate the notes in such a way that one note is exact, one note is 3.2258 cents too low, and the other is 3.2258 cents too high. The table below shows this note to channel mapping over the octave.
31-ET | Nearest 12-ET | MIDI | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Note | Index | Cents | Note | Index | Cents | Named Channal | Bend | Error | ||
C− | 0 | -38.70 | C | 0 | 0 | -4 | -38.7097 | 0.0000 | ||
C | 1 | 0.00 | C | 0 | 0 | 0 | 0.0000 | 0.0000 | ||
C+ | 2 | 38.70 | C | 0 | 0 | +4 | +38.7097 | 0.0000 | ||
C# | 3 | 77.41 | C#/Db | 1 | 100 | -2 | -19.3548 | +3.2258 | ||
Db | 4 | 116.12 | C#/Db | 1 | 100 | +2 | +19.3548 | +3.2258 | ||
D− | 5 | 154.83 | D | 2 | 200 | -5 | -48.3871 | -3.2258 | ||
D | 6 | 193.54 | D | 2 | 200 | -1 | -9.6774 | -3.2258 | ||
D+ | 7 | 232.25 | D | 2 | 200 | +3 | +29.0323 | -3.2258 | ||
D# | 8 | 270.96 | D#/Eb | 3 | 300 | -3 | -29.0323 | 0.0000 | ||
Eb | 9 | 309.67 | D#/Eb | 3 | 300 | +1 | +9.6774 | 0.0000 | ||
E− | 10 | 348.38 | D#/Eb | 3 | 300 | +5 | +48.3871 | 0.0000 | ||
E | 11 | 387.09 | E | 4 | 400 | -1 | -9.6774 | +3.2258 | ||
E+ | 12 | 425.80 | E | 4 | 400 | +3 | +29.0323 | +3.2258 | ||
F− | 13 | 464.51 | F | 5 | 500 | -4 | -38.7097 | -3.2258 | ||
F | 14 | 503.22 | F | 5 | 500 | 0 | 0.0000 | -3.2258 | ||
F+ | 15 | 541.93 | F | 5 | 500 | +4 | +38.7097 | -3.2258 | ||
F# | 16 | 580.64 | F#/Gb | 6 | 600 | -2 | -19.3548 | 0.0000 | ||
Gb | 17 | 619.35 | F#/Gb | 6 | 600 | +2 | +19.3548 | 0.0000 | ||
G− | 18 | 658.06 | G | 7 | 700 | -4 | -38.7097 | +3.2258 | ||
G | 19 | 696.77 | G | 7 | 700 | 0 | 0.0000 | +3.2258 | ||
G+ | 20 | 735.48 | G | 7 | 700 | +4 | +38.7097 | +3.2258 | ||
G# | 21 | 774.19 | G#/Ab | 8 | 800 | -3 | -29.0323 | -3.2258 | ||
Ab | 22 | 812.90 | G#/Ab | 8 | 800 | +1 | +9.6774 | -3.2258 | ||
A− | 23 | 851.61 | A | 9 | 900 | -5 | -48.3871 | 0.0000 | ||
A | 24 | 890.32 | A | 9 | 900 | -1 | -9.6774 | 0.0000 | ||
A+ | 25 | 929.03 | A | 9 | 900 | +3 | +29.0323 | 0.0000 | ||
A# | 26 | 967.74 | A#/Bb | 10 | 1000 | -3 | -29.0323 | +3.2258 | ||
Bb | 27 | 1006.45 | A#/Bb | 10 | 1000 | +1 | +9.6774 | +3.2258 | ||
B− | 28 | 1045.16 | A#/Bb | 10 | 1000 | +5 | +48.3871 | +3.2258 | ||
B | 29 | 1083.87 | B | 11 | 1100 | -2 | -19.3548 | -3.2258 | ||
B+ | 30 | 1122.58 | B | 11 | 1100 | +2 | +19.3548 | -3.2258 |
We can see the resulting pattern is quite straight forward. Note that 31-ET notes E− and B− are, respectively, nearest to 12-ET notes Eb and Bb. The r.m.s. error of the above scheme is sqrt((20 / 31) × (100 / 31)²) ≈ 2.5910 cents.
The above tuning system works fine, and is in fact the system I initially used. However, the allocation can be slightly altered so that 31-ET notes E− and B− are, respectively, based on the 12-ET notes E and B. Clearly, this requires the tuning of the named channel +5 to be altered. The advantage of making this modification is that if all 11 MIDI pitch bend amouts are set to zero, then the 31-ET keyboard nicely collapses into a 12-ET keyboard. That is, the keyboard as constructed can be used for both 31-ET and 12-ET playing, although in 12-ET it is 'not quite' isomorpic.
As only two notes are assigned to named channel +5 we can compute the new tuning to also better average out the error by ((1200 × 9 / 31 − 400) + (1200 × 27 / 31 − 1100)) / 2 ≈ -53.2258. Similary, as only two notes are assigned to named channel -5 we can also better average out the error by ((1200 × 4 / 31 − 200) + (1200 × 22 / 31 − 900)) / 2 ≈ -46.7742. The table below shows this imporved note to channel mapping over the octave.
31-ET | Base 12-ET | MIDI | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Note | Index | Cents | Note | Index | Cents | Channal | Bend | Error | ||
C− | 0 | -38.70 | C | 0 | 0 | -4 | -38.7097 | 0.0000 | ||
C | 1 | 0.00 | C | 0 | 0 | 0 | 0.0000 | 0.0000 | ||
C+ | 2 | 38.70 | C | 0 | 0 | +4 | +38.7097 | 0.0000 | ||
C# | 3 | 77.41 | C#/Db | 1 | 100 | -2 | -19.3548 | +3.2258 | ||
Db | 4 | 116.12 | C#/Db | 1 | 100 | +2 | +19.3548 | +3.2258 | ||
D− | 5 | 154.83 | D | 2 | 200 | -5 | -46.7742 | -1.6129 | ||
D | 6 | 193.54 | D | 2 | 200 | -1 | -9.6774 | -3.2258 | ||
D+ | 7 | 232.25 | D | 2 | 200 | +3 | +29.0323 | -3.2258 | ||
D# | 8 | 270.96 | D#/Eb | 3 | 300 | -3 | -29.0323 | 0.0000 | ||
Eb | 9 | 309.67 | D#/Eb | 3 | 300 | +1 | +9.6774 | 0.0000 | ||
E− | 10 | 348.38 | E | 4 | 400 | +5 | -53.2258 | -1.6129 | ||
E | 11 | 387.09 | E | 4 | 400 | -1 | -9.6774 | +3.2258 | ||
E+ | 12 | 425.80 | E | 4 | 400 | +3 | +29.0323 | +3.2258 | ||
F− | 13 | 464.51 | F | 5 | 500 | -4 | -38.7097 | -3.2258 | ||
F | 14 | 503.22 | F | 5 | 500 | 0 | 0.0000 | -3.2258 | ||
F+ | 15 | 541.93 | F | 5 | 500 | +4 | +38.7097 | -3.2258 | ||
F# | 16 | 580.64 | F#/Gb | 6 | 600 | -2 | -19.3548 | 0.0000 | ||
Gb | 17 | 619.35 | F#/Gb | 6 | 600 | +2 | +19.3548 | 0.0000 | ||
G− | 18 | 658.06 | G | 7 | 700 | -4 | -38.7097 | +3.2258 | ||
G | 19 | 696.77 | G | 7 | 700 | 0 | 0.0000 | +3.2258 | ||
G+ | 20 | 735.48 | G | 7 | 700 | +4 | +38.7097 | +3.2258 | ||
G# | 21 | 774.19 | G#/Ab | 8 | 800 | -3 | -29.0323 | -3.2258 | ||
Ab | 22 | 812.90 | G#/Ab | 8 | 800 | +1 | +9.6774 | -3.2258 | ||
A− | 23 | 851.61 | A | 9 | 900 | -5 | -46.7742 | +1.6129 | ||
A | 24 | 890.32 | A | 9 | 900 | -1 | -9.6774 | 0.0000 | ||
A+ | 25 | 929.03 | A | 9 | 900 | +3 | +29.0323 | 0.0000 | ||
A# | 26 | 967.74 | A#/Bb | 10 | 1000 | -3 | -29.0323 | +3.2258 | ||
Bb | 27 | 1006.45 | A#/Bb | 10 | 1000 | +1 | +9.6774 | +3.2258 | ||
B− | 28 | 1045.16 | B | 11 | 1100 | +5 | -53.2258 | +1.6129 | ||
B | 29 | 1083.87 | B | 11 | 1100 | -2 | -19.3548 | -3.2258 | ||
B+ | 30 | 1122.58 | B | 11 | 1100 | +2 | +19.3548 | -3.2258 |
The updated channel tuning is given below, where each pitch bend amount is a multiple of 1200 / (12 × 31 × 2) = 50 / 31 ≈ 1.6129.
MIDI Channel Tuning | ||
---|---|---|
Named Channel | Pitch Bend Cents | Multiple of 50/31 |
-5 | -46.7742 | -29 |
-4 | -38.7097 | -24 |
-3 | -29.0323 | -18 |
-2 | -19.3548 | -12 |
-1 | -9.6774 | -6 |
0 | 0.0000 | 0 |
+1 | +9.6774 | +6 |
+2 | +19.3548 | +12 |
+3 | +29.0323 | +18 |
+4 | +38.7097 | +24 |
+5 | -53.2258 | -33 |
The r.m.s. error of the above scheme is sqrt((40 / 31) × (50 / 31)²) ≈ 1.8321 cents.
The MIDI notes and channels can now be assigned to the keyboard keys, choosing middle C (C4)¹ in the centre. In MIDI middle C is note number 60, so starting at middle C we assign notes increasing from 60 to the right and decreasing from 60 to the left, guided by the table above. The MIDI note numbers for the octave to the right (C4 to B5) are given by the 12-ET index plus 60, and note numbers for the octave to the left (C3 to B4) are given by the 12-ET index plus 48. The diagram below shows the key to channel and note mapping for the two octave board. This process easily extends to more octaves.
¹ Yamaha choose to label middle C as C3.
To keep a visual relationship to the standard 12-ET keyboard layout the chosen 31-ET keyboard layout is such that keys corresponding to white or black notes are placed in their own column. The wire routing will be easier if the assignment of the keys to scan matrix points ensures that note columns are not broken accross scan matrix columns. The table below shows that this is possible, with the unused scan points marked by an asterisk.
Column | |||||||||
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||
Row | 0 | C− | D# | F# | A− | C− | D# | F# | A− |
1 | C | Eb | Gb | A | C | Eb | Gb | A | |
2 | C+ | E− | G− | A+ | C+ | E− | G− | A+ | |
3 | C# | E | G | A# | C# | E | G | A# | |
4 | Db | E+ | G+ | Bb | Db | E+ | G+ | Bb | |
5 | D− | F− | G# | B− | D− | F− | G# | B− | |
6 | D | F | Ab | B | D | F | Ab | B | |
7 | D+ | F+ | * | B+ | D+ | F+ | * | B+ |
Scan matrix columns 0 to 3 yeild the left octave (C3 to B4), and columns 4 to 7 yeild the right octave (C4 to B5). The row column co-ordinates of the scan matrix are shown on the keyboard in the diagram below.
The keyboard wiring is shown below, looking down from above. The green Phoenix connectors and orange diodes are mounted on the top side of the stripboard, the green and blue wires are predominantly on the underside of the stripboard with the horizontal copper tracks. Although the green and blue wires are physically on the underside they are drawn in the diagram over the top of the tactile switches so it is easier to see where they go.
The wires of alternating scan matrix columns are shown in different shades of blue and green. The 8-way connector is for the eight row signals, and the two 4-way connectors are for the eight column signals. Two 4-way connectors are only chosen over one 8-way because placement of an 8-way proved to be more difficult. Note that the wires from the two 4-ways connectors are not fully shown in this diagram.
In the implementation MIDI channel 10 will not be used as this is often reserved for percussion. Channels 1 to 4 will also not be used so that other instruments can use them. Hence, named channels {-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5} are mapped to MIDI channel numbers {5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16}.
The default pitch bend range of ±2 (12-ET) semitones (±200 cents) is assumed. The MIDI pitch bend wheel resolution is -8191 to +8192. We have already seen that each channel is tuned to multiples of 50 / 31 ≈ 1.6129 cents. To compute the bend amount we take first the proportion of 50 / 31 cents of the 200 cents, which is (50 / 31) / 200 = 1 / 124, and then multiply by 8192 to give 8192 / 124 = 2048 / 31 ≈ 66.0645. The pitch bend amounts in MIDI resolution are then multiples of this number, rounded to the neareast whole number.
The MIDI bend data values are the amounts described above offset by first adding 8192 and then expanded from the 14-bit value to two 8-bit bytes by inserting two zeros. For more information on the MIDI data format see MIDI Messages at MIDI.org.
MIDI Pitch Bend Messages | |||||||
---|---|---|---|---|---|---|---|
Channal | Bend | Binary | Hexa- decimal | ||||
Name | Number | Multiple | Amount | Status | LSB | MSB | |
-5 | 5 | -29 | -1916 | 1110 0100 | 0000 0100 | 0011 0001 | E4 04 31 |
-4 | 6 | -24 | -1586 | 1110 0101 | 0100 1110 | 0011 0011 | E5 4E 33 |
-3 | 7 | -18 | -1189 | 1110 0110 | 0101 1011 | 0011 0110 | E6 5B 36 |
-2 | 8 | -12 | -793 | 1110 0111 | 0110 0111 | 0011 1001 | E7 67 39 |
-1 | 9 | -6 | -396 | 1110 1000 | 0111 0100 | 0011 1100 | E8 74 3C |
0 | 11 | 0 | 0 | 1110 1010 | 0000 0000 | 0100 0000 | EA 00 40 |
+1 | 12 | +6 | +396 | 1110 1011 | 0000 1100 | 0100 0011 | EB 0C 43 |
+2 | 13 | +12 | +793 | 1110 1100 | 0001 1001 | 0100 0110 | EC 19 46 |
+3 | 14 | +18 | +1189 | 1110 1101 | 0010 0101 | 0100 1001 | ED 25 49 |
+4 | 15 | +24 | +1586 | 1110 1110 | 0011 0010 | 0100 1100 | EE 32 4C |
+5 | 16 | -33 | -2180 | 1110 1111 | 0111 1100 | 0010 1110 | EF 7C 2E |
The mkc64u is able to send up to 32 bytes for every note on and note off event. The mkc64u will be programed so that the a key press will send the appropriate pitch bend and note on event, and the key release will send just the note off event. The MIDI data for the first octave (C−3 to B+3) is given below.
31-ET | mkc64u | MIDI | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Note | Index | Scan Point | Col | Row | Channal Number | Note Number | Pitch Bend and Note On | Note Off | ||
C− | 0 | 1 | 0 | 0 | 6 | 48 | E5 4E 33 95 30 64 | 85 30 40 | ||
C | 1 | 2 | 0 | 1 | 11 | 48 | EA 00 40 9A 30 64 | 8A 30 40 | ||
C+ | 2 | 3 | 0 | 2 | 15 | 48 | EE 32 4C 9E 30 64 | 8E 30 40 | ||
C# | 3 | 4 | 0 | 3 | 8 | 49 | E7 67 39 97 31 64 | 87 31 40 | ||
Db | 4 | 5 | 0 | 4 | 13 | 49 | EC 19 46 9C 31 64 | 8C 31 40 | ||
D− | 5 | 6 | 0 | 5 | 5 | 50 | E4 04 31 94 32 64 | 84 32 40 | ||
D | 6 | 7 | 0 | 6 | 9 | 50 | E8 74 3C 98 32 64 | 88 32 40 | ||
D+ | 7 | 8 | 0 | 7 | 14 | 50 | ED 25 49 9D 32 64 | 8D 32 40 | ||
D# | 8 | 9 | 1 | 0 | 7 | 51 | E6 5B 36 96 33 64 | 86 33 40 | ||
Eb | 9 | 10 | 1 | 1 | 12 | 51 | EB 0C 43 9B 33 64 | 8B 33 40 | ||
E− | 10 | 11 | 1 | 2 | 16 | 52 | EF 7C 2E 9F 34 64 | 8F 34 40 | ||
E | 11 | 12 | 1 | 3 | 9 | 52 | E8 74 3C 98 34 64 | 88 34 40 | ||
E+ | 12 | 13 | 1 | 4 | 14 | 52 | ED 25 49 9D 34 64 | 8D 34 40 | ||
F− | 13 | 14 | 1 | 5 | 6 | 53 | E5 4E 33 95 35 64 | 85 35 40 | ||
F | 14 | 15 | 1 | 6 | 11 | 53 | EA 00 40 9A 35 64 | 8A 35 40 | ||
F+ | 15 | 16 | 1 | 7 | 15 | 53 | EE 32 4C 9E 35 64 | 8E 35 40 | ||
F# | 16 | 17 | 2 | 0 | 8 | 54 | E7 67 39 97 36 64 | 87 36 40 | ||
Gb | 17 | 18 | 2 | 1 | 13 | 54 | EC 19 46 9C 36 64 | 8C 36 40 | ||
G− | 18 | 19 | 2 | 2 | 6 | 55 | E5 4E 33 95 37 64 | 85 37 40 | ||
G | 19 | 20 | 2 | 3 | 11 | 55 | EA 00 40 9A 37 64 | 8A 37 40 | ||
G+ | 20 | 21 | 2 | 4 | 15 | 55 | EE 32 4C 9E 37 64 | 8E 37 40 | ||
G# | 21 | 22 | 2 | 5 | 7 | 56 | E6 5B 36 96 38 64 | 86 38 40 | ||
Ab | 22 | 23 | 2 | 6 | 12 | 56 | EB 0C 43 9B 38 64 | 8B 38 40 | ||
A− | 23 | 25 | 3 | 0 | 5 | 57 | E4 04 31 94 39 64 | 84 39 40 | ||
A | 24 | 26 | 3 | 1 | 9 | 57 | E8 74 3C 98 39 64 | 88 39 40 | ||
A+ | 25 | 27 | 3 | 2 | 14 | 57 | ED 25 49 9D 39 64 | 8D 39 40 | ||
A# | 26 | 28 | 3 | 3 | 7 | 58 | E6 5B 36 96 3A 64 | 86 3A 40 | ||
Bb | 27 | 29 | 3 | 4 | 12 | 58 | EB 0C 43 9B 3A 64 | 8B 3A 40 | ||
B− | 28 | 30 | 3 | 5 | 16 | 59 | EF 7C 2E 9F 3B 64 | 8F 3B 40 | ||
B | 29 | 31 | 3 | 6 | 8 | 59 | E7 67 39 97 3B 64 | 87 3B 40 | ||
B+ | 30 | 32 | 3 | 7 | 13 | 59 | EC 19 46 9C 3B 64 | 8C 3B 40 |
Note that scan point 24 of the mkc64u is not used. The MIDI data for the second octave (C−4 to B+4) is given below.
31-ET | mkc64u | MIDI | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Note | Index | Scan Point | Col | Row | Channal Number | Note Number | Pitch Bend and Note On | Note Off | ||
C− | 0 | 33 | 4 | 0 | 6 | 60 | E5 4E 33 95 3C 64 | 85 3C 40 | ||
C | 1 | 34 | 4 | 1 | 11 | 60 | EA 00 40 9A 3C 64 | 8A 3C 40 | ||
C+ | 2 | 35 | 4 | 2 | 15 | 60 | EE 32 4C 9E 3C 64 | 8E 3C 40 | ||
C# | 3 | 36 | 4 | 3 | 8 | 61 | E7 67 39 97 3D 64 | 87 3D 40 | ||
Db | 4 | 37 | 4 | 4 | 13 | 61 | EC 19 46 9C 3D 64 | 8C 3D 40 | ||
D− | 5 | 38 | 4 | 5 | 5 | 62 | E4 04 31 94 3E 64 | 84 3E 40 | ||
D | 6 | 39 | 4 | 6 | 9 | 62 | E8 74 3C 98 3E 64 | 88 3E 40 | ||
D+ | 7 | 40 | 4 | 7 | 14 | 62 | ED 25 49 9D 3E 64 | 8D 3E 40 | ||
D# | 8 | 41 | 5 | 0 | 7 | 63 | E6 5B 36 96 3F 64 | 86 3F 40 | ||
Eb | 9 | 42 | 5 | 1 | 12 | 63 | EB 0C 43 9B 3F 64 | 8B 3F 40 | ||
E− | 10 | 43 | 5 | 2 | 16 | 64 | EF 7C 2E 9F 40 64 | 8F 40 40 | ||
E | 11 | 44 | 5 | 3 | 9 | 64 | E8 74 3C 98 40 64 | 88 40 40 | ||
E+ | 12 | 45 | 5 | 4 | 14 | 64 | ED 25 49 9D 40 64 | 8D 40 40 | ||
F− | 13 | 46 | 5 | 5 | 6 | 65 | E5 4E 33 95 41 64 | 85 41 40 | ||
F | 14 | 47 | 5 | 6 | 11 | 65 | EA 00 40 9A 41 64 | 8A 41 40 | ||
F+ | 15 | 48 | 5 | 7 | 15 | 65 | EE 32 4C 9E 41 64 | 8E 41 40 | ||
F# | 16 | 49 | 6 | 0 | 8 | 66 | E7 67 39 97 42 64 | 87 42 40 | ||
Gb | 17 | 50 | 6 | 1 | 13 | 66 | EC 19 46 9C 42 64 | 8C 42 40 | ||
G− | 18 | 51 | 6 | 2 | 6 | 67 | E5 4E 33 95 43 64 | 85 43 40 | ||
G | 19 | 52 | 6 | 3 | 11 | 67 | EA 00 40 9A 43 64 | 8A 43 40 | ||
G+ | 20 | 53 | 6 | 4 | 15 | 67 | EE 32 4C 9E 43 64 | 8E 43 40 | ||
G# | 21 | 54 | 6 | 5 | 7 | 68 | E6 5B 36 96 44 64 | 86 44 40 | ||
Ab | 22 | 55 | 6 | 6 | 12 | 68 | EB 0C 43 9B 44 64 | 8B 44 40 | ||
A− | 23 | 57 | 7 | 0 | 5 | 69 | E4 04 31 94 45 64 | 84 45 40 | ||
A | 24 | 58 | 7 | 1 | 9 | 69 | E8 74 3C 98 45 64 | 88 45 40 | ||
A+ | 25 | 59 | 7 | 2 | 14 | 69 | ED 25 49 9D 45 64 | 8D 45 40 | ||
A# | 26 | 60 | 7 | 3 | 7 | 70 | E6 5B 36 96 46 64 | 86 46 40 | ||
Bb | 27 | 61 | 7 | 4 | 12 | 70 | EB 0C 43 9B 46 64 | 8B 46 40 | ||
B− | 28 | 62 | 7 | 5 | 16 | 71 | EF 7C 2E 9F 47 64 | 8F 47 40 | ||
B | 29 | 63 | 7 | 6 | 8 | 71 | E7 67 39 97 47 64 | 87 47 40 | ||
B+ | 30 | 64 | 7 | 7 | 13 | 71 | EC 19 46 9C 47 64 | 8C 47 40 |
Note that scan point 56 of the mkc64u is not used.
To test the tuning system the six button breadboard is tuned to the notes C, E, G, A#, Bb and B. Note that due to the different layout of the breadboard to the main two octave board, the six notes are assigned to different scan points of the mkc64u. From left to right, the red buttons are assigned notes C, E and G, and the black buttons are assigned notes A#, Bb and B. With these notes it is possble to play some 7th chords, including the harmonic 7th which is not possible on a 12-ET keyboard.
31-ET | mkc64u | MIDI | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Note | Index | Scan Point | Col | Row | Channal Number | Note Number | Pitch Bend and Note On | Note Off | ||
C | 1 | 11 | 1 | 2 | 11 | 48 | EA 00 40 9A 30 64 | 8A 30 40 | ||
E | 11 | 10 | 1 | 1 | 9 | 52 | E8 74 3C 98 34 64 | 88 34 40 | ||
G | 19 | 9 | 1 | 0 | 11 | 55 | EA 00 40 9A 37 64 | 8A 37 40 | ||
A# | 26 | 3 | 0 | 2 | 7 | 58 | E6 5B 36 96 3A 64 | 86 3A 40 | ||
Bb | 27 | 2 | 0 | 1 | 12 | 58 | EB 0C 43 9B 3A 64 | 8B 3A 40 | ||
B | 29 | 1 | 0 | 0 | 8 | 59 | E7 67 39 97 3B 64 | 87 3B 40 |
Some possible chords
Chord Name | Notes | |||
---|---|---|---|---|
C Major | C | E | G | |
C Harmonic 7th | C | E | G | A# |
C Dominant 7th | C | E | G | Bb |
C Major 7th | C | E | G | B |
The first stage of the build was to mount the striboard on the wooden board and then insert the tactile switches. The stripboard was sold as 41 tracks of 143 holes but it turned out to have 144 holes per track. The extra line of holes was chosen to be on the right hand side which is quite welcome.
The next stage of constrcution was the addition of the blue and green wires. As mentioned these wires are mainly on the underside but their endpoints are threaded up and over. This can be interpreted from the wiring diagram by the 0.1 inch horizontal section by each endpoint blob. To aid this construction the diagram below is a view of the wiring from the underside of the keyboard, that is, flipping the stripboard vertically over.
In reality in this view the connectors and diodes would not be visible, but they remain on the diagram as a reference. The photos below were taken after adding the blue wires but before the green wires.
The assembled keyboard from above.
The assembled keyboard from below.
The keyboard connected to the mkc64u.
The keyboard and mkc64u mounted.
© Sam Gratrix, Gratrix.net.