I know, this won’t lead to anything besides people feeling the need to argue and possible not understanding the underlying mechanics. But still, because this feature could be of great use to me and maybe some other people:
in MIDI Modifiers, velocity shift and velocity compression are processed in the wrong order.
I know, in audio compression there’s in gain and out gain, so one could think well there’s only one so either of them might be a valid choice. Here’s what’s wrong with it:
Compression is doing this c(v) = r * v, with v = velocity, and r = rate from 0 to 1 (percentage / 100)
Velocity shift: s(v) = v + t, with t = translation amount
BUT: both functions have a floor (anything below 0 is cut to 0) and a ceiling (v > 127 → v = 127)
So with a compression of 50%, compressed values land in between 1-63.
When shifted upwards for 64, values land in between 33-63.
With a shift of 126 (cubase doesn’t allow 127), it’s always plain 63.
But it is not possible to compress to values between 64-127, or 64-96, or anything like that.
Which would be possible if shifting was applied after the compression.
Also: all of those scenarios would still be possible. And compression values would give more logical and expected results (like 33-63 is compression to 25%, not 50%).
All the scenarios where we want a destination going up to 127 aren’t possible the way it is now.
Changing the order would allow compression to every possible destination range, 16-32 as well as 96-112.
And now that nobody is still reading I’ll add as a bonus that the manual velocity compression in MIDI → functions → velocity … is calculating compression wrong. Not as in there has been made a wrong choice of how it should have been done, but a mistake in the actual calculation.
The function computes an average and the velocity of all selected notes are compressed towards that average like (velocity - average) * compression + average (with compression again being 0…1, or percent / 100)
But the function calculates the average from all notes in the midi part, while the function is applied only to the selected notes in it. Which can result in values way of the correct results, especially when compressing parts that are significantly louder or lower volume than the rest of the part.
cheers