So, the real question isn't how to set two values in relation, but how to determine speed?
I already answered that in a thread somewhere here on the forums, but I'll try to summarize it (although I can't guarantee that it will be the simplest description. I tend to say more than would be needed^^)
Speed is "distance over time". To measure speed, you can either set a fixed distance and measure the time passed, or set a fixed time and measure the distance passed.
When you move your sprite with your own events you don't need to measure anything - you already know the speed. For example, if moving a sprite by
Sprite.X = Sprite.X + 10 * TimeDelta
then the speed is 10 px/s at any time. It almost looks like a rule: n * TimeDelta = n px/s
You may also have acceleration/decceleration, but let's not make it too complicated. I just mention that these dynamics are a part of n. Something like
(10 + 20 * TimeDelta) * TimeDelta
still can be reduced to
n = (10 + 20 * TimeDelta)
and therefore the rule still applies.
If you don't have access to the values, you need to measure the speed. The simplest way is to just measure the distance moved per tick. Create three PVs (lastX, lastY, dist), set the first two to the position of the sprite at start of layout and then
+ Always
-> Set dist to distance(lastX, lastY, Sprite.X, Sprite.Y)
-> Set lastX to Sprite.X
-> Set lastY to Sprite.Y
You now have a speed value at any time. dist is the speed, expressed as px/tick. You can even extrapolate that to px/s by using TimeDelta:
-> Set Text to FormatDecimal((Sprite('dist') / TimeDelta), 1) & " px/s"
The rest is up to you. You have to decide at which speed value the blur has to be at full strength, either by calculating or by trial and error.
EDIT: The simple example above as a .cap -> http://db.tt/enNzNAQr