peter_schwartz wrote:Hi Stephen,
Great to get your reply! I think we're talking about exactly the same thing, but I'll defer to you to confirm; I'll be more specific in this post about what I meant by "decreasing the resolution"...
What I had in mind was the notion of creating a curve that started out, say, somewhat insensitive in the lower range of values. Let's say that MIDI velocity values of 1 - 51 were mapped to 1 - 31. This would result in a number of adjacent map positions being given the same value; thus, the resolution would decrease in that section.
From map positions 32 to 127 we have 95 positions remaining, but only 75 velocity values to fill them in with, so to speak. This means there will be some areas of the map where velocity values have to be skipped in order to complete the curve, thus making the resolution in that part of the curve "coarse" (low res) here and there. The only way that we complete the curve by not skipping values from 32 on up is to increase the value of each remaining map position linearly until we run out of velocity values, resulting in a curve that ends in a "plateau".
This would be true if you were mapping a table of 127 steps to an amplitude engine that only had 127 discrete steps (or directly to MIDI). However, I think we can safely assume that the hypothetical internal tone generators we are talking about here have much higher resolution than that. For the sake of making it easy math-wise, let's stipulate that the tone generator has at least 1270 steps of resolution over the full range of its output (it probably has more if based on floating point...)
The curve would operate on incoming MIDI 0~127, so a linear curve would be mapped such that 1 = 10, 2 = 20, 3 = 30, 4 = 40 ...127 = 1270 as far as what level of the tone generator to play at based on what MIDI value. So if you took my example of making the top 64 values cover only the top 25% of the curve, then it would be:
1 = 15, 2 = 30, 3 = 45, 4 = 60 up to 64 = 9600, (larger steps)
and then
65 = 9605, 66 = 9610, 67 = 9615 up to 127 = 1270 (smaller steps)
So the lower half of the curve loses resolution, while the upper half of the curve gains resolution.
I'm pretty sure this is how it works; the audio engines have a much greater degree of resolution than the 0~127 of MIDI (that's why "smoothing" works).