Velocity curve for the emulator. Default is 520, an exponential curve for a hard playing style. Value '0' is flat (no touch sensitivity). Values up to 100 are linear scaled maps. The velocity map is table of points that is interpolated linearly: you may only have to define the inflexion points, however if you want smooth curves you will have to define each of the 128 velocity values that are used in noteon/noteoff events. The emulation only has a single table of gain levels for each key.velocity index, the engine by contrast has two tables, one for each on/off event however that is an integer map, not a gain map.
There are several default tables if you do not want to specify your own interpolated curve. Each table is the gain for the Midi velocity value given in the note event, it has 128 entries. The following are implmented:
100-199 Convex curves for a soft touch keyboard player
200-499 Concave curves for a hard touch, linear up to quadratic function.
The next set up to 525 are repeats of the above but with less granularity. In the above range the value of 200 is linear, as is 510 below:
500-509 Convex curves for a soft touch keyboard player
510 linear
511-25 Concave curves for a hard touched player.
Then there are a couple of specific curves
550 logarithmic
560 parabolic
The values up to 100 consists of two digit numbers. The first digit defines how late the line starts (it is linear) to ramp up, and the second digit is how late it reaches 1.0. The value of 09 is almost the linear mapping above as it starts from 0 and ends almost at the end. A value of 49 would be for a heavy player, it is zero for a large part of the velocity table, and then ramps up to max gain (1.0) close the end of the table. Note that these table could also have been defined with velocityMap definitions as they are linear interpolations. A present release will include curves to smooth things out a little.
Option 520 is a squared powercurve and feels quite natural although that is very subjective. Perhaps its natural for a hard player and it could be a better default than the linear curve.
The value 1000 will invert the mapping, so:
1510 - linear from 1.0 down to 0.0 as velocity increases
1520 - exponential, from 1.0 down to 0.0 as velocity increases
The engine mapping is applied before the emulation mapping given here. There are reasonable arguments to make this table logarithmic - you are welcome to do so. There are no limits to the values here other than negative values are not mapped, so this table can also be used to compensate for volume levels.