As I already mentioned I needed 11 of the sensor modules and since I don’t have an 11 MIDI port PC I had to develop a main board that would collect the midi messages via an I2C (two wire interface) and bundle them into one MIDI port. Also a convenient way to set up the sensor parameters was needed. All this is covered by this baby:
As you can see it has 4 buttons to navigate through the menus displayed on a 4×20 LCD and 8 faders to easily change the parameters that control the behavior of the keys. To really understand what the physical model I developed is capable of I will go through the parameters and explain them:
- mass/sensitivity: This parameter’s name maybe a little confusing since it refers to a the mass of a virtual hammer. Increasing this value will make it easier to produce loud strokes. When you strike a key on a grand piano you will accelerate the hammer towards its strings and there is a fixed gear ratio between key- and hammer movement. When you increase the hammer mass while keeping the strike velocity constant the sound will get louder because there is a bigger energy transfer to the string. Because this parameter can not change the mass the player has to move but only the virtual mass increasing this value will make the keyboard feel lighter. At the end it might be a better idea to call this parameter sensitivity.
- gravitation: When playing a real piano you may have noticed that – contrary to most digital pianos – it is hard work to play pianissimo. This is because the hammer has to fly the last bit of its way freely being decelerated by gravity. Otherwise it would damp the string while you’re pushing the key. With this parameter you can control how strong the gravitational force is applied to the hammer.
- Dful, Dpar: These parameters control the dampers. In an actual piano there are dampers that are lifted when a key is pressed and dropped when the key is released. Dpar controls the key position, at which the damper begins to damp the string and Dful is the position, where the damper hat reached its full efficiency.
- xStr: This parameter controls the position of the string relative to the highest hammer position which is reached, when the key is depressed to its felt stop. Changing this parameter influences the energy loss of the hammer on its way to the string as well as a delay for the note. This delay is important in two ways: It makes it possible to use the full range of key movement to accelerate the hammer and it avoids unwanted double notes.
- xRep: This one controls the repetition behavior of the keyboard. It simply is a threshold to which the key has to come up until a new note can be triggered. This parameter also helps to avoid double notes and simulates the repetition mechanic found in any modern piano.
- tDead: Is simply the time the virtual mechanic needs to recover for the next note. This helps against double notes caused by (vibrational) noise. And: it saves computational power 😉
- xFelt: This parameter was originally intended to define the key position where the key hits its felt stop which then could be compressed by applying further force to the key making polyphonic aftertouch possible. But it is also a great way to change the trigger point, at which no more acceleration could be applied to the hammer
I hope you now have a proper overview about what my physical model is capable of.