EroScripts is a community for scripts that sync up interactive sex toys with porn. Learn more.

To discover, download, and help choose what gets scripted, create an account.


Some guides and formulas you can use when scripting for the Handy using OFS

Hey all, I noticed there wasn’t really a topic about this so I figured I’d create one.
This topic contains some useful guides and formulas that can be used when scripting for the handy in OFS.

Most of the statistics regarding the Handy come straight from their support team.
When I’m talking about strokes, assume a full up-and-down movement.
All of this is based on theoretical statistics and calculations, your personal experience may differ.

Min and max speeds

  • The minimum speed that the handy can handle without stuttering is 32mm/s.
    This translates to 0.15 full strokes per second (or ~6.9 seconds per full stroke).

  • The maximum speed that the handy can handle without the firmware capping it is 400mm/s.
    This translates to ~1.82 full strokes per second (or 0.55 seconds per full stroke).

The movement speed in OFS is not the same as the actual speed on the Handy.
This is because OFS assumes a full stroke length of 100mm instead of the Handy’s 110.
Using this given, we can calculate that the min and max speeds we can use in OFS are 32*(100/110)=~29 mm/s and 400*(100/110)=~364 mm/s..

From here on out, I will be referring to these speeds as the min and max stroke speed, using OFS’s stroke length of 100mm.

Min and max interval lengths

  • The handy can handle 10 strokes per second, meaning 20 intervals, which gives us the following:
    The maximum stroke distance using this interval is 364/20=~18mm.
    Stroke lengths and intervals this short are usually not enjoyable. Performance is also influenced by how quickly the Handy can process the script. Try it before using it. I tend not go shorter than 100ms (3 frames at 30fps) using a distance of 36mm.

  • Using our max speed of 364 mm/s, we can calculate that a full downwards or upwards movement takes 100/440=0.275s (275ms), meaning a full stroke takes 550ms giving us 1.82 full strokes per second.

  • The maximum stroke interval is defined by our minimum stroke speed (29 mm/s):
    100/35.2=3.5s (3448ms) (assuming a stroke length of 100mm)

Using frames:

  • 30 fps @ 364mm/s: min=1.5f, 18mm max=8.25f, 100mm
  • 60 fps @ 364mm/s: min=3f, 18mm max=16.5f, 100mm

Calculating stroke length & interval using BPM

So what if you’re using BPM to create scripts, for example when scripting CHs or PMVs?
Let’s take a look at this formula, which uses our speed and stroke length to calculate our BPM:
60/(2(stroke_length/speed))= BPM
Using a stroke length of 100 and a speed of 364 gives us a BPM of 109. So if all you want is a full stroke as fast as possible, use a BPM of 109. This also means our minimum BPM when doing full strokes at 364 mm/s is 109.
(If you’ve ever wondered why slower songs tend to give you more freedom when scripting PMVs, this is why.)

Now what if we have already know our BPM, wanna use 364mm/s and wanna calculate our stroke length? Let’s transform the formula:
For example, if our song is at 150 BPM and we want to use 364 mm/s, we get a stroke length of 73mm.
If your answer is higher than 100, it means your tempo is too slow for full strokes at 440 mm/s. You can combat this by halving your answer and using twice the amount of strokes.

I hope this comes in useful, if there are any additions (or if I messed up the math) let me know.


This is simultaneously pretty cool, but also makes my eyes bleed. Thanks! (This is actually nice info to know)


Nice. You can also use stroke colors in OFS to see if they exceed max. speed. As long as you don’t have red strokes you should be good to go. Also worth mentioning that red strokes are nothing bad but if you want to have a full control over Handy it’s better to avoid them.

1 Like

Very true, the handy will just limit the speed above the 400 mm/s threshold but by doing that it ‘distorts’ the script. Also, I guess I just like numbers.

However, new and better devices are released. The Handy has better specs than the Launch. Kiroo probably has better specs than Launch as well. OSR specs exceeds all of them.

If you script strictly to the capabilities of one device then the script won’t be able to take advantage of the next gen devices or devices with better performance. You still need to stay somewhat close to current device limitations and not exceed their capabilities too much because you don’t want to be completely in the hands of the firmware and hope that it behaves in a decent way. It is a balance you have to find.