Funscript Converter: Adapt Stroker Scripts to Different Devices

This python script converts funscript intended for strokers, where the values indicate positional data, into scripts more appropriate for devices where the values are not positional data.
For example, a thruster with oscilate where the value is the frequency, a vibrator where the value indicates intensity, etc.

It has a couple options, it can try to get the frequency of the up/down motions, the magnitude of the up/down motions, or the offset/trend/bias of the motions.
Here’s a sample of what the options produce


Here’s the github repo with instructions and examples on how to use it.

I’d love to get some feedback on it if you try it!

10 Likes

So, has anyone tried it yet? I’d love to hear some comments on how to improve it

Nice script, I got it working but need to see how it turns out. I’m going to try to convert a stroker funscript to buttplug vibrator. So I guess magnitude is the option to choose.

Is it possible to use both magnitude and frequency? The reason is that a stroker/handy has lineair range, but also speed. The question is what the best modulation should be.

Also, the p option is nice to check the graph, but the data is so condensed that a horizontal scrollbar is needed.

Thanks for the nice script

I checked with ChatGPT and got this answer for the modulation

Conversion Approach

1. Map Stroke Position to Vibration Intensity

  • If the stroker script uses a 0–100% stroke range, convert this into 0–100% vibration power for the buttplug.
  • Example:
    • 100% stroke position → 100% vibration power
    • 50% stroke position → 50% vibration power
    • 0% stroke position → 0% vibration power (or a subtle pulse)

2. Convert Stroke Speed to Vibration Frequency

  • Measure the time between strokes and use it to determine vibration frequency.
  • Faster strokes (e.g., 300mm/s) should result in higher frequency vibrations (e.g., 60Hz).
  • Slower strokes (e.g., 50mm/s) should map to lower frequencies (e.g., 10Hz or pulsing mode).

3. Smooth Transitions

  • Vibrators work best with gradual intensity shifts rather than sudden jumps.
  • Implement a smoothing algorithm (like a moving average) to avoid abrupt changes in vibration.

Tested conversion of a few scripts, was pretty seamless. Noticed that the converted scripts are less intense, how that translates I’m still in the process of testing. So far so good.

I am using a pulse solo for my testing.

From what I remember, magnitude worked better but I really haven’t used it in a while (was kind of dissapointed in the vibe’s performance in general)
What worked better for you? What did you think?
I will probably implement a scrollbar somewhere this month, when I find the time.

What did you think about the converted scripts overall?

I will add some options somewhere this month so the output range can be modified, some options for specifying an offset or custom output range, or if I’m feeling up to it, a transform where you draw or specify a mathematical function to map an existing 0-100 range into a different 0-100 range

It worked great for the handful of scripts I tested against. I ended up putting my pulse solo to the side and bought a handy. So probably won’t touch be using my vibe scripts anytime soon.