Here now some design considerations what our expressive button should be capable of and how we plan to build it.:
Under an expressive button we understand a push button with a continuous analog output, e.g. the more you press it, the higher the analog output. Ideally, the relationship between pressure depth and output signal would be linear.
In the end, the expressive button may look and work similar to a trumpet valve. As we want to have an expressive control on produced music, the button must be able to be actuated really smooth and must not get stuck and should have low resistance in general. We thus will use a linear ball bearing and a matching cylindrical rod as a kind of smooth transitioning piston design. The rod will be loaded by a compression spring between linear bearing and rod head (not shown). The linear bearing will be centered above the piston hole in the top case sheet with a bracket. Inside the case, at the end of the rod, a strong Neodymium magnet will be mounted.
Our initial design will have an stroke depth of the button of 15mm. This is kind of a compromise trying to optimize expressiveness and speed of play. The deeper the action height, the finer we can control expressiveness, but at the same time, it becomes more tedious and needs more time to reach a given depth. De design allows to use arbitrary stroke depths by choosing cylindrical rod (and spring) height accordingly.
The magnetic field strength of the Neodymium magnet will be measured by the linear hall effect sensor. The nearer the magnet to the sensor, the higher the analog output of the latter. We thus will use the analog output of the hall effect sensor as a proxy for magnet distance aka button stroke depth.
There is a problem that will come up because the distance - magnetic field strength relationship is far from linear, it is more a cubic relationship. We may just use the output as-is or we may want to remap it to a linear scale. This will depend a lot on what we want to steer with the derived control signal in the end. It may be best if it can be changed on-the-fly in the final firmware. We will elaborate more on this problem in an upcoming log post about the underlying math done in the firmware.
Most linear hall effect sensors with analog outputs do measure both north and south polarized magnetig field strength. We however are only interested in either north or south polarized magnetic fields, but not in both. We therefore will need to remap the analog output signal to span the whole voltage range sampleable by our ADC, but this will make part of an upcoming log entry about the accompanying linear hall effect sensor breakout board.