Dissecting the keyboard was pretty straightforward -- just unscrew everything on the bottom of the keyboard.
Underneath the keys that our fingers press are a layer of rubber buttons that short the switches.
Underneath the keys that our fingers press are a layer of rubber buttons that short the switches.
Since F=ma (Newton's 2nd law of motion), m is constant, and the depth difference of the buttons is also a constant, it means the harder we hit the keys, the higher acceleration the keys move, and the shorter the time it will take button B to hit switch B, after button A hits switch A first. With normalization (depending on how the sound samples are handled), this timing difference can be interpretated as intended dynamic.
The mechanism of the keyboard is a very clever design. Now I need to figure out what's wrong with those keys. The fact that keys in a row stopped working at the same time is a strong hint that they must share a common signal path. Originally I thought there must be some complicated multiplexing to encode all the keys to optimized output points. However, on this circuit board there are only simple diodes for each switch; no binary encoding.
I noticed switch A and switch B both connect to the same contact that I first thought to be the common ground -- that way, we would need 61 keys * 2 switches = 122 output points. However, attached to the lower half of the keyboard are two ribbon cables: 7 pins and 12 pins; and the upper half has another 4 pins, and shares the same 12 pins on the lower half via parallel connection. This is far less than the output points we need.
After carefully tracing the circuits, I realize the design is actually musical! All A switches of note A in every octave are connected to the same output. All A switches of note B in every octave are connected to the same output. The same for B switches. We would then expect a ribbon cable of 24 pins since there are 12 tones in one octave and each tone has switch A and B. However, it turns out that every 6 pairs of switch A/B share the same ground. Since 6 semi-tones equal half octave, a tritone, I call such grounds "tritone set number".
Now the numbers add up. And it became obvious that the bad keys (G2-C3) share tritone set #3 (the lowest note C2 alone is tritone set #1; C#2-F#2 is tritone set #2). Tracing the path, I found some contacts' rust broke the circuit line.