Say we have a funscript with a value of 50 at timestamp 1000, and a value of 100 at timestamp 2000, can we assume that all/most devices will have a value of 75 at timestamp 1500? Barring physical limitations, differences etc, I mean just in theory.
Or do some devices apply different types of interpolations on purpose?
I can only speak to anything using MultiFunPlayer and do also wonder, what kind of interpolation non-T-Code devices use.
In MFP the user can choose the type of interpolation used (Linear, Makima, PCHIP, Step). Since scripts are time sensitive with their direction changes, I highly recommend PCHIP interpolation, which smooths the movement while preserving timing. To make this point more clear, Matlab has this nice comparison plot for their own implementations of these interpolation methods:
On a lower level T-Code devices can receive a second value next to the target position, either a time interval or a rate/speed. With this it would linearly ramp to the target position.
I don’t know whether any devices do any of this internally, but I very much doubt it. I think it’s all done with the client-side software, as the first response details nicely.
The issue then is updating the device rapidly enough to do such interpolation reliably. It’s not an issue at all for a USB-connected OSR2/SR6, which can be updated hundreds of times per second with ease. Anything that uses wireless communication won’t be able to match anywhere near that rate of update. WiFi will probably do reasonably well, but still be limited by latency well below USB serial update rates. Bluetooth will fare much worse.