MultiFunPlayer v1.31.3 - Multi axis funscript player - Now with SLR script streaming

Yah, maybe I’ll play with the limits in the firmware so I rely less on the player.

And yes, totally get this is the first iteration, and a very foundational one! I work in UX, so my brain is going wild with possibilities. One thought that may not require a ton of new actions could simply be a “profile” feature that stores limits, interpolation, linked axes, etc., and a hotkey allowing a user to swap between profiles on the fly.

Anyways, thanks again! If you ever spin up a feature/roadmap bounty system, I definitely would be a contributor!

Just saw the Github updates. <3 You’re awesome.

MultiFunPlayer v1.15.0:

Download:

  • Add support for multiple TCode versions, currently supported versions are v0.2 and v0.3. Accessed by a button on window titlebar
    2021-09-03_00-02-20
  • Add per axis sync, when adjusting one axis settings only that axis will be synced
  • Add button and shortcut actions that allow to bypass axis motion
    2021-09-03_00-04-22
  • Rework shortcut options, now allows to assign multiple actions per gesture
    2021-09-03_00-03-28
  • Improve auto home behaviour
  • Fix crash when library folder cannot be accessed on startup, for example when using network drive
  • Fix axis value gestures not working while video is playing

If you like what I’m doing, please consider supporting me on Patreon

1 Like

Wondering if MultiFunPlayer is compatible with SLR. No problems connecting to DeoVR, but can’t seem to get it to connect to SLR. Understand they’re essentially the same app, but may be using different ports?

Yea they should be almost identical. Make sure that remote server in the SLR settings is enabled, and that you enter full address (ip + port) in the DeoVR settings in MFP.

I guess that may be my problem. I can’t find which port SLR uses. I tried both of them (23554 + 13579) that are listed in their documentation, but no luck…

Hey, got a quick question about the Handy connectivity. I’ve managed to get the Handy to connect to Intiface and access it that way, using its bluetooth mode, but I found that when I did that it overloaded my dongle or something and all my devices had stuttering and jerky motions, not following the scripts. Is there a way to connect the to the Handy via its wifi mode rather than bluetooth, either through intiface or with the Player directly? I’ve done that with ScriptPlayer in the past, but even when I use the same TCP IP and port, it doesn’t connect to MultiFunPlayer.

Otherwise loving the player, leagues above ScriptPlayer in both options and stability, but the interface is a little too technical for my level of knowledge, and there aren’t many tutorials or guides out there for how to use it.

MFP is OSR only as I dont have a handy. Not sure how it connects with intiface but for sure bluetooth will be laggy.

I’ve done that with ScriptPlayer in the past, but even when I use the same TCP IP and port, it doesn’t connect to MultiFunPlayer.

Not sure what you mean, MFP is OSR only. For intiface issues I think you should ask on buttplug discord.

the interface is a little too technical for my level of knowledge

Yea, the idea was to have the player to be one window only, so you dont have to go thru multiple menus and windows to change stuff while in use. Obviously stuff was getting added and I had to keep everything minimal.

there aren’t many tutorials or guides out there for how to use it.

Well, there are none that I know of. I want to do one someday but documentation/guides are not that fun to do.

That’s a shame, since MFP looks like the best option for syncing multiple devices simultaneously. It looks like just a few adjustments would let it work; Scriptplayer has an ability to directly connect to the handy, and your own player has all the different options down below. If someone could release even a guide to how to connect the OSR through those different channels, one could use that as a reference for connecting other devices.

For now though, I’ve found that by connecting MFP to DeoVR, and using DeoVR to connect to the handy and other devices via Intiface, I can use both simultaneously without overloading my bluetooth. This does mean I can only watch stuff in my VR headset, since DeoVR doesn’t have a desktop mode, but it works for now.

How do I manually home the device? All I see is an “auto home” feature which I don’t really want. I am just messing around trying to set hotkeys but I don’t see a way to manually send the device to neutral position on a per axis, or all-axis basis?

Also, will you be adding any features to record movements and compile them into funscripts? I feel like that would be MUCH faster than using openfunscripter or whatever the case to manually go through videos painstakingly to make scripts.

This looks like great software. I’m just trying to figure it out. Massive thanks to you!

You could kinda get manual home if you set autohome delay to 0, and then add a keybind that toggles autohome on/off, but that will only work when there is no motion happening.
Other then that, there is no manual home, the homing feature was designed for when you pause the video or when the script ends.

No, this is just a script player, there are a few scripting applications that should support recording with controllers etc.

Thanks! Let me know if you have any other questions.

I love the layout of this software. One feature that I miss is the ability to select a video location from the script heatmap. Being able to do that makes it easy for me to skip gaps, or select scenes with a desired intensity - without it it’s kind of hunt and peck through the video. JoyFunPlayer allows this, but I much prefer the interface on MultiFunPlayer. If I’m missing something, apologies, I’m a multi-axis noob and still exploring the various software.

Yea, you cant do that right now, but I added it to todo on github.

MultiFunPlayer v1.16.0:

Download:

  • Add ability to seek, by clicking on the heatmap, and play/pause video, by clicking on the play/pause button (#24)
  • Add ability to customize actions (#21)
    2021-10-13_23-38-32
    • Reduced the number of actions from 900+ to 100+
    • Allows custom settings “profiles” by having different values per keybind
    • Action settings can be accessed via the wrench button
      2021-10-13_23-46-52
  • Add heatmap stroke visualzation, accesed via right clicking on the heatmap (#22)
    MultiFunPlayer_2021-10-13_23-47-49
    • Also allows modifying heatmap quality for different effect
      MultiFunPlayer_2021-10-13_23-48-22
  • Add ability to set the window to be always on top, accessed via application settings on the window title bar (#23)
    2021-10-13_23-48-54
  • Fix buttplug.io vibes not stopping under certain situations (#20)
  • Small ui tweaks

Breaking changes:

  • All previously configured actions will be reset

If you like what I’m doing, please consider supporting me on Patreon

1 Like

You rock! Thanks so much for adding this so quickly.

1 Like

Hi! I’ve made some progress on getting multiple devices to run together. Some of it was simply buying a better USB BT 5 dongle, but when I connected everything via Buttplug, I noticed that MFP was still giving jerky output, whereas Scriptplayer’s was smooth, even over bluetooth. Then I noticed the ‘Update rate’ slider under the connection settings. It seems like raising that does help make the jerky response smoother, but 60hz is nowhere near high enough for a decent smooth up/down motion.
Is there any way to set the update rate higher than 60 for the Buttplug.io connection? Every other connection type goes up to 330hz.

In scriptplayer do you connect to Handy thru buttplug/intiface or directly?

I know that buttplug has some issues with bluetooth, reported by a few users, it might be in buttplug code tho as there isnt really a way to send commands any other way than the way MFP already does. I need to test it for sure to know where the issue is coming from.

Is there any way to set the update rate higher than 60 for the Buttplug.io connection? Every other connection type goes up to 330hz.

Not exactly, minimum delay for async/task is 15ms so about 60hz. So you can only have 1-60hz, and then the next setting would be “as fast as possible”, meaning without any delay. Could be added tho.

Scriptplayer can connect directly to the handy via wifi, but for this case I was using buttplug to test and it seemed to work fine.

I imagine it was using a “as fast as possible” connection, given that the handy needs a continuous motion, so you’d want as many points as possible. I’m not sure how that works with a direct connection. You mentioned that MFP was designed for the OSR; how does it handle the stroke commands? I don’t have one myself, but have you tested it through buttplug, given that there’s an option to connect that way?

Edit: after further testing, it would appear that the handy doesn’t work quite perfectly when connected via buttplug: it doesn’t quite get all the details of the script as it would if connected directly. I imagine this is because when one connects to the handy via wifi or Handyfeeling.com, the script is downloaded onto the handys internal memory temporarily, whereas a bluetooth connection just gives it moment to moment position commands. Still, Scriptplayer does seem to have moderately high fidelity that way, so it is possible.

You mentioned that MFP was designed for the OSR; how does it handle the stroke commands? I don’t have one myself, but have you tested it through buttplug, given that there’s an option to connect that way?

I didnt test it yet, buttplug was added to MFP before it could handle TCode. But im using OSR via serial so not sure if the issue will happen, it might be only with bluetooth.

One problem with TCode in buttplug is that it only has 100 positions instead of 10000 from spec. So the motion will be less smooth.

Hey, i just wanted to ask if there is any way to make the Player use an embedded MPV Library instead of the actual .exe. Im using Jellyfin to organize my Videos and both Players (Jellyfin Media Player and Jellyfin MPV Shim) are both using the embedded one. (There is mpv.dll file, not an .exe)