Slowing a script down non-linearly, without losing cadence

I find most scripts to be too fast and rough - I am definitely aware I am in the minority here. A recent poll here showed that most peeps here like it rough :slightly_smiling_face:

For the coders and programmers in this place, I was wondering if there could be a way to slow down a script while still leaving the remaining parts of it still in sync. A good example/ analogy is how you can play every quarter note in a song, or alternatively, every whole note, and still be in rhythm.

The code would aim to eliminate certain points within the funscript while leaving a sort of a sine wave behind made of actual points from the script. So the script would be slower, while maintaining the same time duration and somewhat still in sync. I hope I am making sense here. Is this doable?

If you’re using ScriptPlayer, you can try reducing the speed multiplier

The only way to avoid this problem is to reduce the size of the stokes

This is def something I will have to look into. What exactly does speed multiplier do?

It slows down the video playback & script. Slow motion…
But thats probably not what you are looking for.

Thanks for the quick answer.

You are one person I know who can answer this definitively. Basically the program eliminates parts of the script while leaving an in-sync script, slower. I am imagining a slider, like the one you have on HandyControl - 100% is full script, 50% with half the points eliminated while still keeping the same duration.

I am NO programmer - just floating this out there. It would help immensely with any script. Play any script at the speed of your choosing, while the rhythm remains roughly the same.

If your script is 100% up/down like CockHero scripts that could maybe be done but usually scripts are very unique with movements. Its not just up/down so you can’t just eleminate each 2nd point.

I usually reduce stroke range if it gets too intense or switch to manual mode.

I could imagine that an automatic stroke range reduction could work. You define your limit and the app reduces the stroke range on faster sections (average value over a few seconds).

This could be either included in the script with a modification or by sending stroke range commands during play.

1 Like

This sounds very interesting.

This is the part where I explained that I am no programmer :slight_smile: I was thinking a program can add calculated points to maintain some sort a sine wave but I could totally be speaking out of the wazoo haha

Of course its, more complicated :slight_smile:
You have to remove some points and invert others.

1 Like

I already calculate the speed in the script. A limit would be easy.
The example in the picture is very easy. Usually scripts look way more complicated.

If the script is altered then this will be tricky as I have to calculate new points from the stroke range center which changes every timestamp.

Its easier to just reduce the stroke range by commands. But if the new firmware 3 allows both stroke range limits to be moved then I again have to calculate the center position and not only a scaling factor. Maybe I just need to calculate an average value from 1-2 seconds…

This realy needs some investigation to find the best approach. I made a note of it but currently I have other things on my ToDo list for HandyControl.

1 Like

Yup - sounds complicated :slight_smile:

Thanks for looking into it. I am totally cool with HandyControl as is - matter of fact I use it primarily in VR, no sync but it is better than either one of my hands for the job, especially, with that Gamepad. Best invention ever.


If you have a fast script you can slow it down by modifying the script beforehand. Use the offset to limit the stroke range helps sometimes but it also affects the slower sections. An automatic stroke range reduction would be realy nice. I feel with you…


Will definitely try it. I dont get many chances to use the handy, but when I do, I try to get hour + long sessions out of it. 99% of the scripts available are too rough for an hr long session, I’d be sore for days.

Also luckily, I hear that VR Edging maybe releasing some nonBJ scenes soon, and that will definitely solve the problem as those scripts will have slow built into them :slight_smile:

It’s really funny you should post this today, I just started working on a little utility that solves this exact problem. I’m calling it “FunHalver” - it takes each up/down stroke and turns it into a single up or down stroke, effectively halving the speed without changing the overall sync with the source content.

I designed it to be used to take full-speed Cock Hero videos and turn them into easy-mode scripts, but it works pretty well for normal scripts too.

It’s not finished yet, the algorithm isn’t quite right so it produces some kind of weird output sometimes, and I’m yet to actually package it up into a .exe that can be downloaded, but I’m making good progress! I was going to create a new thread about it when it’s done (probably sometime next week), I’ll link to that thread here once I do!


damn! You guys are legit geniuses with your coding and stuff. I cannot code for shit so this is all magic to me. This utility will open up ALL scripts available to be enjoyed in some form or another.

Thanks man :slight_smile: Will gladly wait for this. Seriously, open a tip jar in here. I’d buy you some coffee (or tea) if you are across the pond.

1 Like

I guess the tricky part is to deal with timestamp positions with the same direction instead of alternatig directions. Do you skip these?
1000 40
2000 60
3000 70
4000 100

The algorithm right now has the following steps:

  1. Simplify the script so it’s a series of alternating up/down strokes (as you say), although I’m going to remove this step and just scale them
  2. Break the actions into blocks - a block occurs if there’s been a gap proportional to the most recent action’s duration (user-confiurable)
  3. Take each group of four actions and turn them into two actions, maintaining stroke length
  4. Ensure each block of strokes begins and ends at the top position

But I wrote the core algorithm when I was stoned a few days ago in like 90 minutes so it’s pretty shoddy, so I need to go back and fix it up!

Once it’s done, I’ll send it to you if you’d like to integrate the feature into HandyControl, I’m using your heatmap algorithm so it seems only fair :wink:


OK it’s done - FunHalver Version 0.1.0! Here’s the thread :slight_smile:

This was a fun project to learn Electron JS!

@Lucife here’s the file that does the actual halving - feel free to replicate the functionality or improve upon it! I ended up totally rewriting the algorithm today. There are still improvements to be made but this approach is much more robust than the previous one!

1 Like