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

Select the shortcut and switch from “Actions” tab to “Settings” tab and check “Handle repeating”.

1 Like

Thanks that works perfectly! I feel like I’ve just unlocked a whole new level of this player!

MultiFunPlayer v1.31.0:

Download: timed patreon only exclusive
Patreon build: https://www.patreon.com/posts/111620548

Additional patreon only changelog:

  • Add HereSphere script repository - allows loading scripts from sites that support heresphere api (library view)

Changelog:

  • Add support for updated HereSpere api - this fixes Stash/XBVR script repository not working with HereSphere
  • Add support for VLC 4 (#183)
  • Add back MatchAllUseFirst option to XBVR repository to allow matching scripts with mismatched video and script file name
    CdiSL2FiTD
  • Allow invoking button hold shortcut while holding instead only on release
    TwwTauTzdY
  • Fix slider interval when using arrow keys
  • Fix inverted Y axis in preview controls
  • Fix axis value getting set to 0 under some conditions
  • Fix keyframes heatmap range and heat not aligning to actual control width
  • Fix keyframes heatmap heat calculation ignoring steep actions
  • Differentiate between left and right shift/control/alt keyboard buttons
  • Don’t set timeout when manually connecting sources or targets
  • Encrypt api key properties when saving settings
  • Simplify plugin #r assembly reference format
  • Set custom default auto-home settings for V0-V9 vibe axes
  • Show remaining capture time when adding shortcuts
  • Disable elapsed time offload in outputs by default due to increasing number of custom TCode devices/firmwares
2 Likes

Hello everyone,

Does MFP still support oscillating devices?

Weird issue here, Intiface connects to Hismith tabletop 2.0 well, (then multifunplayers connects to Intiface without any problem, at this point intifaces says MFP is connected, and in connected device tab I see the Hismith and can control is with the oscillating parameter, but in MFP, in buttplug tab, it doesn’t find the HISMITH (scanning and scanning again).

I’ve tried also with intiface mobile app, and MFP, same problem.

Maybe device recognition problem in MFP? Just bought the machine never tried with older versions.

Edit: it was indeed seeing the machine, the app works perfectly, I had to expand the buttplug window using the arrow … thank to Yoooi and BlackSphereFollower for troubleshooting my kinda dumb user error, I leave the post if someone has the same problem.

1 Like

Hey everyone,

I don’t know if this is an issue with VLC 3.0.20 or with MFP v1.30.2.

Currently I am using an SR6 with MFP and VLC for my funscript enjoyment. Connection works fine generally speaking, except:

Every video I have to adjust the Offset for the scripts over time. Meaning: at 00:00 it is enough to have 0.2s delay or 0.1s delay depending on the script. But after 30 seconds or so I have to increase the delay by atleast 0.2s to 0.4s so it matches the movement or the audio. Doesn’t actually matter if the script is actionbased or audiobased.

Settingswise for the SR6 I have these settings for the connection in MFP:
image

I tried to play around with those settings and thought maybe the switch for “Offload elapsed time” was the issue, but it still keeps happening, regardless of the settings I use for the connection. Seems to me it is an issue with MFP as VLC should probably not be the issue here, I think?

If someone could explain this issue or have a solution it would be greatly appreciated. I didn’t test other players for now, so if it is an issue with VLC I would switch, but generally I like VLC.

This was just discussed a few posts above, for some reason VLC3 api time is drifting over time. You can even see it when you look at the current video position in VLC interface that its not updating evenly. Its not MFP issue but I might try some tricks to make the time more consistent.

v1.31.0 added support for VLC4 which is perfectly synced.

2 Likes

Sry that I didnt read above. Thank you Yoooi.

1 Like

Hi !

Has anyone managed to get MFP working with Bottles?
I am getting this message: The application to execute does not exist: ‘Z:\run\user\1000\doc\9cb4145b\MultiFunPlayer.dll’

Thanks for your help :wink:

The problem is that VLC reports the media length rounded to the nearest second, and the progress in the file as a float between 0-1. Therefore, the best possible error when using the VLC API is 0.5 seconds and this error is most noticeable towards the end of the file.

In Restim, I fixed this by querying the local filesystem for the actual length of the file.

Ok, I can get MFP running on linux with Bottles, but no serial port…Any idea ?

Yes, but I also think the progress is not updating smoothly.

I don’t want to read the file in MFP so there is no real fix for this.

Serial port detection depends on wmi which is windows only. You can check the logs and it will show an error that its not implemented iirc.
A lot of versions ago MFP used to just use SeriaPort.GetPortNames() which would probably work in bottles.
I think your only solution is to use UDP.

Is MFP Supposed to work with Stash out of the box?

I want to be able to Launch Stash on Google chrome → Play a scene → Have MFP follow along with the scene playing in chrome. But playing a video doesn’t seem to load anything on MFP. I can’t find any resources on how the connection is supposed to work, but I guess It’s supposed to work, otherwise it’d weird to have stash as an option if it wouldn’t be able to do that? (What would be the benefit in having it as a script repo etc)

I’m a software eng, feel like I should be able to debug/figure things out. Just need a nudge in the right direction, how is it supposed to work?

Thanks for creating the software - I’ve subbed to patreon to support :slight_smile:

1 Like

Since stash is not a video player it can only work as a script repository, meaning when a file hosted by stash is played in one of the supported video players, MFP detects the url format and is able to query the stash api for the script.

To do what you want the browser video player would have to send playback data to MFP. I think there is a browser extension that does that, but I dont want to add support for 3rd party solutions.

I think there also is an extension that allows you to launch videos in mpv/vlc directly from stash web ui, so you would have to do that.

Yoooi what about fillers others mention its possible in other players. Any plans for that?

I’m trying to use a shortcut key to temporarily move the L0 axis to the bottom end.

I want to bypass the script with the down arrow key and move to the bottom end, and resume the script with the right arrow key, but when I press the down arrow, it stops at the 50% position. After that, it moves to the bottom end when the video stops or the next script is loaded from the playlist.

When it’s stopped at 50%, the bar in the AXIS VALUES ​​column is dark, and when it moves to the bottom end it changes to lighter.

Maybe I have the shortcut settings wrong?
I would like to know how to solve this problem.
The current shortcuts are as follows.

Down Arrow:
Axis::SpeedLimitEnable::Set [L0, True]
Axis::Value::Set [L0, 0%, 3.00s]
Axis::Bypass::MotionProvider::Set [L0, True]
Axis::Bypass::Script::Set [L0, True]

Down Arrow (I also tried this order):
Axis::SpeedLimitEnable::Set [L0, True]
Axis::Bypass::MotionProvider::Set [L0, True]
Axis::Bypass::Script::Set [L0, True]
Axis::Value::Set [L0, 0%, 3.00s]

Right Arrow:
Axis::SpeedLimitEnable::Set [L0, False]
Axis::Bypass::All::Set [L0, False]

The MFP version is 1.30.2, running on a Win11 VM.

Not sure what you mean by fillers, gap fill is already a thing in motion providers if thats what you mean.

So due to the complexity of having script + motion provider + manual transition working at the same time, manual transitions (like Axis::Value::Set) require no script and no motion provider to be running on the axis. I have this issue added on todo but don’t know how to handle that yet.

But it seems like I forgot to take into account bypass settings, so that will be fixed in v1.31.1.

Actions I used after the fix:

Axis::Bypass::Script::Set [L0, True]
Axis::Bypass::MotionProvider::Set [L0, True]
Axis::AutoHomeEnabled::Set [L0, False]
Axis::Value::Set [L0, 0%, 3.00s]
Axis::Sync [L0]
Axis::Bypass::All::Set [L0, False]
Axis::AutoHomeEnabled::Set [L0, True]

You can also make this a toggle using one button.
For example using Button Click shortcuts, first one with Click count set to 1, second set to 2. So one click to enable, double click to disable.
Or you could use Shortcut::Enabled::Set action and have two shortcuts on same button release, each shortcut has actions to disable self and enable the other shortcut.

2 Likes

I understand. I will wait for the update.
The one-button solution is also very helpful. Thank you.

Not sure if this has been mentioned before but I’ve been trying have a potential feature that I feel like shouldn’t be too difficult, but I could be wrong. Maybe a plugin could be created and I could try to attempt to help but C# isn’t my strong suit.

Basically, I’d like a way to place a single bookmark at a certain timestamp in a video. Then, by a certain time offset prior to that bookmark (ex: 1 min), it will then play a random playlist of audio files (which could be played by MPC or VLC) until it reaches the bookmark timestamp.

This is essentially a JOI thing for a cum countdown.

I feel like that is very specific feature so I would probably not add that to MFP, it also means connecting to two video players at the same time which is not supported by MFP and would require internal changes, so its not easy to add.
But it should be doable by MFP plugin or some other software.

MultiFunPlayer v1.31.1:

Download: timed patreon only exclusive
Patreon build: https://www.patreon.com/posts/111620548

1.31.1

  • Fix VLC 3 time drift by recalculating media duration on each update (#184) - on seek from MultiFunPlayer (like auto-skip) the duration gets updated to the exact value
  • Fix Emby and Jellyfin source not working (#187)
  • Fix speed limit offset actions not allowing negative values (#186)
  • Fix unit conversion in speed limit SecondsPerUnit offset action (#186)
  • Fix path plugin references not loading the assembly (#185)
  • Fix plugin settings saving only after they finish executing (#188)
  • Fix output target and media source logger names

1.31.0

Additional patreon only changelog:

  • Add HereSphere script repository - allows loading scripts from sites that support heresphere api (library view)

Changelog:

  • Add support for updated HereSpere api - this fixes Stash/XBVR script repository not working with HereSphere
  • Add support for VLC 4 (#183)
  • Add back MatchAllUseFirst option to XBVR repository to allow matching scripts with mismatched video and script file name
    CdiSL2FiTD
  • Allow invoking button hold shortcut while holding instead only on release
    TwwTauTzdY
  • Fix slider interval when using arrow keys
  • Fix inverted Y axis in preview controls
  • Fix axis value getting set to 0 under some conditions
  • Fix keyframes heatmap range and heat not aligning to actual control width
  • Fix keyframes heatmap heat calculation ignoring steep actions
  • Differentiate between left and right shift/control/alt keyboard buttons
  • Don’t set timeout when manually connecting sources or targets
  • Encrypt api key properties when saving settings
  • Simplify plugin #r assembly reference format
  • Set custom default auto-home settings for V0-V9 vibe axes
  • Show remaining capture time when adding shortcuts
  • Disable elapsed time offload in outputs by default due to increasing number of custom TCode devices/firmwares