Original Python code and discussion at http://forum.pianoworld.com/ubbthreads.php/topics/3092415/re-realtime-pitch-based-velocity-filter-transformed-the-nu1x.html#Post3092415
Converted to JavaScript and enhanced by Kerri Shotts based on ideas in the above thread.
Parameters
- Transform: additive | multiplicative (default)
- Controls if the adjustment is added or multiplied with the original velocity.
- Scaling Factor (add): Default 10
- Scaling for additive transform.
- Scaling Factor (mul): Default 0.2
- Scaling for multiplicative transform.
- Log Level: None | Normal (default) | Silly
- Controls how much logging is performed in the Scripter window.
- Transform NoteOff: unchecked (default) | checked
- If checked, NoteOff velocities are transformed using the same algorithm as NoteOn velocities.
- Lower Velocity Bound: 0 (default) - 127
- If the transformed velocity goes below the specified value, it will be clipped to the specified value.
- Higher Velocity Bound: 0 - 127 (default)
- If the transformed velocity goes above this value, it will be clipped to the value.
- Midpoint: 0 - 100% (50% default)
- Controls the midpoint for the calculations. 50% is the middle of the Piano.
- Equation: Linear (default) | S-Curve | Sine Curve
- Controls the equation utilized, which determines the shape of the transform curve.
- Linear is a linear transformation (from top left to bottom right).
- S-Curve is a curved transformation (from top left to bottom right), focused around the midpoint. S-Curve Slope controls the degree of the transformation around the split.
- Sine Curve is a curved transformation focused around the midpoint.
- Offset: -127 - 127 (default: 0)
- Controls the offset of the equation from the midpoint.
- S-Curve Slope: 0.1 - 2048 (default: 248.208)
- Controls the degree of the slope for the S-Curve equation. Lower numbers are more severe, approaching a "switch"-like appearance (on/off) instead of a smooth curve.