HismithControl - Hismith Control With Funscripts Support

Hismith Control With Funscripts Support

About Project

This project is trying to fully reproduce described movements in funscripts by Hismith (not only speed) with video synchronization in VLC video player.
After all steps required for it to work you will need only Start application and it will automatically detect what video do you play in VLC and execute related to it funscript with related scene synchronization.
To be able to do this it uses computer vision with using your Web Camera which tracks Hismith rotation (angle position at each moment) and tries by manipulation with speed changes to achieve all required movements.
For this moment it has very good results when speed is not too high, especially in slow movements (it can track very good all changes). In case of high speed 3-4+ strokes per second now it also has not so bad results.
For minimize complexity of used computer vision algorithms, also as for increase accuracy and speed for making decision, it use color markers which you will need to place on Hismith (more details below)

What is required for its work

You will need:
Hismith with remote control support + Web Camera + backlight (Ring Light as very good solution) + PC + Add color markers to Hismith (which will be tracked)

More details in the link to project

4 Likes

I see a man of culture as well, cheers for the contribution! This community is like 99% made for the Handy, which kinda sucks tbh… so seeing more people willing to create stuff for fuck machines makes me happy!

Though… i can’t help but notice that it’s all vastly more complex for kinda diminishing returns. A purely rotary drive machine like the Hismith and others in the price range will never be able to control depth to the speed and precision of servo drives or linear motors. While I appreciate the hard work and effort you went through to create this, I don’t really know how many people will have both the hardware and patience required to make this work properly.

Especially when running at higher speeds, say 3-4 hertz rotations on the machine, you will most likely need at least 60fps of image processing to get smooth position tracking results. And there’s quite a bit of extra stuff you need to procure to get it to work well as you described.

I would offer a counter-argument in the form of my own extension for OFS (which i will be also turning into a python app at some point).

It effectively does all that processing beforehand by analyzing the whole script. And it lets you modify it quickly afterwards as it is an OFS extension. Which makes it a lot safer because you will know what to expect when you eventually run it on the machine. And it requires zero additional hardware, and works with all other rotary machines. I made a nice GUI for it that allows you to make separate profiles for your machines, all it needs is a few initial measurements of the device in operation to get a pretty good linear approximation of its power-to-timing curve.

I don’t mean this in a competitive way or anything like that, i just feel the need to give people more choices in this space. Ultimately the goal is to automate as much of this work as possible so that we can spend more time fucking our brains out in sync with videos :stuck_out_tongue:

I AM SO DOWN FOR THIS! I WANT I WANT I WANT I WANT …now

1.10 version was released. It is more accurate now. Also it can automatically generate required current device statistic data for automatic control of device.

In most cases now it has very close to zero deviation from what it should be:

  • dif_end_pos:1 start_t:0:02:20:689 len:467 …
  • dif_end_pos:-6 start_t:0:02:21:156 len:434 …
  • dif_end_pos:-9 start_t:0:02:21:590 len:400 …
  • dif_end_pos:-9 start_t:0:02:21:990 len:466 …
  • dif_end_pos:3 start_t:0:02:22:456 len:467 …
  • dif_end_pos:-15 start_t:0:02:22:923 len:367 …
  • dif_end_pos:4 start_t:0:02:23:290 len:467 …
  • dif_end_pos:-15 start_t:0:02:23:757 len:300 …
  • dif_end_pos:-2 start_t:0:02:24:057 len:400 …
  • dif_end_pos:-17 start_t:0:02:24:457 len:333 …
  • dif_end_pos:-1 start_t:0:02:24:790 len:367 …
  • dif_end_pos:-19 start_t:0:02:25:157 len:367 …
  • dif_end_pos:-21 start_t:0:02:25:524 len:500 …
  • dif_end_pos:-10 start_t:0:02:26:024 len:333 …
  • dif_end_pos:-12 start_t:0:02:26:357 len:399 …
  • dif_end_pos:-3 start_t:0:02:26:756 len:402 …
  • dif_end_pos:-3 start_t:0:02:27:158 len:265 …
  • dif_end_pos:-10 start_t:0:02:27:423 len:300 …
  • dif_end_pos:-11 start_t:0:02:27:723 len:300 …
  • dif_end_pos:0 start_t:0:02:28:023 len:333 …
  • dif_end_pos:-8 start_t:0:02:28:356 len:267 …
  • dif_end_pos:-6 start_t:0:02:28:623 len:367 …
  • dif_end_pos:-6 start_t:0:02:28:990 len:300 …
  • dif_end_pos:-4 start_t:0:02:29:290 len:333 …

2.00 version was released.

Changes details:

  • Added support for “Use Modify Funscript Functions”, more details in README.md.
  • Added Check Funscript to support.
  • Added forcing device speed change and updated provided funscript parsing changes details.
  • Updated support for cases when video time was jumped forward or backward.
  • Made fixes with zero devision checks.
  • Made fixes for get hismith position.
  • Made fix when sporadically get incorrect video time from VLC.

New feature “Modify Funscript Functions”:
You can use this option for get better experience on simple moves.
In most cases funscripts use simple patterns for “in”(going inside) and “out”(going outside) moves without details how to make it (without additional points inside such moves).
In case of turn on this feature (“Use Modify Funscript Functions” CheckBox) it will automatically replace such simple moves by adding additional move detail points inside moves.
More details in link to project or in README.md file.

New feature “Check Funscript”:
Now by this feature you can check funscript file directly on “Min Funscript Relative Move” presense.
Min Funscript Relative Move - is used for modify funscript actions, if move change from up to down (or vice versa) according funscript are lover then “Min Funscript Relative Move” it will try to find the first next move with which min to max positions will be >= “Min Funscript Relative Move” if such found it will combine from min to max all actions with averaging values in move. For more details which actions was averaged you can see in “res_data!results_for_get_parsed_funscript_data.txt”
Also program save result parsed funscript to “res_data” folder with same name as original file used.

To minimize risks I have initially set “Hismith Speed Limit” to 50 (50%) by default, but you will get less good experience in this case.
You can simply play video with turned on program for check how it work or use OpenFunscripter GitHub - OpenFunscripter/OFS: A tool to create funscripts to check script on high intensity moves.
For get max good expirience but wholly on you risk it is recommended to set “Hismith Speed Limit” to 100 (100%) and try to use with turned “off” and “on” (both variants) “Use Modify Funscript Functions” CheckBox but don’t forget to check on each scene before usage

3.00 version was released.

Changes details:

  • Made fix for more accurate device start to run and better sync work with VLC.
  • Add visualization for Modify Funscript Functions.
  • Add support to define relative pairs for “Functions move in/out” (with multiple preset variants which can be switched by hotkey during run) for “Modify Funscript Functions”.
  • Add support for set hotkeys in settings file.
  • Fix issue with losing focus during messages.