smooth midi controller/automation data

This would be a function that could operate on both midi and automation data.
It could be implemented as a separate function, or added as an extra option in both the Logical and Project Logical Editor.

This feature is inspired by the Lag operator in Kontakt.

What does it do:
-It smooths/interpolates data in either 2 ways; by applying a ‘lag’ like function to existing data, or applying it to existing data while generating additional data inbetween it.
It can apply to midi controller data, such as modulation, aftertouch etc. and velocity, or to automation data.

How does it work:
-Imagine the user has just recorded a recording pass in which they’ve used the modwheel for dynamics in the performance.
The performance is nice, but the modwheel recording is slightly juddery and spikey, either by lack of resolution on the midi controller used or inaccurate playing.
In this case, the user selects the offending midi data, and applies the ‘smooth’ function.
The smooth function has a ‘strength’ percentage and an option to ‘use existing data’ or ‘interpolate’, with a resolution in ticks setting.

The first just takes the existing data, and applies a lag function with said percentage strength.
The result is that on each application, the midi data is smoothed out a bit; the user would start with a small percentage and apply multiple times to get the desired amount of smoothing. Higher settings do more smoothing, but might lose some of the speed and spikes in the controller performance.
This function only works with the existing data and does not effect the positions of the events; only the value.

The second function, interpolate, generates additional data between the recorded controller events to make for an even smoother performance.
Again, existing values aren’t moved, but additional events are generated in between. The amount of generated events is set by the tick resolution setting.

It would operate the same on automation data. An additional feature could be that it can use the existing data but use the bezier curve functionality to smooth out the hand-automated automation data.