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:
1000/20=50ms
.
The maximum stroke distance using this interval is364/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 takes550ms
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:
stroke_length=speed*(30/BPM)
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.