Topic: StreamByter script : Velocity Enhancer

Hi everybody,

For all Mac users (and - I hope soon - iOS users), I am glad to release my very first Streambyter script : Velocity Enhancer.

https://audeonic.boards.net/post/5431/thread

This script is dedicated to all virtual pianos enthusiasts who are looking to improve the response of their Midi controller.

It all started from a dissatisfaction I experienced with my keyboard (an optical system retroffited in my upright piano). Inconsistencies from note to note or with a same repeated note, some “hot” notes (vel = 127) under some circumstances, inconsistencies in trills and arpeggios and a sense of energy lost in fast runs where it should not…

So this script will fix most of these issues (sometimes partially) and give the impression you play on a keyboard with more inertia and evenness.

It relies on the following basic physical principles :
- the faster you play, the faster your fingers must depress the keys to move at the requested pace, thus the higher the velocity
- the faster you repeat a note, the lower the variation of velocity between 2 strokes.
- in a certain extend, the previous statement is also true for fast consecutive different notes

So the idea is to apply some kind of initial compression to spare some headroom (somewhere between 5-15 points of velocity) and use this additional headroom to implement the principles described just above.

It should also provide a sense of greater dynamic range as in any case :
- if your keyboard output is set high : you can't have any more your keyboard repeatedly max out at 127
- if your keyboard output is set low : you will be able to exceed your current maximum reachable value

In the 1st screen you set the parameters, in the 2nd screen you monitor incoming velocity versus outgoing velocity.

Parameters :

- Headroom : apply a kind of compression to decrease the overall velocity and creates some “room” for the extra velocity bonus that will be generated during the further steps
- Memory : time during which previous velocity values are remembered for smoothing (strength decreasing exponentially)
- Speed Feedback : how much playing speed can generate extra velocity (try this with arpeggios, tremolos)
- SF_Threshold : velocity above which speed feedback engages (‘below the threshold, speed feedback applies negatively)
- Derivative : Increase the variations of 3 consecutive increasing or decreasing values (for example, the succession of values 30-50-80 will become 30-50-90). This acts like an edge sharpening in image processing to counteract the former smoothing/denoiser.

Hope you will enjoy !